Get bluetooth signal strength

后端 未结 4 1260
面向向阳花
面向向阳花 2020-12-01 01:09

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

4条回答
  •  时光取名叫无心
    2020-12-01 01:13

    I think your code is ok, but you need to implement startDiscovery() in order to see results.

    The true is that BluetoothDevice.EXTRA_RSSI only works for discovering devices, when you connect to one of them you are not able any more to get its RSSI.

    Here I developed a very simple sample of an Activity that permit you see the RSSI of the devices near to you. You first need to add a TextView and a Button to your layout, then enable the Bluetooth Adapter and then just click the button.

    package com.in2apps.rssi;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.bluetooth.BluetoothAdapter;
    import android.bluetooth.BluetoothDevice;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class RSSIActivity extends Activity {
    
        private BluetoothAdapter BTAdapter = BluetoothAdapter.getDefaultAdapter();
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_rssi);
            registerReceiver(receiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));
    
            Button boton = (Button) findViewById(R.id.button1);
            boton.setOnClickListener(new OnClickListener(){
                public void onClick(View v) {
                    BTAdapter.startDiscovery();
                }
            });
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_rssi, 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);
                    String name = intent.getStringExtra(BluetoothDevice.EXTRA_NAME);
                    TextView rssi_msg = (TextView) findViewById(R.id.textView1);
                    rssi_msg.setText(rssi_msg.getText() + name + " => " + rssi + "dBm\n");
                }
            }
        };
    }
    

    It looks this way:

    RSSI Detection - Android Example

提交回复
热议问题