蓝牙

本文深入解析蓝牙技术,涵盖蓝牙权限配置、设备搜索、已配对设备显示及数据传输过程。通过代码示例,详细介绍了如何在Android系统中实现蓝牙功能,包括开启、关闭蓝牙,搜索附近蓝牙设备,以及蓝牙设备间的数据传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

蓝牙技术

是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换,我们主要掌握这几项技能:

权限

   <!-- 用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 用于访问GPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH"/>
        bluetoothManager=(BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
        adapter= bluetoothManager.getAdapter()

打开

  Intent intent = new Intent();
                intent.setAction(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                intent.getSerializableExtra(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
                intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,120);
                startActivityForResult(intent,100);

关闭

 adapter.disable();

搜索附近蓝牙设备

要用广播

//广播
class MyRecevier extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(BluetoothDevice.ACTION_FOUND)){
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            scanlist.add(device);
            scanadpater.notifyDataSetChanged();
        }
    }
}
//绑定广播
  IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(BluetoothDevice.ACTION_FOUND);
        myRecevier= new MyRecevier();
        registerReceiver(myRecevier,intentFilter);
        
             adapter.startDiscovery();
```
# 显示已经配对的设备
```@
  bondelist.clear();
                Set<BluetoothDevice> bondedDevices = adapter.getBondedDevices();
                for (BluetoothDevice bondedDevice : bondedDevices) {
                    bondelist.add(bondedDevice);
                }
                bondeadpater.notifyDataSetChanged();
```
# 连接加传递数据
服务端 接受消息
```@
public class BlueToothReceiveThread extends Thread{
    private BluetoothSocket serverSocket;
    private Handler handler;

    public BlueToothReceiveThread(BluetoothSocket serverSocket, Handler handler) {
        this.serverSocket = serverSocket;
        this.handler = handler;
    }

    @Override
    public void run() {
        super.run();
        try {
            InputStream inputStream = serverSocket.getInputStream();
            byte[] bytes = new byte[1024];
            int read = inputStream.read(bytes);
            String s = new String(bytes, 0, read);
            Message message = Message.obtain();
            message.what=102;
            message.obj=s;
            handler.sendMessage(message);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

```
客户端 (本机) 发送消息
```@
public class BlueToothSendThread extends Thread{
    private static final String TAG = "BlueToothSendThread";
    private BluetoothSocket socket;
    private String message;

    public BlueToothSendThread(BluetoothSocket socket, String message) {
        this.socket = socket;
        this.message = message;
    }

    @Override
    public void run() {
        super.run();
        try {
            socket.connect();
            if(socket.isConnected()){
                OutputStream outputStream = socket.getOutputStream();
                outputStream.write(message.getBytes());
                Log.i(TAG, "run: "+"发送成功");
            }else {
                Log.i(TAG, "run: "+"连接失败");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

```

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值