Android开发蓝牙篇之蓝牙设备开启、搜索周边蓝牙设备

首先是此部分涉及到的类

  • BluetoothAdapter 蓝牙适配器,即该类里面包含了蓝牙使用中常用到的一些API。
  • BroadcastReceiver 广播接收者,不难猜测,蓝牙设备开启或者关闭、搜索到周边设备就要来通知应用,那么Android系统就会以广播的方式来通知。
  • BluetoothDevice 蓝牙设备,即一个相当于蓝牙设备的类,实现了Parcelable接口,用于Android的IPC通信机制。里面实在广播时发送的蓝牙的相关信息:蓝牙名称,地址,类型和uuid等。

蓝牙设备开启

public void enableBlueTooth() throws Exception {
        this.BTadapter = BluetoothAdapter.getDefaultAdapter();
        if (BTadapter == null) {
            throw new Exception("设备上没有发现有蓝牙设备");
        }
        if (!BTadapter.isEnabled()) {
            BTadapter.enable();
        }
    }

BTadapter就是BluetoothAdapter的对象,如果获取到的蓝牙适配器对象时null,就说明该设备不支持蓝牙,然后判断蓝牙是否开启,BTadapter .isEnabled()如果没有开启就返回false,BTadapter.enable()用于开启蓝牙设备。


蓝牙设备搜索

@Override
    public void searchBlueTooth(Context context,
            SearchBlueToothListener mSearchListener) throws Exception {
        // TODO Auto-generated method stub
        Log.i("info", "准备开始搜索了");
        this.mSearchListener = mSearchListener;
        enableBlueTooth();
        if (BTadapter.isDiscovering()) {
            BTadapter.cancelDiscovery();
        }
        BTadapter.startDiscovery();

        IntentFilter iFilter = new IntentFilter(
                BluetoothAdapter.ACTION_DISCOVERY_STARTED);
        context.registerReceiver(mSearchReceiver, iFilter);

        // 创建一个查找蓝牙设备的广播意图
        iFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
        // 注册一个广播接收者,开启查找蓝牙设备意图后将结果以广播的形式返回
        context.registerReceiver(mSearchReceiver, iFilter);

        // 创建一个结束查找蓝牙设备结束的广播意图

        iFilter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
        context.registerReceiver(mSearchReceiver, iFilter);

    }

首先,开启蓝牙设备,然后判断蓝牙设备是否正在搜索,如果正在搜索,就取消搜索,再开启重新搜索。
其次,蓝牙搜索会有开始搜索、搜索到设备、结束搜索三个阶段:
Android系统分别都会在这三个阶段给应用发送广播,应用注册相应的广播接收者,我这里注册了开启、发现、结束三个广播接收意向;在广播接收者中进行操作,而操作每一次使用大多不相同,所以我定义了一个接口,用户实现这个接口然后做自己的响应。

S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值