スキャナのコールバック用のコードです。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
が返されます。
ヌルデバイスとはどういう意味ですか、これを修正するにはどうしたらいいですか?
アドバイスをいただければ幸いです。
よろしく
私はそれに純粋なBLEチップを持っているカスタムハードウェアを持っています、それは古典的なことはできません。 私の家で使用したのと同じデバイス/問題なく動作します。 そして、スキャンコールバックが私にヌルデバイスを与えています。つまり、操作を実行するとヌルポイント例外が発生します。 scanLeCallbackがトリガーさえしてはならないデバイスが見つからない場合、なぜ私にヌルデバイスを与えますか? 開発者ガイドでは、ヌルチェックさえしていないので、その時点で見つかったすべてのデバイスがnullではないとみなします。 –
興味深いですね。あなたはこの答えを見ていただけますか? http://stackoverflow.com/a/26361694/3145960 –
彼のBluetoothDeviceがヌルではないため、彼の問題は少し違って見えますが、デバイスの名前だけがヌルです。 しかし、私はAdvertisedData配列をまだ見ていないので、私はそこに私が何が見つかるか見てみるでしょう。 報告しますが、空であると仮定して何を提案しますか? –