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

标签 java android bluetooth service-discovery

运行下面的代码,我的 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/

相关文章:

javascript - 在没有互联网连接的情况下,WebRTC 是否支持点对点连接?

java - 该处理程序可能是静态的,或者蓝牙处理程序可能会发生泄漏

java - 数据库连接池大小决策背后的思考

java - 如何使用正则表达式并将结果分配给 Android 中的变量?

java - 共享元素转换 Activity

java - 用于完成点击次数共享首选项的语法

java - WebdriverIO 与 Selenium Webdriver(Java 方法)

java - 使用elasticsearch读取简单的日志文件

android - Phonegap 如何在 Android 应用程序中下载和打开 pdf 文件

java - 通过蓝牙将对象从 java 应用程序发送到 Android 应用程序?