为了账号安全,请及时绑定邮箱和手机立即绑定

连接到在 Marshmallow 设备上工作但在 Oreo 设备上工作的蓝牙设备,为什么?

连接到在 Marshmallow 设备上工作但在 Oreo 设备上工作的蓝牙设备,为什么?

动漫人物 2022-05-25 15:44:13
我正在制作一个应用程序,它与特定的 Arduino HC06 蓝牙模块进行通信。我一直在用 Marshmallow 在我的三星 S5 Neo 上测试这个应用程序,现在当我完成大部分工作时,我想在我的主要手机上试用运行 Android Oreo 的小米红米 5。但它不起作用。我的奥利奥手机成功连接到 HC06 模块,但它无法连接。到目前为止我做了什么:我已确保我的奥利奥手机和 HC06 模块已配对。我通过运行时添加了一些额外的权限。到目前为止,我拥有这些权限:<uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />我不明白为什么这适用于我拥有的旧手机,但不适用于新手机。我希望有人能指导我正确的方向,谢谢。这是我用来查找蓝牙并连接到蓝牙的方法void findBT() {    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    if(mBluetoothAdapter == null) {        Toast errore = makeText(MachineReady.this, "Error, enable bluetooth", Toast.LENGTH_LONG);        errore.show();    }    if(!mBluetoothAdapter.isEnabled()) {        Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);        startActivityForResult(enableBluetooth, 0);    }    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();    if(pairedDevices.size() > 0) {        for(BluetoothDevice device : pairedDevices) {            mmDevice = device;            break;        }    }    Log.e("Bluetooth", "Bluetooth device found01");    //Toast found = makeText(MachineReady.this, "Bluetooth device found", Toast.LENGTH_LONG);    //found.show();}在日志中我收到一个异常说:“无法找到或连接到蓝牙”,这是来自这个try {            findBT();            openBT();        } catch (IOException e) {            Log.e("Bluetooth", "Couldn't find or connect to bluetooth");        }
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

我找到了解决方案。


正如 ecle 所说,我查找或搜索蓝牙单元的方法无法正常工作。


我改用这个:


Set<BluetoothDevice> pairedDevices = mBluetoothAdapter

            .getBondedDevices();

    if (pairedDevices.isEmpty()) {

        Log.e("bluetooth",

                "No devices paired...");

        return ;

    }


    String MY_MAC_ADDR = getResources().getString(R.string.Bluetooth_MAC);


    for (BluetoothDevice device : pairedDevices) {

        Log.d("Bluetooth", "Device : address : " + device.getAddress() + " name :"

                + device.getName());

        if (MY_MAC_ADDR.equals(device.getAddress())) {

            mmDevice = device;

            break;

        }

    }

我现在正在寻找使用 MAC 地址的特定蓝牙设备


现在它完美地工作了。谢谢ecle指出这一点。


查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 66 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信