gpt4 book ai didi

java - Android 蓝牙服务发现在两个不同的设备上产生不同的结果 - 是 Android 版本吗?

转载 作者:行者123 更新时间:2023-12-01 14:36:09 27 4
gpt4 key购买 nike

运行下面的代码,我的 Galaxy 平板电脑 (SCH-I905 - Android 4.0.4) 可以正确发现 PC 上的三个蓝牙服务。在 Galaxy Nexus - Android 4.2.2 上运行相同的代码只能找到其中一项服务。任何想法都表示赞赏:

private final BroadcastReceiver ServiceReceiver = new BroadcastReceiver()
{
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
if ( BluetoothDevice.ACTION_UUID.equals(action) )
{
BluetoothDevice device = intent.getParcelableExtra("android.bluetooth.device.extra.DEVICE");
Parcelable[] uuidExtra = intent.getParcelableArrayExtra("android.bluetooth.device.extra.UUID");

for( int i = 0; i < uuidExtra.length; i++ )
{
Toast.makeText( this, device.getName() + ": " + uuidExtra[i].toString(), Toast.LENGTH_LONG).show();
}
}
}

};

在 Eclipse 调试器中,以下数组显示三个匹配项 [00001000-0000-1000-8000-00805f9b34fb、00001115-0000-1000-8000-00805f9b34fb、00001202-0000-1000-8000-0080 5f9b34fb] 对于平板电脑,但是仅 [00001115-0000-1000-8000-00805f9b34fb] 适用于 Nexus。不知道是版本问题还是硬件问题。谢谢你,约翰

最后一点 - 我正在使用... 蓝牙设备设备 = Intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); device.fetchUuidsWithSdp();

最佳答案

约翰

这似乎是 Android 版本问题。我使用与您的代码类似的 htcdesire(Android 2.3)和联想平板电脑(Android 4.2.2)得到了完全相同的结果,无论我做什么,它都无法连接。到目前为止,我通过阅读一百万篇文章发现了以下内容:

1) 确保在尝试连接之前取消适配器上的发现2)尝试使用反射,有些人声称这对他们有用3)所以尝试这样的事情

Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class});
socket = (BluetoothSocket) m.invoke(device, 1);
bluetoothAdapter.cancelDiscovery();
socket.connect();

关于java - Android 蓝牙服务发现在两个不同的设备上产生不同的结果 - 是 Android 版本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16473189/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com