1

ble デバイスを使用してシンプルな Android アプリを開発しようとしています。インターネットから多くのソースコードを見つけました。ただし、どちらも使用可能な ble デバイスのリストをスキャンすることから始めました。私はデバイスのMACアドレスを持っているので、サービスと特性のUUID。既知のデバイスに接続して、特定の特性を直接読み取るにはどうすればよいですか??

4

3 に答える 3

2

デバイスのMACアドレス、サービスのUUID、特性などの詳細を持つ特定のBluetoothデバイスを接続するには、すでに知っている. これを行うには、次のような呼び出しを行う BluetoothDevice オブジェクトが必要です。

yourBluetoothDevice.connectGatt(getApplicationContext(), false, bleGattCallback);

そのため、この (yourBluetoothDevice) の場合、最初にスキャンを開始して、MAC アドレスを比較して接続する同じデバイス オブジェクトを取得する必要があります。ただし、onLeScan コールバックで同じデバイス オブジェクトを取得した場合は、スキャンを停止して同じデバイスに接続するだけです。

注:接続は UIThread (Handler、runOnUIThread、または mainlooperThread のいずれかを使用) で行う必要があります。そうしないと、一部のデバイスで「コールバックの登録に失敗しました」という問題が発生します。

ここで yourBluetoothDevice は、接続したいデバイス オブジェクト参照です。bleGattCallback は、接続ステータス、検出されたサービス、特性の読み取りと書き込みなどのために登録された新しい BluetoothGattCallback() コールバックです。

于 2016-09-16T07:07:24.100 に答える
0

createInsecureRfcommSocketToServiceRecordを見てください。このようなもの:

UUID uuid = UUID.fromString("<Your UUID>");
BluetoothSocket socket = yourBLEDevice.createInsecureRfcommSocketToServiceRecord(uuid);
Method m = yourBLEDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
socket = (BluetoothSocket) m.invoke(yourBLEDevice, 1);
于 2014-08-25T04:05:43.900 に答える