Android ----蓝牙架构
16lz
2021-01-23
蓝牙: 1、fromwork 2、service 3、driver
service到driver利用service调用
fromwork到driver利用AIDL通信 相关代码位置: JB\packages\apps\Bluetooth\src\com\android\bluetooth
JB\frameworks\base\core\java\android\bluetooth
JB\frameworks\base\services\java\com\android\server
协议栈 JB\external\bluetooth\bluedroid
true a2dp设备 -------- 媒体音频 false 蓝牙 设备可以控制电话(健康设备) false 一些免提设备 true hid设备 鼠标/键盘 true opp传输 false 蓝牙局域网功能 false 蓝牙车载设备自动下载手机内的电话本定义的一套协议 true ble蓝牙( 超低功耗 蓝牙 ) false false false BluetoothAdapter 常用接口:
1. BluetoothAdapter getDefaultAdapter(), 得到默认蓝牙设备 2. BluetoothDevice getRemoteDevice(String address) 根据地址得到远程设备 3. BluetoothDevice getRemoteDevice( byte [] address) 4. boolean isEnabled() 蓝牙设备是否打开 5. int getState() 得到状态 6. boolean enable()打开蓝牙 7. boolean disable() 关闭蓝牙 8. boolean disable( boolean persist) 9. String getAddress()得到地址 10. String getName() 得到名称 11. boolean configHciSnoopLog( boolean enable) //enable or disable Bluetooth HCI snoop log. 12. public ParcelUuid[] getUuids() Get the UUIDs supported by the local Bluetooth adapter. 13. boolean setName(String name) 设置蓝牙名称 14. public int getScanMode()得到扫描模式 15. public boolean setScanMode( int mode, int duration) 设置扫描模式 16. public boolean startDiscovery() 开始发现设备 17. public boolean cancelDiscovery() 取消发现设备 18. public boolean isDiscovering() 判断是否正在扫描 19. public Se t getBondedDevices() 得到绑定设备 20. public int getConnectionState() 得到连接状态 21. public int getProfileConnectionState( int profile ) 22. public static boolean checkBluetoothAddress(String address) 检查蓝牙地址
流程图:
- Bluetooth.apk
- bluedroid(芯片厂家)
service到driver利用service调用
fromwork到driver利用AIDL通信 相关代码位置: JB\packages\apps\Bluetooth\src\com\android\bluetooth
JB\frameworks\base\core\java\android\bluetooth
JB\frameworks\base\services\java\com\android\server
协议栈 JB\external\bluetooth\bluedroid
/frameworks/base/core/java/android/bluetooth/目录下
BluetoothA2dp.java A2DP的功能实现
BluetoothAdapter.java 蓝牙action的定义,虚拟设备属性以及操作方法
BluetoothAudioGateway.java 蓝牙语音网关
BluetoothClass.java 蓝牙设备类型的定义
BluetoothDevice.java 蓝牙设备属性
BluetoothDevicePicker.java 定义远程蓝牙设备的特性,比如需要认证,设备类型
BluetoothHeadset.java 定义蓝牙headset功能的属性以及接口
BluetoothInputStream.java 蓝牙流接口的实现(输入流)
BluetoothOutputStream.java 蓝牙流接口的实现(输出流)
BluetoothServerSocket.java 蓝牙socket服务端具备的方法
BluetoothSocket.java 蓝牙socket的封装
BluetoothUuid.java 蓝牙uuid的定义以及uuid的解析
1. BluetoothAdapter getDefaultAdapter(), 得到默认蓝牙设备 2. BluetoothDevice getRemoteDevice(String address) 根据地址得到远程设备 3. BluetoothDevice getRemoteDevice( byte [] address) 4. boolean isEnabled() 蓝牙设备是否打开 5. int getState() 得到状态 6. boolean enable()打开蓝牙 7. boolean disable() 关闭蓝牙 8. boolean disable( boolean persist) 9. String getAddress()得到地址 10. String getName() 得到名称 11. boolean configHciSnoopLog( boolean enable) //enable or disable Bluetooth HCI snoop log. 12. public ParcelUuid[] getUuids() Get the UUIDs supported by the local Bluetooth adapter. 13. boolean setName(String name) 设置蓝牙名称 14. public int getScanMode()得到扫描模式 15. public boolean setScanMode( int mode, int duration) 设置扫描模式 16. public boolean startDiscovery() 开始发现设备 17. public boolean cancelDiscovery() 取消发现设备 18. public boolean isDiscovering() 判断是否正在扫描 19. public Se t
流程图:
更多相关文章
- 2011.06.03(2)——— android 1.6 launcher研究之自定义ViewGroup
- Android简易实战教程--第十七话《自定义彩色环形进度条》
- Android 给ImageView自定义设置边框
- android 常用控件一览(从底层分析,为自定义控件做下小铺垫)
- 【Android 界面效果42】如何自定义字体
- android listview 自定义分割线总结
- 自定义Android键盘
- Android 自定义 View 理论基础
- Android 自定义camera压缩图片到指定大小