nexus 4 (android 4.3) で BLE モジュール (bluegiga BLE112) を使用しようとしています。接続、デバイスの名前の取得、GATT への接続はできますが、サービスの検出に失敗します。
最初のガット接続を行う方法は次のとおりです(正常に動作しているようです:
dev.connectGatt(getBaseContext(), true, btGattCB);
GATT コールバックは次のとおりです。
private BluetoothGattCallback btGattCB = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
super.onConnectionStateChange(gatt, status, newState);
if(newState == BluetoothProfile.STATE_CONNECTED){
Log.i(TAG, "Gatt Connected");
gatt.discoverServices();
}
else if(newState == BluetoothProfile.STATE_DISCONNECTED){
Log.i(TAG, "Gatt Disconnected");
}
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status){
Log.i(TAG,"Status onServiceDiscovered: "+status); //status code i'm getting here is 129
List<BluetoothGattService> btServices = gatt.getServices();//try anyway
}
};
そして、ここに私のログがあります:
09-28 12:58:37.611 4118-4130/com.jnewt.btFive I/PDU? Scan Callback
09-28 12:58:37.611 4118-4130/com.jnewt.btFive I/PDU? Device is: 00:07:80:67:2F:63
09-28 12:58:37.611 4118-4130/com.jnewt.btFive I/PDU? Device Name: BGT GPIO Test
09-28 12:58:43.607 4118-4118/com.jnewt.btFive I/PDU? Scan Timeout
09-28 12:59:13.539 4118-4129/com.jnewt.btFive I/PDU? Gatt Connected
09-28 12:59:43.561 4118-4190/com.jnewt.btFive I/PDU? Service Discovery Failed
09-28 12:59:43.581 4118-4130/com.jnewt.btFive I/PDU? Gatt Disconnected
09-28 13:00:00.920 4118-4129/com.jnewt.btFive I/PDU? Gatt Connected
09-28 13:00:30.902 4118-4130/com.jnewt.btFive I/PDU? Service Discovery Failed
09-28 13:00:30.922 4118-4190/com.jnewt.btFive I/PDU? Gatt Disconnected
09-28 13:01:20.265 4118-4129/com.jnewt.btFive I/PDU? Gatt Connected
09-28 13:01:50.277 4118-4190/com.jnewt.btFive I/PDU? Service Discovery Failed
09-28 13:01:50.297 4118-4130/com.jnewt.btFive I/PDU? Gatt Disconnected
09-28 13:01:56.113 4118-4129/com.jnewt.btFive I/PDU? Gatt Connected
09-28 13:02:26.115 4118-4190/com.jnewt.btFive I/PDU? Service Discovery Failed
09-28 13:02:26.125 4118-4130/com.jnewt.btFive I/PDU? Gatt Disconnected
https://developer.android.com/reference/android/bluetooth/BluetoothGatt.htmlページから、可能なステータスとして 129 が言及されていません (129 に一致する定数はありません)。
この時点で、私はすべてのアイデアがありません。iphoneの同様の例でテストすることにより、問題をAndroidフォンに切り分けました。Playストアで入手できるアプリもいくつか試しましたが、同様の問題があります(接続、名前の取得などはできますが、サービスはありません)。