Android BluetoothManager

Android BluetoothManager

一、BluetoothManager介绍

BluetoothManager是Android 4.3(API Level 18)中引入的一个类,它是蓝牙架构的一部分,用于管理蓝牙连接。它提供了一个接口,允许应用程序检查蓝牙是否启用,并获取蓝牙适配器。在蓝牙开发中,BluetoothManager和BluetoothAdapter是两个主要的对象,BluetoothManager用于获取BluetoothAdapter对象,而BluetoothAdapter则用于执行蓝牙操作,例如搜索设备和建立连接。因此,BluetoothManager是蓝牙开发中非常重要的一个类。

以下是获取BluetoothManager和BluetoothAdapter的示例代码:

// 获取BluetoothManager

final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

// 获取BluetoothAdapter

BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter();

二、BluetoothManager相关接口

IBluetoothManager

IBluetoothManager代码位于:

packages/modules/Bluetooth/system/binder/android/bluetooth/IBluetoothManager.aidl

IBluetoothManager的定义:

interface IBluetoothManager {}

IBluetoothManagerCallback

API for Communication between BluetoothAdapter and BluetoothManager

BluetoothAdapter 和 BluetoothManager 之间的通信 API

IBluetoothManagerCallback代码位于:

packages/modules/Bluetooth/system/binder/android/bluetooth/IBluetoothManagerCallback.aidl

IBluetoothManagerCallback的定义:

oneway interface IBluetoothManagerCallback {}

Attributable

Marker interface for a class which can have an {@link AttributionSource} assigned to it; these are typically {@link android.os.Parcelable} classes which need to be updated after crossing Binder transaction boundaries.

Attributable代码位于:

packages/modules/Bluetooth/system/binder/android/bluetooth/Attributable.aidl

Attributable的定义:

public interface Attributable {}

三、蓝牙相关类

BluetoothManager

BluetoothManager是Android系统中用于管理蓝牙的服务,它负责接收蓝牙的交互请求,如启用和禁用蓝牙、扫描蓝牙设备、连接蓝牙设备等。在Android系统中,BluetoothManager是通过BluetoothManagerService来实现的。BluetoothManagerService是一个aidl服务端,它被SystemService管理,而BluetoothManager则是作为aidl客户端存在于BluetoothAdapter中。此外,BluetoothManagerService还持有IBluetooth的aidl服务端,IBluetooth是蓝牙的真正交互接口,它在AdapterService中作为android服务存在。BluetoothManagerService的代码位置在/frameworks/base/services/core/java/com/android/server/BluetoothManagerService.java中,它继承自IBluetoothManager.Stub。以下是一个获取BluetoothManager的示例代码:

BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

BluetoothManager代码位于:

packages/modules/Bluetooth/framework/java/android/bluetooth/BluetoothManager.java

BluetoothManager的定义:

public final class BluetoothManager {}

BluetoothManager API:

public BluetoothAdapter getAdapter():获取此设备的默认蓝牙适配器。

public List getConnectedDevices(int profile):获取获取已连接的蓝牙设备列表。

public int getConnectionState(BluetoothDevice device, int profile):获取配置文件的当前连接状态到蓝牙设备。

public List getDevicesMatchingConnectionStates(int profile, int[] states):获取匹配任何给定连接状态的设备列表。

public BluetoothGattServer openGattServer(Context context, BluetoothGattServerCallback callback):打开GATT服务,GATT (Generic Attribute Profile) 是蓝牙低功耗 (Bluetooth Low Energy, BLE) 协议栈中的一部分,它定义了 BLE 设备之间交换数据的格式和规范。

public BluetoothGattServer openGattServer(Context context, BluetoothGattServerCallback callback, boolean eatt_support):打开GATT服务

public BluetoothGattServer openGattServer(Context context, BluetoothGattServerCallback callback, int transport):打开GATT服务

public BluetoothGattServer openGattServer(Context context, BluetoothGattServerCallback callback, int transport, boolean eatt_support) :打开GATT服务

BluetoothFrameworkInitializer

Class for performing registration for Bluetooth service.

用于执行蓝牙服务注册的类。

BluetoothFrameworkInitializer代码位于:

packages/modules/Bluetooth/framework/java/android/bluetooth/BluetoothFrameworkInitializer.java

