簡體   English   中英

Android藍牙服務發現在兩種不同的設備上產生不同的結果-是Android版本嗎?

[英]Android Bluetooth Service discovery yields different results on two different devices - is it Android Version?

運行以下代碼,我的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-00805f9b34fb],但只有[00001115 -0000-1000-8000-00805f9b34fb]。 我不知道這是版本還是硬件問題。 謝謝約翰

最后一點-我正在使用... BluetoothDevice設備= intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); device.fetchUuidsWithSdp();

約翰

這似乎是Android版本的問題。 使用htc欲望(Android 2.3)和與您的代碼相似的代碼,以及無論我做什么都無法連接的lenovo平板電腦(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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM