扫描已经配对的蓝牙设备
首先声明蓝牙权限
过程
- 获得BluetoothAdapter对象
- 判断当前设备是否有蓝牙
- 判断当前设备蓝牙是否打开
- 得到所有已经配对的蓝牙设备对象
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//得到蓝牙适配器对象
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
//判断是适配器是否为null,如果为空则没有蓝牙设备
if(adapter != null) {
Log.d("bluetooth", "当前设备拥有蓝牙功能");
//判断当前蓝牙设备是否可用,如果可用的话打开
if(!adapter.isEnabled()) {
//该对象用于启动一个activity提示用户开启蓝牙设备
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(intent);
}
//得到所有已经配对的蓝牙设备
Set<BluetoothDevice> devices = adapter.getBondedDevices();
if (devices.size() > 0) {
//set和list都有iterator方法返回一个iterator对象,next()方法返回一个object对象
for (Iterator iterator = devices.iterator(); iterator.hasNext();) {
BluetoothDevice bluetoothDevice = (BluetoothDevice) iterator.next();
Log.d("bluetooth", bluetoothDevice.getName());
}
}
}else {
Log.d("bluetooth", "当前设备没有蓝牙功能");
}
}
});
}
}
蓝牙设备可见性
- 修改可见性
- 扫描周围可用的蓝牙的设备
- 设置相关设备可见性需要获取bluetooth.admin权限
public class MainActivity extends AppCompatActivity {
private Button button;
private Button button01;
private BluetoothAdapter bluetoothAdapter;
private BluetoothReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建一个意图过滤对象
IntentFilter intentFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
//创建一个接收器对象
receiver = new BluetoothReceiver();
//注册
registerReceiver(receiver, intentFilter);
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
button01 = (Button) findViewById(R.id.button_01);
button = (Button) findViewById(R.id.button);
//设置蓝牙设备可见性
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//创建一个意图,设置action为蓝牙不可见
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
//讲一个键值对存放到intent中,设置不可见时间,默认为120s,我的手机上可以设置为500s没有被300s
//覆盖
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 500);
startActivity(discoverableIntent);
}
});
button01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//开始扫描蓝牙设备
bluetoothAdapter.startDiscovery();
}
});
}
class BluetoothReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//可以从intent中取除远程的蓝牙设备对象
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.d("Bluetooth", device.getAddress());
}
}
}