我有一个CC2540 BLE套件,我想在我的智能手机应用程序中查看该套件的电池电量。我已经编写了代码,它从工具包中获取电池电量。在这种情况下,电池电量称为BodySensor:
首先,我将介绍套件的电池维修部件的特征值。因此,我将Service和特征UUID用于电池服务:
public void getBodySensorLoc(BluetoothDevice device)
{
Log.i(TAG, "getBodySensorLoc");
BluetoothGattService mHRP = mBluetoothGatt.getService(device, HRP_SERVICE);
if (mHRP == null)
{
Log.e(TAG, "getBodySensorLoc: mHRP = null");
return;
}
BluetoothGattCharacteristic mBSLcharac = mHRP.getCharacteristic(BODY_SENSOR_LOCATION);
if (mBSLcharac == null) {
Log.e(TAG, "getBodySensorLoc: mBSLcharac = null");
return;
}
mBluetoothGatt.readCharacteristic(mBSLcharac);
}我的目的是在按下应用程序中的按钮时读取电池电量。所以我在我的Activity类中实现了这个按钮:
((Button) findViewById(R.id.btn_BSL)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
mService.getBodySensorLoc(mDevice);
}
});此套件将自动将电池电量发送回智能手机。因此,我将在代码中将重点放在BluetoothGattCallback部件的onCharacteristicRead方法上:
private BluetoothGattCallback mGattCallbacks = new BluetoothGattCallback()
{
public void onCharacteristicRead(BluetoothGattCharacteristic charac, int status)
{
UUID charUuid = charac.getUuid();
Bundle mBundle = new Bundle();
Message msg = Message.obtain(mActivityHandler, HRP_VALUE_MSG);
Log.i(TAG, "onCharacteristicRead");
if (charUuid.equals(BODY_SENSOR_LOCATION))
mBundle.putByteArray(BSL_VALUE, charac.getValue());
msg.setData(mBundle);
msg.sendToTarget();
}
};我希望应用程序在文本视图中显示接收到的电池电量。该套件将电池电量作为整数发送,因此如果电池电量为70%,则发送"70“。该代码在Activity类中包含一个处理程序:
private Handler mHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
switch (msg.what)
{
case HRPService.HRP_VALUE_MSG:
Log.d(TAG, "mHandler.HRP_VALUE_MSG");
Bundle data1 = msg.getData();
final byte[] bslval = data1.getByteArray(HRPService.BSL_VALUE);
runOnUiThread(new Runnable()
{
public void run()
{
if (bslval != null)
{
try {
Log.i(TAG, "BYTE BSL VAL =" + bslval[0]);
TextView bsltv = (TextView) findViewById(R.id.BodySensorLocation);
bsltv.setText("\t" + mContext.getString(R.string.BodySensorLocation)
+ getBodySensorLocation(bslval[0]));
} catch (Exception e)
{
Log.e(TAG, e.toString());
}
}
}
});
default:
super.handleMessage(msg);
}
}
};问题是,当我将智能手机与工具包连接后,当我在应用程序中按下这个按钮时,文本视图不会显示任何内容。谁能告诉我,问题出在哪里?
提前感谢
发布于 2013-08-25 12:54:43
不确定你到底有什么工具包。不确定它们是否都有电池电量测量硬件。也许这就是原因。
https://stackoverflow.com/questions/18281190
复制相似问题