android蓝牙的使用

来源:互联网 发布:js将集合转换为数组 编辑:程序博客网 时间:2024/05/16 10:37
android蓝牙的使用


1、初始化蓝牙:<span style="white-space:pre"></span>// 获取手机的蓝牙管理器BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();<span style="white-space:pre"></span>// 开启蓝牙(起到打开机器蓝牙的作用)mBluetoothAdapter.enable();2、对蓝牙进行监听(以下是代码动态注册广播接收者,使用对蓝牙状态的监听)IntentFilter filter = new IntentFilter();// 开始扫描的广播filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);// 扫描完成的广播filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);// 发现一个可用的设备的广播filter.addAction(BluetoothDevice.ACTION_FOUND);BluetoothReceiver mBluetoothReceiver = new BluetoothReceiver();// 这是广播接收者的子类// 注册监听registerReceiver(mBluetoothReceiver, filter);3、对蓝牙的控制// 扫描发现蓝牙设备mBluetoothAdapter.startDiscovery();// 停止蓝牙扫描mBluetoothAdapter.cancelDiscovery();4、销毁蓝牙监听:@Overrideprotected void onDestroy() {unregisterReceiver(mBluetoothReceiver);mBluetoothReceiver = null;super.onDestroy();}收下是广播接收者接收到蓝牙广播后的具体操作:private class BluetoothReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {Toast.makeText(context, "开始扫描蓝牙设备", 0).show();} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {Toast.makeText(context, "扫描蓝牙设备完成", 0).show();} else if (BluetoothDevice.ACTION_FOUND.equals(action)) {System.out.println("发现了蓝牙设备");// 从intent中获取BluetoothDevice对象final BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);System.out.println(device.getName() + "\n"+ device.getAddress());TextView tv = new TextView(context);tv.setText(device.getName() + "--" + device.getAddress());tv.setTextSize(25);tv.setTag(device);tv.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 连接蓝牙设备try {mSocket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"));// 连接指令mSocket.connect();// 注意这条加上代码,否则蓝牙无法建立连接mOs = mSocket.getOutputStream();try {System.out.println("发送指令完毕");mOs.write(0xA1);// 帧头mOs.write(0xFD);// 帧头mOs.write(0x01);// 端口mOs.write(0x00);// 状态mOs.write(0xDF);// 帧尾mOs.flush();System.out.println("发送指令完毕");} catch (IOException e) {e.printStackTrace();}} catch (IOException e) {e.printStackTrace();}}});ll_container.addView(tv);// 这里一般是把textView用listView显示出来}}}


0 0
原创粉丝点击