android6.23蓝牙操作

来源:互联网 发布:无人机航线保持算法 编辑:程序博客网 时间:2024/06/05 21:52

  • 扫描已经配对的蓝牙设备
    • 过程
  • 蓝牙设备可见性

扫描已经配对的蓝牙设备

首先声明蓝牙权限

过程

  1. 获得BluetoothAdapter对象
  2. 判断当前设备是否有蓝牙
  3. 判断当前设备蓝牙是否打开
  4. 得到所有已经配对的蓝牙设备对象
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", "当前设备没有蓝牙功能");                }            }        });    }}

蓝牙设备可见性

  1. 修改可见性
  2. 扫描周围可用的蓝牙的设备
  3. 设置相关设备可见性需要获取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());        }    }}
0 0
原创粉丝点击