Android通信 -- 经典蓝牙

一,蓝牙权限及开启

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;
    }
}
}

猜你喜欢

转载自blog.csdn.net/weixin_43609490/article/details/88073808