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.