一,蓝牙权限及开启
1.蓝牙权限
<!--添加蓝牙权限-->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
2.蓝牙开启
public class MainActivity extends AppCompatActivity {
//声明一个蓝牙适配器
private BluetoothAdapter bluetoothAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//通过BluetoothAdapter判断是否支持蓝牙
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if(bluetoothAdapter == null){
}else {
Toast.makeText(this,"设备支持蓝牙",Toast.LENGTH_LONG).show();
}
}
//判断是否开启蓝牙
@Override
protected void onStart() {
super.onStart();
if(!bluetoothAdapter.isEnabled()){
//没有开启蓝牙 向系统开启蓝牙
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
//会返回code 说明蓝牙已经打开
startActivityForResult(intent,10);
}else {
//已经开启蓝牙
Toast.makeText(this,"设备已经开启蓝牙",Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 10){
Toast.makeText(this,"设备已经开启蓝牙",Toast.LENGTH_SHORT).show();
}
}
}
二,查找蓝牙设备和显示已配对设备
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//声明一个蓝牙适配器
private BluetoothAdapter bluetoothAdapter;
private Button one;
private Button two;
//广播接收
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(BluetoothDevice.ACTION_FOUND)){
//获取发现的设备
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.e("device new","设备名称:" + device.getName() + "设备地址" + device.getAddress());
}else if(action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)){
//扫描完毕
Log.e("device new","扫描完毕");
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one = findViewById(R.id.one);
two = findViewById(R.id.two);
one.setOnClickListener(this);
two.setOnClickListener(this);
//通过BluetoothAdapter判断是否支持蓝牙
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if(bluetoothAdapter == null){
}else {
Toast.makeText(this,"设备支持蓝牙",Toast.LENGTH_LONG).show();
}
//添加过滤广播
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
//注册广播
registerReceiver(broadcastReceiver,filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
//注销广播
unregisterReceiver(broadcastReceiver);
}
//判断是否开启蓝牙
@Override
protected void onStart() {
super.onStart();
if(!bluetoothAdapter.isEnabled()){
//没有开启蓝牙 向系统开启蓝牙
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
//会返回code 说明蓝牙已经打开
startActivityForResult(intent,10);
}else {
//已经开启蓝牙
Toast.makeText(this,"设备已经开启蓝牙",Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 10){
Toast.makeText(this,"设备已经开启蓝牙",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onClick(View v) {
switch (v.getId()){
//查找设备
case R.id.one:
//如果设备正在扫描 那么关闭扫描
if(bluetoothAdapter.isDiscovering()){
bluetoothAdapter.cancelDiscovery();
}
//开始扫描 异步函数会立马返回
bluetoothAdapter.startDiscovery();
break;
//已配对设备
case R.id.two:
//返回多个设备
Set<BluetoothDevice> one = bluetoothAdapter.getBondedDevices();
for (BluetoothDevice device : one){
Log.e("device","设备名称:" + device.getName() + "设备地址" + device.getAddress());
}
break;
}
}
}