BluetoothFrameworkInitializer的定义:

public class BluetoothFrameworkInitializer {}

BluetoothEventManager

BluetoothEventManager receives broadcasts and callbacks from the Bluetooth API and dispatches the event on the UI thread to the right class in the Settings.

BluetoothEventManager 接收来自蓝牙 API 的广播和回调,并将 UI 线程上的事件调度到“设置”中的正确类。

BluetoothManager代码位于:

packages/modules/Bluetooth/framework/java/android/bluetooth/BluetoothManager.java

BluetoothManager的定义:

public class BluetoothEventManager {

private class BluetoothBroadcastReceiver extends BroadcastReceiver {}

private class AdapterStateChangedHandler implements Handler {}

private class ScanningStateChangedHandler implements Handler {}

private class DeviceFoundHandler implements Handler {}

private class ConnectionStateChangedHandler implements Handler {}

private class NameChangedHandler implements Handler {}

private class BondStateChangedHandler implements Handler {}

private class ClassChangedHandler implements Handler {}

private class UuidChangedHandler implements Handler {}

private class BatteryLevelChangedHandler implements Handler {}

private class ActiveDeviceChangedHandler implements Handler {}

private class AclStateChangedHandler implements Handler {}

private class AudioModeChangedHandler implements Handler {}

}

BluetoothManagerService

BluetoothManagerService是Android系统中的一个服务,它是蓝牙系统服务的一部分,负责管理蓝牙的各种操作。它作为IBinder服务端初始化并被系统服务集统一管理起来。在蓝牙系统服务引导过程中被运行起来,与IBluetoothManager交互,处理蓝牙的各种请求,如打开蓝牙、扫描设备、连接设备等。同时,它也是IBluetoothManager的aidl服务端,被SystemService管理。

具体来说,BluetoothManagerService包括以下几个方面的功能:

蓝牙开关控制:BluetoothManagerService负责控制蓝牙的开关状态,当用户打开或关闭蓝牙时,它会相应地启动或停止蓝牙服务。

蓝牙设备扫描:BluetoothManagerService负责管理蓝牙设备的扫描,当用户需要搜索附近的蓝牙设备时,它会启动蓝牙扫描服务,并将扫描到的设备信息返回给应用程序。

蓝牙设备配对:BluetoothManagerService负责管理蓝牙设备的配对,当用户需要将蓝牙设备与手机配对时,它会启动蓝牙配对服务,并将配对结果返回给应用程序。

蓝牙设备连接:BluetoothManagerService负责管理蓝牙设备的连接,当用户需要连接蓝牙设备时,它会启动蓝牙连接服务,并将连接结果返回给应用程序。

蓝牙音频传输:BluetoothManagerService负责管理蓝牙音频传输,当用户需要通过蓝牙设备播放音乐或接听电话时,它会启动蓝牙音频服务,并将音频数据传输到蓝牙设备上。

BluetoothManagerService代码位于:

packages/modules/Bluetooth/service/java/com/android/server/bluetooth/BluetoothManagerService.java

BluetoothManagerService的定义:

public class BluetoothManagerService extends IBluetoothManager.Stub {

class ClientDeathRecipient implements IBinder.DeathRecipient {}

private class BluetoothServiceConnection implements ServiceConnection {}

private final class ProfileServiceConnections implements ServiceConnection, IBinder.DeathRecipient {}

//This class manages the clients connected to a given ProfileService and maintains the connection with that service.

private class BluetoothHandler extends Handler {}

}

ServiceFactory

Factory class to create instances of static services. Useful in mocking the service objects.

用于创建静态服务实例的工厂类。在模拟服务对象时很有用。

BluetoothManagerService代码位于:

packages/modules/Bluetooth/service/java/com/android/server/bluetooth/BluetoothManagerService.java

BluetoothManagerService的定义:

public class ServiceFactory {}

相关推荐

张若昀-个人简介-早年经历-演艺经历-图片
365彩票是不是诈骗呢

张若昀-个人简介-早年经历-演艺经历-图片

⌛ 10-03 👁️ 9039
ai人工智能app有哪些
365彩票是不是诈骗呢

ai人工智能app有哪些

⌛ 07-11 👁️ 8971