当前位置: 首页 > 知识库问答 >
问题:

如何在android上获取已连接蓝牙设备的名称

曹奇文
2023-03-14

我正在尝试获取连接到运行Android Oreo的Android手机的设备的名称。

过去两天我一直在寻找答案,但没有一个奏效。建议主要返回io异常-读取-失败-套接字-可能-关闭-蓝牙错误

问题是,有没有办法进行查询以返回连接的蓝牙设备?

这些是不起作用的链接和建议:

  • IOException:读取失败,套接字可能关闭-Android 4.3上的蓝牙
  • 在Android中,如何获取已连接蓝牙设备的配置文件
  • 列出已连接的蓝牙设备

我可以获得有关设备的信息,这是以前配对并试图使连接或设备试图配对到该设备。我想要的是名称或连接状态的当前配对和连接的设备。

共有2个答案

东郭凯捷
2023-03-14

你试过这个吗?

BluetoothServerSocket bluetoothServerSocket = bluetoothAdapter.listenUsingRfcommWithServiceRecord("abc", uuid);          
BluetoothSocket bluetoothSocket = bluetoothServerSocket.accept();
BluetoothDevice device = bluetoothSocket.getRemoteDevice();
String deviceName = device.getName();
顾超
2023-03-14

答案如下:

String name;
String address;
String threadName;
public void checkConnected()
{

       BluetoothAdapter.getDefaultAdapter().getProfileProxy(this, serviceListener, BluetoothProfile.HEADSET);
}

private BluetoothProfile.ServiceListener serviceListener = new BluetoothProfile.ServiceListener()
{
    @Override
    public void onServiceDisconnected(int profile)
    {

    }

    @Override
    public void onServiceConnected(int profile, BluetoothProfile proxy)
    {

        for (BluetoothDevice device : proxy.getConnectedDevices())
        {
            name = device.getName();
            address = device.getAddress();
            threadName = Thread.currentThread().getName();
            Toast.makeText(MainActivity.this, name+" " + address+ threadName,  Toast.LENGTH_SHORT).show();
            txtName.setText(name + " " + address);
            Log.i("onServiceConnected", "|" + device.getName() + " | " + device.getAddress() + " | " + proxy.getConnectionState(device) + "(connected = "
                    + BluetoothProfile.STATE_CONNECTED + ")");
        }

        BluetoothAdapter.getDefaultAdapter().closeProfileProxy(profile, proxy);
    }
};
 类似资料:
  • 我是低功耗蓝牙 (LE) API 的新手。有没有办法检查Android设备当前是否连接到任何蓝牙LE设备,并可能获得这些设备的列表? BT-LE设备真的“连接”了吗?我注意到当我的智能手表与我的Nexus 5配对/连接时,状态栏(在KitKat上)中的蓝牙图标不会像连接到经典蓝牙设备时那样变成白色/粗体。 我在经典设备上使用了下面的代码。看起来我可以用相同的方式检查GATT和GATT_SERVER

  • 我想让我的android应用程序检测蓝牙耳机(通过名称或mac地址)是否已连接,然后根据它是否已连接运行代码。问题是我在如何获取当前连接的蓝牙耳机的名称/mac地址方面一直碰壁。 下面的代码只是给出了Android设备的主机名: 当我使用“getBondedDevices()”时,它通常只给我手机配对的设备,而不是现在连接的设备。换句话说,它提供了之前配对设备的列表,但没有提供实际连接的设备。 我

  • 在这里找到了很多答案之后,我能够在的帮助下构建连接的蓝牙设备列表。现在我的问题是如何知道哪个设备支持哪个配置文件。我希望能够根据配置文件选择设备,例如,获取当前连接的设备及其配置文件的列表,然后选择其中一个。如果我有BluetoothDevice的实例,我看不出如何获得此类信息。 本页中有一些代码说明了如何使用蓝牙耳机模式:http://developer.android.com/guide/to

  • 我如何获得Android所有已连接蓝牙设备的列表,而不考虑配置文件? 或者,我看到您可以通过BluetoothManager获取特定配置文件的所有连接设备。获取连接的设备。 我想我可以通过ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED监听连接/断开来查看哪些设备连接...似乎容易出错。 但我想知道是否有更简单的方法来获取所有已连接蓝牙设备的列表。

  • 连接设备 接口说明 用于连接 扫描出来的蓝牙设备。 参数说明 字段 类型 必须? 说明 device RKBLEDevice 是 蓝牙设备 示例代码 Swift: RokidMobileSDK.binder.connect(device: RKBLEDevice) Objc: [RokidMobileSDK.binder connect:device]; 断开设备 接口说明 用于断开已经连接的

  • 连接蓝牙设备 接口说明 接口需传入蓝牙名称(蓝牙address重启后会变) 参数说明 字段 类型 必须? 说明 name String 是 设备名称 举个大栗子 RokidMobileSDK.binder.connectBT(name, new IBTConnectCallBack() { @Override public void onConnectSucceed(BTDevic