写蓝牙状态改变的广播接收者
//蓝牙打开状态的广播接收
private BroadcastReceiver RECEIVER_BLUETOOTH_STATE = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,-1);
switch (state){
case BluetoothAdapter.STATE_OFF:
Toast.makeText(MainActivity.this, "蓝牙已关闭", LENGTH_SHORT).show();
break;
case BluetoothAdapter.STATE_ON:
Toast.makeText(MainActivity.this, "蓝牙已打开", LENGTH_SHORT).show();
break;
case BluetoothAdapter.STATE_TURNING_OFF:
Toast.makeText(MainActivity.this, "蓝牙正在关闭", LENGTH_SHORT).show();
break;
case BluetoothAdapter.STATE_TURNING_ON:
Toast.makeText(MainActivity.this, "蓝牙正在打开", LENGTH_SHORT).show();
break;
}
}
};
通过接受蓝牙状态改变的广播,来给用户相应的提示,形成良好的人机交互。
三、搜索并连接蓝牙设备三、搜索并连接蓝牙设备
1.搜索蓝牙设备搜索蓝牙设备
搜索蓝牙设备操作直接调用 BluetoothAdapter 的 startDiscovery 方法即可。同样的,我们可以写一个搜索蓝牙的方法,把这
个方法写在 对蓝牙操作的 类里面,方便我们去调用。
public void DiscoveryBlueTooth() {
//获取默认的蓝牙设备
mADAPTER_BLUETOOTH = BluetoothAdapter.getDefaultAdapter();
//判断是否在搜索
if (mADAPTER_BLUETOOTH.isDiscovering()) {
mADAPTER_BLUETOOTH.cancelDiscovery();
}
//开始搜索
mADAPTER_BLUETOOTH.startDiscovery();
Toast.makeText(MainActivity.this, "蓝牙设备正在搜索中", LENGTH_SHORT).show();
}
这只是开启搜索,我们搜索的结果该怎么反馈给我们呢?我们需要一个容器来存放我们刚刚搜索到的设备。
ListView 和 ListAdapter
我们在布局文件中,加入一个Listview控件,来显示我们搜索到的蓝牙设备。写好布局后,给 Listview 的 item 写一个布局样
式。
我这里只用了一个 Textview
写好了 Listview 我们需要一个东西,把搜索到的设备信息和 Listview 的内容绑定起来。这里我用的是 ArrayList ,通过
ArrayAdapter 绑定设备信息和 Listview的内容。
//ArrayAdapter声明
private ArrayAdapter mADAPTER_ARRAY;
//ArrayList定义:存放蓝牙名称和地址
private List BLUETOOTH_DEViCE = new ArrayList();
/*
*通过 ArrayAdapter 绑定 ListView控件和ArrayList里的数据
*/
//通过ArrayAdapter绑定数据
mADAPTER_ARRAY = new ArrayAdapter(this,R.layout.list_view_item,R.id.TV_BLUETOOTH_DEVICE,BLUETOOTH_DEViCE);
//给ListView使用这个 adapter
mLV_DEVICE.setAdapter(mADAPTER_ARRAY);
到这里,我们的准备工作就完成了,接下来就是把搜索到的设备信息添加进去。
接收搜索结果的广播
在接受搜索设备的广播之前,先注册搜索设备的广播,将接收者和广播绑定。
//蓝牙状态改变的广播 //注册和绑定广播接收者和广播
IntentFilter mBROADCAST_BLUETOOTH_STATE = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(RECEIVER_BLUETOOTH_STATE,mBROADCAST_BLUETOOTH_STATE);
评论10
最新资源