读取电池电量 - Broadcom BLE堆栈和HTC 1x +

时间:2013-03-28 17:59:50

标签: android battery broadcom

我让BleFindMeClient与TI Mini Keyfob一起使用HTC 1X +。我试图稍微扩展它以读取电池电量(不注册电池更新)。我可以从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); 
}

}

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

Visit https://stackoverflow.com/questions/19539535/how-to-get-the-battery-level-after-connect-to-the-ble-device

同样的问题 使用BluetoothGattCallback 用于callBack并读取电池值