2016-08-28 15 views
2

スキャナのコールバック用のコードです。AndroidのscanLeCallbackがNull BluetoothDeviceを返す

private BluetoothAdapter.LeScanCallback mLeScanCallback = 
    new BluetoothAdapter.LeScanCallback() { 
     @Override 
     public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        if (device == null) { 
         return; 
        } 
        if (!device.getName().startsWith("DEVICE_NAME")) { 
         System.out.println("Did not start with DEVICE_NAME, removing: " + device.getName()); 
         return; 
        } 
        if (!devices.contains(device)) { 
         System.out.println("Valid DEVICE_NAME Adding: " + device.getName()); 
         devices.add(device); 
        } 
       } 
      }); 
     } 
    }; 

特定の地理的な場所でスキャンすると、null BluetoothDeviceオブジェクトが取得されています。たとえば、私の家や仕事場の中で完璧に動作します。

しかし、私のハードウェア+電話を空港や大きなマリオットのホテルに持っていくと、それが壊れてしまって、私にヌルBluetoothDeviceが返されます。

ヌルデバイスとはどういう意味ですか、これを修正するにはどうしたらいいですか?

アドバイスをいただければ幸いです。

よろしく

答えて

1

私は 特定の地理的位置内をスキャンするとき、私はヌルBluetoothDeviceオブジェクトを取得しています。

これは、同じBLEデバイスを使用している場合には発生しません。仕事場や自宅では、周辺のBLEデバイスがテスト目的で同じであることを確認してください。

ヌルデバイスが

見つかりませ機器などの簡単な

を何を意味します。しかし参考のために私はちょうどdevelopers guideから引用しています。

[Bluetooth]で説明されているように、Bluetooth LEデバイスをスキャンするか、Classic Bluetoothデバイスのみをスキャンできます。同時に Bluetooth LEとクラシックデバイスの両方をスキャンすることはできません。

私はここで私の経験の一部を共有したいと思います。近くのデバイスをスキャンすると、一部のBluetoothデバイスが検出可能である必要があります。あなたもそれを念頭に置いておく必要があります。

これが役立つかどうか教えてください。

+1

私はそれに純粋なB​​LEチップを持っているカスタムハードウェアを持っています、それは古典的なことはできません。 私の家で使用したのと同じデバイス/問題なく動作します。 そして、スキャンコールバックが私にヌルデバイスを与えています。つまり、操作を実行するとヌルポイント例外が発生します。 scanLeCallbackがトリガーさえしてはならないデバイスが見つからない場合、なぜ私にヌルデバイスを与えますか? 開発者ガイドでは、ヌルチェックさえしていないので、その時点で見つかったすべてのデバイスがnullではないとみなします。 –

+1

興味深いですね。あなたはこの答えを見ていただけますか? http://stackoverflow.com/a/26361694/3145960 –

+0

彼のBluetoothDeviceがヌルではないため、彼の問題は少し違って見えますが、デバイスの名前だけがヌルです。 しかし、私はAdvertisedData配列をまだ見ていないので、私はそこに私が何が見つかるか見てみるでしょう。 報告しますが、空であると仮定して何を提案しますか? –

関連する問題