Recepción de datos del dispositivo periférico BLE de Android

Esto puede sonar muy básico, pero soy un principiante en Android BLE Development. Hasta ahora soy capaz de crear mi dispositivo Nexus 9 como un dispositivo periférico y Moto G como Central. Además, estoy conectando los dispositivos con éxito. Pero no puedo imaginar que cuando envíe una característica del dispositivo central, ¿dónde se recibirá de periféricos? La devolución de llamada de anunciar sólo volver si el anuncio se inicia con éxito de no (que en mi caso es exitoso)

Aquí está mi código periférico

btleGattCallback = new BluetoothGattCallback() { @Override // Result of a characteristic read operation public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { if (status == BluetoothGatt.GATT_SUCCESS) { broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic); } } @Override public void onConnectionStateChange(final BluetoothGatt gatt, final int status, final int newState) { // this will get called when a device connects or disconnects } @Override // New services discovered public void onServicesDiscovered(BluetoothGatt gatt, int status) { if (status == BluetoothGatt.GATT_SUCCESS) { broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED); } else { Log.w("doscover", "onServicesDiscovered received: " + status); } } }; BeaconParser bp = new BeaconParser().setBeaconLayout("m:2-3=0,i:4-19,p:20-20"); mBeaconTransmitter = new BeaconTransmitter(this, bp ); // Transmit a beacon with Identifiers 2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 1 2 Long li = new Long(-0l); ArrayList<Long> l = new ArrayList<Long>(); l.add(li); Beacon beacon = new Beacon.Builder() .setId1("2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6") .setId2("1") .setId3("2") .setManufacturer(0x00ff) // Choose a number of 0x00ff or less as some devices cannot detect beacons with a manufacturer code > 0x00ff .setTxPower(-59) .setDataFields(l) .build(); mBeaconTransmitter.startAdvertising(beacon); 

Y el Código Central de la Corse

  btManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE) ; madapter = btManager.getAdapter(); if (madapter != null && !madapter.isEnabled()) { Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableIntent,1); } mHandler = new Handler(); btleGattCallback = new BluetoothGattCallback() { @Override // Result of a characteristic read operation public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { if (status == BluetoothGatt.GATT_SUCCESS) { broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic); } } @Override public void onConnectionStateChange(final BluetoothGatt gatt, final int status, final int newState) { Log.w("doscover", "Connected " + status); } @Override public void onServicesDiscovered(BluetoothGatt gatt, int status) { Log.w("discover", "onServicesDiscovered received: " + status); if (status == BluetoothGatt.GATT_SUCCESS) { broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED); } else { Log.w("doscover", "onServicesDiscovered received: " + status); } } }; devicefound = new ArrayList<BluetoothDevice>(); devices = new ArrayAdapter<String>( this , R.layout.device_name); ListView pairedListView = (ListView) findViewById(R.id.textView3); pairedListView.setAdapter(devices); mleScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) { devicefound.add(device); //UUID = device.getAddress().toString(); //Log.e("Search", "" + device.getName().toString() ); //Toast`.makeText(context,device.getName().toString(), 1 ).show(); Log.e("Search", "" + device.toString()); Log.e("Search", "" + String.valueOf(rssi) ); devices.add("Nex" + device.getName() ); //mBluetoothGatt = device.connectGatt(getActivity(), true, btleGattCallback); } }; pairedListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) { dv = devicefound.get(position); mBluetoothGatt = dv.connectGatt(getApplicationContext() , true, btleGattCallback); mBluetoothGatt.connect(); dv.createBond(); //BluetoothDevice dd = madapter.getRemoteDevice(devicefound.get(position).getAddress()); if(i == false) { Toast.makeText(getApplicationContext(), "Service found. Connected to " + dv.getName() , 1).show(); } else { Toast.makeText(getApplicationContext(), "Already Connected " + dv.getName() , 1).show(); } i = mBluetoothGatt.connect(); mBluetoothGatt.beginReliableWrite(); boolean b = mBluetoothGatt.discoverServices(); Log.e("Discovery Started", "" + b ); Log.e("get ItemATPosition", "" + adapter.getItemAtPosition(position)); //BluetoothGattService Service = mBluetoothGatt.getService( ); // = Service.getCharacteristic(k); BluetoothGattCharacteristic characteristic= new BluetoothGattCharacteristic(k,2,1); //Service characteristic.setValue( "This is a Charects "); byte[] value = {(byte)91,(byte)92,(byte)93}; characteristic.setValue(value); boolean st = mBluetoothGatt.writeCharacteristic(characteristic); //Toast.makeText(getActivity(), t1.getText() + " " + st, 1).show(); boolean b1 = mBluetoothGatt.executeReliableWrite(); //Toast.makeText(getActivity(), t1.getText() + " " + b1, 1).show(); Intent in = new Intent("ACTION_BOND_STATE_CHANGED."); sendBroadcast(in); } }); scanLeDevice(true); 

Estoy utilizando el comando writeCharacteristic del Gatt conectado de central, pero no sé cómo recibir desde el extremo periférico

Cualquier tipo de ayuda será apreciada.

One Solution collect form web for “Recepción de datos del dispositivo periférico BLE de Android”

Modo periférico puede apoyar bien en IOS, le sugiero que utilice azul claro para fines de prueba, de aquí: https://itunes.apple.com/us/app/lightblue-bluetooth-low-energy/id557428110?mt=8 y como Sé que Lollipop 5 instalado en el nexo 6 ​​y nexo 9 puede apoyar el modo periférico, el nexo 5 no lo soportan. Moto G soporte el modo periférico?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.