0

HTC 1X+ で BleFindMeClient を TI Mini Keyfob と組み合わせて使用​​しています。バッテリーレベルを読み取るために少し拡張しようとしています(バッテリーの更新に登録しません)。BTool から実行できますが、Android プログラムが失敗し、デバッグ メッセージが表示されます。

getCharacteristic - サービス データが見つかりません

これは何を意味するのでしょうか?また、このメッセージやその他のエラー メッセージの意味はどこで確認できますか?

アラームを設定できるので、特徴をはっきりと書くことができます。しかし、読み取り特性について把握していないかなり基本的なものがありますが、サンプルコードが見つかりません。

誰かが私にもっと良いコードフラグメントを投げてくれませんか?

public class BatteryProfileClient extends BleClientProfile {

private static String TAG = "BatteryProfileClient";
static public BleGattID myUuid = new BleGattID("0000180f-0000-1000-8000-00805f9b34fb");
private static final BleGattID BATTERY_CHARACTERISTIC = new BleGattID("00002a19-0000-1000-8000-00805f9b34fb");

private BatteryServiceClient mBatteryServiceClient = new BatteryServiceClient();

public BatteryProfileClient(Context context) {
    super(context, myUuid);

    Log.d(TAG, "Instantiated");

    ArrayList<BleClientService> services = new ArrayList<BleClientService>();
    services.add(mBatteryServiceClient);

    init(services, null);
}


public void batt(BluetoothDevice device) {
    BleCharacteristic battLevelCharacteristic = mBatteryServiceClient.getCharacteristic(device, BATTERY_CHARACTERISTIC);
    byte b[] = battLevelCharacteristic.getValue();
    Log.d(TAG, "battery " + b); 
}

}

4

2 に答える 2

0

遅れているかどうかはわかりませんが、それで問題は解決するはずです-

public int getbattery(BluetoothGatt mBluetoothGatt) {

    BluetoothGattService batteryService = mBluetoothGatt
            .getService(BATTERY_SERVICE_UUID);
    if (batteryService == null) {
        Log.d(TAG, "Battery service not found!");
        return 0;
    }

    BluetoothGattCharacteristic batteryLevel = batteryService
            .getCharacteristic(BATTERY_LEVEL_UUID);
    if (batteryLevel == null) {
        Log.d(TAG, "Battery level not found!");
        return 0;
    }
    mBluetoothGatt.readCharacteristic(batteryLevel);
    return batteryLevel.getIntValue(BluetoothGattCharacteristic.FORMAT_SINT8, 0);
}
于 2014-02-18T23:17:36.417 に答える