蓝牙耳机的开发

第一步添加权限

<uses-permission android:name=”android.permission.BLUETOOTH” />

<uses-permission android:name=”android.permission.BLUETOOTH_ADMIN” />

第一个是最基本的,打开蓝牙,请求连接,接受连接都需要这个
第二个是建立搜索,对蓝牙进行设置这些操作

第二步获取一个对蓝牙进行各种操作的类-BluetoothAdapter.这个类可以满足我们的大多数操作。通过BluetoothAdapter.getDefaultAdapter()方法可得。

public static synchronized BluetoothAdapter getDefaultAdapter() {
    if (sAdapter == null) {
        IBinder b = ServiceManager.getService(BLUETOOTH_MANAGER_SERVICE);
        if (b != null) {
            IBluetoothManager managerService = IBluetoothManager.Stub.asInterface(b);
            sAdapter = new BluetoothAdapter(managerService);
        } else {
            Log.e(TAG, "Bluetooth binder is null");
        }
    }
    return sAdapter;
}

打开蓝牙。验证手机是否支持蓝牙。

// 为true 表示支持,false表示不支持
BluetoothAdapter.getDefaultAdapter() != null

我们一般打开蓝牙会使用到系统提供的一个Activity。这个Activity的action为:BluetoothAdapter.ACTION_REQUEST_ENABLE。

然后我们要使用startActivityForResult()这个方法来启动它。

这个Activity是有返回值的,如果用户选择的是打开,我们应该可以收到一个RESULT_OK

如果用户选择的是取消,我们应该可以收到一个RESULT_CANCELED。

public void openBluetooth() {
    Intent enableBT = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBT, 1);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1) {
        if (resultCode == RESULT_OK) {
            System.out.println("蓝牙已打开");
        } else if (resultCode == RESULT_CANCELED) {
            System.out.println("取消打开");
        }
    }
}

监听蓝牙状态的变化
当蓝牙的状态发生改变时,系统是会发出一个为BluetoothAdapter.ACTION_STATE_CHANGED的广播。

该广播携带两个参数,一个是BluetoothAdapter.EXTRA_PREVIOUS_STATE,表示之前的蓝牙状态。

另一个是BluetoothAdapter.EXTRA_STATE,表示当前的蓝牙状态。而它们的值为以下四个:

BluetoothAdapter.STATE_TURNING_ON;

BluetoothAdapter.STATE_ON;

BluetoothAdapter.STATE_TURNING_OFF;

BluetoothAdapter.STATE_OFF;

分别代表,打开中,已打开,关闭中,已关闭。
注意:
我们可以调用BludetoothAdapter的getState()这个方法,该方法的返回值为上面的四个中的一个

查找蓝牙设备

这个关于查找设备要分为两个部分,一个是已绑定的设备,另一个是搜索新的设备。

对于已绑定的设备,我们可以直接通过BluetoothAdapter的getBondedDevices()这个方法来获得。

该方法返回的是一个Set我们可以直接从人获得我们需要的信息

public void getBoundedDevices() {
    System.out.println("getPairedDevices");
    // 这个要在打开蓝牙的情况下才可以,不然为空集
    BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
    Set<BluetoothDevice> devices = adapter.getBondedDevices();
    for (BluetoothDevice device : devices) {
        System.out.println(device.getName() + " : " + device.getAddress());
    }
}

另外就是查找新的设备了,这时我们要调用startDiscovery()方法,这个方法并不会在我们的程序中执行,它是系统进程来的,然后通过异步发送广播的方式来通知。
所以我们还要注册一个广播接收器来接收系统的广播,这个广播的action为BluetoothDevice.ACTION_FOUND。
它携带两个值,一个是BluetoothDevice.EXTRA_DEVICE另一个是BluetoothDevice.EXTRA_CLASS分别表示哪一个具体的设备和这个设备的类型。
查找设备这个动作是会消耗大量的系统资源的,而且它会大大减少蓝牙的可用带宽,所以当我们找到了目标设备后,应该由我们主动调用cancelDiscovery()这个方法来取消搜索,而不应该期待默认的搜索时间到了,由系统来取消搜索。

设置可被搜索

所以我们自己通过编程来实现打开可被搜索的选择,使用是很装简单的,也是调用系统的一个Activity。这个activity的action是BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE它同样是有返回值的。并且,这个我们可以通过BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION这个参数来指定可被搜索的时间。

public void discoverable() {
    BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
    Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
    // 这个可以用来设置时间
    intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 200);
    startActivityForResult(intent, 2);
}

这个Activity还同时具有打开蓝牙的功能,所以我们并不需要先打开蓝牙,再设置可被发现的时间,一次就可以搞定。

最后,这个状态的改变系统也是会发出广播的,我们可以注册一个广播接收器来捕捉这个状态的变化,或是通过调用BluetoothAdapter的getScanMod()这个方法来确定,和之前是一样的

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
CSDN蓝牙耳机开发是指在CSDN平台上进行蓝牙耳机相关软件或硬件开发的活动。蓝牙耳机是一种无线连接设备,通过蓝牙技术与音频设备进行无线通信。 在CSDN平台上进行蓝牙耳机开发有几个方面的优势。首先,CSDN平台是一个专注于IT技术的社区,汇集了大量的开发者和技术爱好者,可以提供丰富的开发资源和技术支持。在CSDN平台上,开发者可以分享自己的开发经验,学习他人的开发案例,获得技术指导和问题解答。这为蓝牙耳机开发提供了一个良好的学习和交流平台。 其次,CSDN平台上有丰富的开发资源和文档资料。开发者可以在平台上找到各种与蓝牙耳机开发相关的教程、示例代码、开发工具等。这些资源可以帮助开发者快速入门,了解蓝牙耳机的基本原理和开发技术。 再次,CSDN平台还有一些专门的开发社区和论坛,开发者可以在这些社区中与其他开发者进行互动和交流。在这些社区中,开发者可以提问问题、分享经验、讨论技术难题等。这样的交流互动可以帮助开发者更快地解决问题,提高开发效率。 最后,CSDN平台还有一些与蓝牙耳机开发相关的比赛和活动。开发者可以参与这些活动,展示自己的开发成果,与其他开发者进行竞争和交流。这不仅可以提高个人的开发技能和经验,同时也可以扩大自己在蓝牙耳机开发领域的影响力和知名度。 综上所述,CSDN蓝牙耳机开发是一个非常有价值和有意义的活动,可以帮助开发者在蓝牙耳机开发领域取得更好的成果。在CSDN平台上进行蓝牙耳机开发开发者可以借助平台提供的资源和支持,更好地学习和实践蓝牙耳机开发技术,提高自己的技术水平,分享自己的开发经验,与其他开发者共同推动蓝牙耳机技术的发展。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值