BLE写数据问题,还麻烦大神帮看一下
要根据蓝牙ble demo,修改出一个简单的蓝牙测试APP,实现写数据发指令,遇到个问题,请高手帮我解答下:
写数据方法如下
public void writeCharacteristic(String value,UUID uuid1,UUID uuid2) {
System.out.println(value+"/n"+uuid1.toString()+"/n"+uuid2.toString());
BluetoothGattService LumService = mBluetoothGatt
.getService(uuid1);
if (LumService == null) {
System.out.println("LumService null");
return;
}
BluetoothGattCharacteristic LumChar = LumService.getCharacteristic(uuid2);
if (LumChar == null) {
System.out.println("LumChar null");
return;
}
LumChar.setValue(value);
boolean status = mBluetoothGatt.writeCharacteristic(LumChar);
System.out.println("Write Status: " + status);
}
但是在调用的时候如果连接成功后写入
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_connect:
final EditText passwordEdit = new EditText(DeviceControlActivity.this);
AlertDialog.Builder builder = new Builder(DeviceControlActivity.this);
builder.setTitle("请输入");
builder.setIcon(android.R.drawable.ic_dialog_info);
builder.setView( passwordEdit);
builder.setPositiveButton("确定" , new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Passwd = passwordEdit.getText().toString();
Toast.makeText(getApplicationContext(), Passwd, Toast.LENGTH_LONG).show();
mBluetoothLeService.connect(mDeviceAddress);
mBluetoothLeService.writeCharacteristic(Passwd, uuid, uuid);
就会打印LumChar null,
但是在
private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (BluetoothLeService.ACTION_GATT_CONNECTED.equals(action)) {
mConnected = true;
updateConnectionState(R.string.connected);
invalidateOptionsMenu();
} else if (BluetoothLeService.ACTION_GATT_DISCONNECTED.equals(action)) {
mConnected = false;
updateConnectionState(R.string.disconnected);
invalidateOptionsMenu();
clearUI();
} else if (BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED.equals(action)) {
displayGattServices(mBluetoothLeService.getSupportedGattServices());
mBluetoothLeService.writeCharacteristic(Passwd, uuid, uuid2);
} else if (BluetoothLeService.ACTION_DATA_AVAILABLE.equals(action)) {
displayData(intent.getStringExtra(BluetoothLeService.EXTRA_DATA));
}
}
};
就能成功写入数据,还麻烦高手们指点一下,后续还要写数据发指令,我该怎么调用写数据的方法