android 蓝牙

来源:互联网 发布:java什么是高并发 编辑:程序博客网 时间:2024/05/12 10:13
package com.action;


import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.text.Layout;
import android.text.style.BulletSpan;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.ToggleButton;
import java.util.*;
import java.io.*;


public class MainActivity extends Activity {
private ToggleButton toggleButton;
private BluetoothAdapter bluetoothAdapter;// 定义蓝牙适配器对象
private Set<BluetoothDevice> setdv;
private Set<BluetoothDevice> setdvfound;
private Button btbindv;
private Button btscanenable;
private Button btscan;
private Intent in;

private BlutoothDeviceBroadcastReciver broadcastReciver;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


toggleButton = (ToggleButton) findViewById(R.id.main_toggleButton);
btbindv = (Button) findViewById(R.id.main_btbindlist);
btscanenable = (Button) findViewById(R.id.main_btscanenable);
btscan = (Button) findViewById(R.id.main_btscan);



// 创建意图允许使用蓝牙动作
in = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(in);

// 获取蓝牙适配器对象
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

//注册广播接收者
//创建意图过滤器,注册广播接收者
IntentFilter filter=new IntentFilter(BluetoothDevice.ACTION_FOUND);
broadcastReciver=new BlutoothDeviceBroadcastReciver();
registerReceiver(broadcastReciver, filter);
setdvfound=new HashSet<BluetoothDevice>();//创建Set集合准备设置扫描到的设备
// 打开和关闭蓝牙设备
toggleButton
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {


@Override
public void onCheckedChanged(CompoundButton arg0,
boolean arg1) {
if (arg1) {
// 判断蓝牙的状态
if (bluetoothAdapter.getState() == BluetoothAdapter.STATE_OFF) {
Toast.makeText(MainActivity.this, "蓝牙打开!", 5)
.show();
toggleButton.setTextOn("蓝牙关闭");
bluetoothAdapter.enable();
} else {
Toast.makeText(MainActivity.this, "蓝牙已经打开!", 5)
.show();
}


} else {
if (bluetoothAdapter.getState() == BluetoothAdapter.STATE_ON) {
Toast.makeText(MainActivity.this, "蓝牙关闭!", 5)
.show();
toggleButton.setTextOn("蓝牙打开");
bluetoothAdapter.disable();// 让蓝牙关闭
} else {
Toast.makeText(MainActivity.this, "蓝牙已经关闭!", 5)
.show();
}
}
}
});


// 获取已经绑定的蓝牙设备
btbindv.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View arg0) {
if (bluetoothAdapter.getState() == BluetoothAdapter.STATE_ON) {
AlertDialog.Builder ab = new Builder(MainActivity.this);
ab.create();
ab.setTitle("已绑定的蓝牙设备列表");
// 获取一绑定的蓝牙设备集合
setdv = bluetoothAdapter.getBondedDevices();
if (setdv != null && !setdv.isEmpty()) {
String[] dvnames = new String[setdv.size()];
int i = 0;
for (BluetoothDevice dv : setdv) {
dvnames[i] = dv.getName();// 获取蓝牙设备的名称
i++;
}


ArrayAdapter<String> adapter = new ArrayAdapter<String>(
MainActivity.this,
android.R.layout.simple_list_item_1, dvnames);
// lv.setAdapter(adapter);
ab.setAdapter(adapter,
new DialogInterface.OnClickListener() {


@Override
public void onClick(DialogInterface arg0,
int arg1) {


}
});


} else {
ab.setMessage("没有绑定的蓝牙设备!");
}
ab.show();
} else {
Toast.makeText(MainActivity.this, "请打开蓝牙!", 4).show();
}
}
});


// 允许手机蓝牙被扫描到
btscanenable.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View arg0) {
if (bluetoothAdapter.getState() == BluetoothAdapter.STATE_ON) {
// 设置被探索到
in = new Intent(
BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
// 设置允许探测的时间,默认120秒
in.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,
350);
startActivity(in);
}else {
Toast.makeText(MainActivity.this, "请打开蓝牙!", 4).show();
}
}
});
//开始扫描周边的蓝牙设备
btscan.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
if(bluetoothAdapter.getState() == BluetoothAdapter.STATE_ON){
bluetoothAdapter.startDiscovery();//开始扫描
AlertDialog.Builder ab = new Builder(MainActivity.this);
ab.create();
ab.setTitle("扫描的蓝牙设备");
if(setdvfound!=null&&!setdvfound.isEmpty()){
String[] dvnames = new String[setdvfound.size()];
int i = 0;
for (BluetoothDevice dv : setdvfound) {
dvnames[i] = dv.getName();// 获取蓝牙设备的名称
i++;
}

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
MainActivity.this,
android.R.layout.simple_list_item_1, dvnames);
// lv.setAdapter(adapter);
ab.setAdapter(adapter,
new DialogInterface.OnClickListener() {


@Override
public void onClick(DialogInterface arg0,
int arg1) {


}
});


}else{
ab.setMessage("没有用设备找到!");
}
ab.show();
}else {
Toast.makeText(MainActivity.this, "请打开蓝牙!", 4).show();
}
}
});
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

/**
* 编写广播接收者内部类
* 用于接收扫描到的蓝牙设备
* */
class BlutoothDeviceBroadcastReciver extends BroadcastReceiver{


@Override
public void onReceive(Context context, Intent intent) {
//判断是否是蓝牙设备查找的动作
if(intent.getAction().equals(BluetoothDevice.ACTION_FOUND)){

//获取已经搜索到的蓝牙设备
BluetoothDevice bdv=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
setdvfound.add(bdv);

System.out.println(bdv.getName());

}
}

}
@Override
protected void onDestroy() {
super.onDestroy();
//解除注册广播
unregisterReceiver(broadcastReciver);

}
}
0 0
原创粉丝点击