程序实现功能:开启、关闭、连接蓝牙,SCAN周围蓝牙并获得蓝牙名字,地址,信号强度RSSI,连接状态,因为当时是为了做一个蓝牙定位,所以按照需求还添加了一个是否是自己买的蓝牙基站的Textview。
当判断SCAN到的蓝牙里面有自己的蓝牙基站时,就再用一个ListView把它们的名字、地址、信号强度、距离和之前设定的坐标单独列出来。
程序实现效果图如下:
程序是参考了Github上一个程序,然后根据自己的需求修改的
程序如下:
MainActivity.java
import android.app.AlertDialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.text.DecimalFormat;
public class MainActivity extends AppCompatActivity implements
View.OnClickListener, OnItemClickListener, CompoundButton.OnCheckedChangeListener,
BlueConnectTask.BlueConnectListener, InputDialogFragment.InputCallbacks, BlueAcceptTask.BlueAcceptListener {
private static final String TAG = "MainActivity";
String blueName;//声明用户输入的蓝牙设备名称变量
private CheckBox ck_bluetooth;
private TextView tv_discovery;
private ListView lv_bluetooth;
private ListView lv_zuobiao;
private BluetoothAdapter mBluetooth;
private ArrayList<BlueDevice> mDeviceList = new ArrayList<BlueDevice>();
private ArrayList<BlueDevice> zDeviceList = new ArrayList<BlueDevice>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bluetoothPermissions();
ck_bluetooth = (CheckBox) findViewById(R.id.ck_bluetooth);
tv_discovery = (TextView) findViewById(R.id.tv_discovery);
lv_bluetooth = (ListView) findViewById(R.id.lv_bluetooth);
lv_zuobiao = (ListView) findViewById(R.id.lv_zuobiao);
if (BluetoothUtil.getBlueToothStatus(this) == true) {
ck_bluetooth.setChecked(true);
}
ck_bluetooth.setOnCheckedChangeListener(this);
tv_discovery.setOnClickListener(this);
mBluetooth = BluetoothAdapter.getDefaultAdapter();
if (mBluetooth == null) {
Toast.makeText(this, "本机未找到蓝牙功能", Toast.LENGTH_SHORT).show();
finish();
}
}
// 定义获取基于地理位置的动态权限
private void bluetoothPermissions() {
if (ContextCompat.checkSelfPermission(this, android.