android bluetooth onclick rssi signal-strength

El valor de Android RSSI de Bluetooth devuelve-32768 siempre?



onclick signal-strength (1)

Estoy tratando de obtener el valor RSSI actual de un dispositivo bluetooth conectado con solo presionar un botón. Sin embargo, solo devuelve -32768 siempre. No sé lo que está mal! Sin embargo, pude obtener el RSSI correcto la primera vez que se conectó.

private Button.OnClickListener buttonRSSIOnClickListener = new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent = new Intent(BluetoothDevice.ACTION_FOUND); short rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE); Toast.makeText(getApplicationContext()," RSSI: " + rssi + "dBm", Toast.LENGTH_SHORT).show(); }};

¿Alguien puede ayudarme por favor?


Esta no es la forma en que usas un Intento. Obtiene -32768 porque el RSSI no está en esa intención que acaba de crear, y el resultado predeterminado que ha especificado es Short.MIN_VALUE (-32768).

Necesita subclasificar BroadcastReceiver y crear un IntentFilter (o usar el manifiesto) para que reciba el BluetoothDevice.ACTION_FOUND intento.

No podrá hacer esto "con el clic de un botón". Solo lo obtendrás cuando Android genere ACTION_FOUND.

Aquí hay algo cerca. No lo he ejecutado yo mismo.

En onCreate ():

registerReceiver(receiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));

En otra parte:

private final BroadcastReceiver receiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(BluetoothDevice.ACTION_FOUND.equals(action)) { short rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE); Toast.makeText(getApplicationContext()," RSSI: " + rssi + "dBm", Toast.LENGTH_SHORT).show(); } } };

EDITAR: en realidad, es posible que pueda hacerlo bajo demanda si llama a startDiscovery () en su BluetoothAdapter desde onClick (). Eso debería desencadenar ACTION_FOUND para cada dispositivo que descubra.