I want to get the Bluetooth signal strength of an another device which connected to my phone,
How can I get the Bluetooth signal strength?
I tried to search a lot over google and did not find any answer.
Does someone know how can I implement it?
this is myActivity:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); registerReceiver(receiver, new IntentFilter(BluetoothDevice.ACTION_FOUND)); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } private final BroadcastReceiver receiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(BluetoothDevice.ACTION_FOUND.equals(action)) { int rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE); Toast.makeText(getApplicationContext()," RSSI: " + rssi + "dBm", Toast.LENGTH_SHORT).show(); } } }; }
I also has a Bluetooth permission in my manifest file.
You can certainly test your device's Bluetooth strength. It is best practice to troubleshoot your devices in a time efficient way. Use a test device to run a full diagnostic test to ensure your device is operating perfectly. Next begin looking at outside factors that may be interfering with your signal.
To get the signal you can check Bluetooth RSSI, you can read RSSI for connected devices, or perform a Bluetooth discovery to check the RSSI for any nearby devices. Basically a Bluetooth discovery is a broadcast to all stations within range to respond back.
Bluetooth doesn't have one particular frequency it operates on. Via bluetooth.com: Bluetooth technology operates in the unlicensed industrial, scientific and medical (ISM) band at 2.4 to 2.485 GHz, using a spread spectrum, frequency hopping, full-duplex signal at a nominal rate of 1600 hops/sec.
With the system preferences open, hold the Option key and a small bar graph with an RSSI number should appear that shows the signal strength. At the bottom of the Bluetooth system preferences there is a small gear menu that contains an option to "Monitor Connection RSSI" for any connected Bluetooth device.
To get the signal you can check Bluetooth RSSI, you can read RSSI for connected devices, or perform a Bluetooth discovery to check the RSSI for any nearby devices.
Basically a Bluetooth discovery is a broadcast to all stations within range to respond back. As each devices responds back, Android fires off an ACTION_FOUND intent. Within this intent you can getExtra EXTRA_RSSI to obtain the RSSI.
Note that not all bluetooth hardware supports RSSI.
Also Related: Android IRC Office Hours Question About Android Bluetooth RSSI here is a Bluetooth Classic broadcast receiver example
private final BroadcastReceiver receiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(BluetoothDevice.ACTION_FOUND.equals(action)) { int rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE); Toast.makeText(getApplicationContext()," RSSI: " + rssi + "dBm", Toast.LENGTH_SHORT).show(); } } };
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With