android6.23蓝牙操作

扫描已经配对的蓝牙设备

首先声明蓝牙权限

过程

  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());

        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值