android蓝牙的使用

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、销毁蓝牙监听:
@Override
protected void onDestroy() {
	unregisterReceiver(mBluetoothReceiver);
	mBluetoothReceiver = null;
	super.onDestroy();
}


收下是广播接收者接收到蓝牙广播后的具体操作:
private class BluetoothReceiver extends BroadcastReceiver {
	@Override
	public 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() {

				@Override
				public 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值