问题描述
我在RaspBerry Pi上运行BLE外围设备,并且正在尝试通过Android与之通信。
目标是读取特征,该特征应该触发外围设备上的过程。
我的代码如下:
public class MainActivity extends AppCompatActivity
{
static final String PERIPHERAL_NAME = "Gobbledego";
static final String WIFI_SERVICE_UUID = "B87CF566-7A73-4347-B711-BB20F8A23D08";
static final String WIFI_SCAN_CHaraCTERISTIC_UUID = "891FDFB1-3E77-4597-8483-4AB24ADC18CB";
private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
scanner = BluetoothAdapter.getDefaultAdapter().getBluetoothLeScanner();
scanner.startScan(scanCallback);
}
private ScanCallback scanCallback = new ScanCallback()
{
@Override
public void onScanResult(int callbackType,ScanResult result)
{
super.onScanResult(callbackType,result);
String name = result.getDevice().getName();
if (name != null && name.equals(PERIPHERAL_NAME))
{
scanner.stopScan(scanCallback);
bluetoothGatt = result.getDevice().connectGatt(MainActivity.this,false,gattCallback);
}
}
};
private final BluetoothGattCallback gattCallback = new BluetoothGattCallback()
{
@Override
public void onConnectionStateChange(BluetoothGatt gatt,int status,int newState)
{
if (newState == BluetoothProfile.STATE_CONNECTED)
{
bluetoothGatt.discoverServices();
}
}
@Override
public void onServicesdiscovered(BluetoothGatt gatt,int status)
{
if (status == BluetoothGatt.GATT_SUCCESS)
{
BluetoothGattService service = gatt.getService(UUID.fromString(WIFI_SERVICE_UUID));
BluetoothGattCharacteristic wifiScanCharacteristic = service.getCharacteristic(UUID.fromString(WIFI_SCAN_CHaraCTERISTIC_UUID));
bluetoothGatt.readCharacteristic(wifiScanCharacteristic); // returns true
}
}
};
扫描部分和连接部分正在工作。问题是外围设备永远不会确认读取。我知道外围设备还可以,因为我有一个可以按预期工作的基于iOS的解决方案。
我想知道可能是什么问题吗?
编辑:在装有Android 6.0.1的Nexus 5上进行了测试
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)