Это не то, как вы используете намерение.Вы получаете -32768, потому что RSSI не находится в том намерении, которое вы только что создали, и заданный по умолчанию результат Short.MIN_VALUE (-32768).
Вам необходимо создать подкласс BroadcastReceiver и создатьIntentFilter (или используйте манифест) для получения намерения BluetoothDevice.ACTION_FOUND.
Вы не сможете сделать это "одним нажатием кнопки".Вы получите его только тогда, когда Android сгенерирует ACTION_FOUND.
Вот что-то близкое.Сам не запускал.
В onCreate ():
registerReceiver(receiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));
В другом месте:
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();
}
}
};
РЕДАКТИРОВАТЬ: На самом деле вы могли бы сделать это натребовать, если вы вызываете startDiscovery () на вашем адаптере Bluetooth изнутри onClick ().Это должно вызвать ACTION_FOUND для каждого обнаруживаемого устройства.