2

Bluetooth LE デバイスを使ったプログラミングを学習し、簡単なモバイル アプリを作成しています。ここに私の初心者レベルの質問があります:

特定のタイプの Bluetooth LE デバイス (血圧デバイスなど) にのみ接続したいが、範囲内に他の Bluetooth LE デバイスが存在する場合、スキャンを実行すると複数の結果が返される可能性があるとします。したがって、次の結果が得られる可能性があります。

デバイス 1 RSSI、デバイス 1 名、デバイス 1 アドレス。

デバイス 2 RSSI、デバイス 2 名、デバイス 2 アドレス ...

必要なデバイスの種類 (この場合は血圧デバイス) を取得するようにコードに指示するにはどうすればよいですか? デバイス アドレスは製品のベンダーによって割り当てられますか? それらは十分に一意であり、このタイプのデバイスを識別するために使用できるスキームに従っていますか? そうでない場合、アプリが特定の種類の Bluetooth デバイスを自動的に認識できるようにするには、他にどのようなオプションがありますか?

4

3 に答える 3

2

特定のデバイスを取得したい場合は、displayGattServices で言及する必要があります。例:-このように言及した心拍センサーデバイスを使用する場合

 if (SampleGattAttributes.lookup(uuid, unknownCharaString)
                        .contains("Heart")) {
                    hrt_rate_char = gattCharacteristic;
                }

詳細については、displayGattServices メソッドを参照してください。

private void displayGattServices(List<BluetoothGattService> gattServices) {
        if (gattServices == null)
            return;
        String uuid = null;
        String unknownServiceString = getResources().getString(
                R.string.unknown_service);

        String unknownCharaString = getResources().getString(
                R.string.unknown_characteristic);

        ArrayList<HashMap<String, String>> gattServiceData = new ArrayList<HashMap<String, String>>();

        ArrayList<ArrayList<HashMap<String, String>>> gattCharacteristicData = new ArrayList<ArrayList<HashMap<String, String>>>();

        mGattCharacteristics = new ArrayList<ArrayList<BluetoothGattCharacteristic>>();

        for (BluetoothGattService gattService : gattServices) {
            HashMap<String, String> currentServiceData = new HashMap<String, String>();

            uuid = gattService.getUuid().toString();
            currentServiceData.put(LIST_NAME,
                    SampleGattAttributes.lookup(uuid, unknownServiceString));

            currentServiceData.put(LIST_UUID, uuid);
            gattServiceData.add(currentServiceData);

            ArrayList<HashMap<String, String>> gattCharacteristicGroupData = new ArrayList<HashMap<String, String>>();
            List<BluetoothGattCharacteristic> gattCharacteristics = gattService
                    .getCharacteristics();

            ArrayList<BluetoothGattCharacteristic> charas = new ArrayList<BluetoothGattCharacteristic>();

            for (BluetoothGattCharacteristic gattCharacteristic : gattCharacteristics) {
                charas.add(gattCharacteristic);

                HashMap<String, String> currentCharaData = new HashMap<String, String>();

                uuid = gattCharacteristic.getUuid().toString();
                if (SampleGattAttributes.lookup(uuid, unknownCharaString)
                        .contains("Heart")) {
                    hrt_rate_char = gattCharacteristic;
                }
                currentCharaData.put(LIST_NAME,
                        SampleGattAttributes.lookup(uuid, unknownCharaString));

                currentCharaData.put(LIST_UUID, uuid);
                gattCharacteristicGroupData.add(currentCharaData);

            }
            mGattCharacteristics.add(charas);

            gattCharacteristicData.add(gattCharacteristicGroupData);

        }
    }
于 2015-04-22T14:24:34.173 に答える