当前位置: 首页 > wzjs >正文

南昌做网站哪个公司好购买域名的网站

南昌做网站哪个公司好,购买域名的网站,建筑公司企业愿景内容平台,智能建造技术Android 蓝牙开发调试总结 文章目录 Android 蓝牙开发调试总结一、前言二、蓝牙开发1、开关和连接控制2、相关日志3、相关广播4、demo示例 三、其他1、Android 蓝牙开发调试小结2、Android14 蓝牙启动流程3、Android14 蓝牙 BluetoothService 启动和相关代码介绍4、Android13 蓝…

Android 蓝牙开发调试总结

文章目录

  • Android 蓝牙开发调试总结
    • 一、前言
    • 二、蓝牙开发
      • 1、开关和连接控制
      • 2、相关日志
      • 3、相关广播
      • 4、demo示例
    • 三、其他
      • 1、Android 蓝牙开发调试小结
      • 2、Android14 蓝牙启动流程
      • 3、Android14 蓝牙 BluetoothService 启动和相关代码介绍
      • 4、Android13 蓝牙协议属性配置详解
      • 5、Android13 原生设置应用蓝牙配对代码分析研究
      • 6、Android 蓝牙相关广播介绍
      • 7、Android9 查看连接多个蓝牙耳机查看使用中的蓝牙耳机
      • 8、Android13 不能静态注册的几个广播

一、前言

如果开发蓝牙相关功能,必须先掌握基本api知识和相关广播的监听;

蓝牙用的功能基本都是系统签名权限的系统应用,比如Settings;

本简单介绍蓝牙开发基本知识,有兴趣的可以看看。

二、蓝牙开发

1、开关和连接控制

//BluetoothAdapter 的获取
BluetoothAdapter bluetoothAdapter= BluetoothAdapter.getDefaultAdapter();
//蓝牙状态:
boolean isBluetoothEnable = bluetoothAdapter.enable();
//开启蓝牙
bluetoothAdapter.enable();
//关闭蓝牙
bluetoothAdapter.disable();//已保存的蓝牙列表
Set<BluetoothDevice> bondedDevices = bluetoothAdapter.getBondedDevices();
// BluetoothDevice 是Android原生的蓝牙对象,但是实现方法比较少;
Settings 基本使用的是SettingsLib的 LocalBluetoothManager 进行蓝牙操作管理。SettingsLib 的蓝牙封装接口:
//获取蓝牙列表
LocalBluetoothManager mLocalManager = LocalBluetoothManager.getInstance(context, mOnInitCallback);;
mLocalManager.getCachedDeviceManager().clearNonBondedDevices();//清除扫描列表
Collection<CachedBluetoothDevice> cachedDevices = mLocalManager.getCachedDeviceManager().getCachedDevicesCopy();//获取扫描列表//蓝牙单个对象 CachedBluetoothDevice
protected final CachedBluetoothDevice mCachedDevice;
mCachedDevice.isConnected() //蓝牙是否连接//1、未连接的情况,配对+连接
boolean isParing = mCachedDevice.startPairing();
//2、已连接的情况,断开连接,进入保存状态
mCachedDevice.disconnect();
//3、断开连接,进入保存状态的情况,重新连接
mCachedDevice.connect();
//4、连接/保存状态,忘记设备
mCachedDevice.unpair(); 

2、相关日志

蓝牙关键字都是:bluetooth
上层关键字:BluetoothManagerService、BluetoothActive、BluetoothA2dp
底层相关日志:bt日志过滤示例:
logcat | grep -iE "bluetooth|bt"
logcat | grep -iE "BluetoothManagerService|BluetoothActive|BluetoothA2dp"
logcat | grep -iE "BluetoothManagerService|BluetoothActive|BluetoothA2dp|bluetooth|bt"

日志示例:

logcat | grep -iE "BluetoothManagerService、BluetoothActive、BluetoothA2dp"
04-26 16:21:49.423   821  1116 D BluetoothManagerService: enable(com.skg.settings):  mBluetooth =null mBinding = false mState = OFF //打开蓝牙,显示应用包名
04-26 16:21:49.424   821   993 D BluetoothManagerService: MESSAGE_ENABLE(0): mBluetooth = null
04-26 16:21:49.424   821   993 D BluetoothManagerService: Persisting Bluetooth Setting: 1
04-26 16:21:49.425   821  1116 D BluetoothManagerService: enable returning
04-26 16:21:49.427   821   993 D BluetoothManagerService: binding Bluetooth service
04-26 16:21:49.723  7615  7615 D BluetoothActiveDeviceManager: start()
04-26 16:21:49.748   821   993 D BluetoothManagerService: MESSAGE_BLUETOOTH_STATE_CHANGE: OFF > BLE_TURNING_ON
04-26 16:21:49.748   821   993 D BluetoothManagerService: Sending BLE State Change: OFF > BLE_TURNING_ON //正在打开
04-26 16:21:51.376   821   821 D BluetoothManagerService: Bluetooth Adapter address changed to 22:22:D6:E8:2E:D0
04-26 16:21:51.401   821   993 D BluetoothManagerService: Sending State Change: OFF > TURNING_ON
04-26 16:21:51.407  7615  7649 D BluetoothActiveDeviceManager: handleMessage(MESSAGE_ADAPTER_ACTION_STATE_CHANGED): newState=11
04-26 16:21:51.418  7615  7615 I BluetoothA2dpServiceJni: classInitNative: succeeds
04-26 16:21:51.621   821   993 D BluetoothManagerService: MESSAGE_BLUETOOTH_STATE_CHANGE: TURNING_ON > ON
04-26 16:21:51.648  1831  4939 D BluetoothA2dp: Binding service...
04-26 16:21:51.657   821   993 D BluetoothManagerService: Sending BLE State Change: TURNING_ON > ON
04-26 16:21:51.659   821   993 D BluetoothManagerService: Sending State Change: TURNING_ON > ON //打开完成

上面日志的主要相关过程都是 BluetoothManagerService 中进行打印,蓝牙打开完成大概需要2秒左右。

不同方案和不同硬件处理的时间可能是有差异的。

3、相关广播

BluetoothAdapter.ACTION_STATE_CHANGED //蓝牙开启、关闭
BluetoothAdapter.ACTION_SCAN_MODE_CHANGED //蓝牙扫描模式变化,是否可被搜索和连接
BluetoothDevice.ACTION_PAIRING_REQUEST //配对请求
BluetoothDevice.ACTION_PAIRING_CANCEL //配对取消
BluetoothDevice.ACTION_BOND_STATE_CHANGED //配对状态变化
BluetoothDevice.ACTION_ACL_CONNECTED //连接变化
BluetoothDevice.ACTION_ACL_DISCONNECTED //断开变化
BluetoothDevice.ACTION_FOUND //Intent 的BluetoothDevice 对象,包含设备的基本信息(名称、MAC 地址、RSSI 信号强度等)
BluetoothAdapter.ACTION_DISCOVERY_STARTED //开始扫描设备
BluetoothAdapter.ACTION_DISCOVERY_FINISHED //扫描设备结束
BluetoothAdapter.ACTION_DISCOVERY_STARTED //蓝牙可见性开始
BluetoothAdapter.ACTION_DISCOVERY_FINISHED //蓝牙可见性结束

蓝牙广播比较多,并不是所有广播都用到,根据实际情况使用就行;

需要注意的是,蓝牙的广播有一部分只能动态注册,静态注册无效。

4、demo示例

在这里插入图片描述

能简单扫描到蓝牙列表和进行连接忘记;查看基本状态;

点开“其他”,显示其他功能:

在这里插入图片描述

蓝牙demo说明:

1、demo逻辑处理比较简单,有一定的bug,后期可以根据需求优化;
2、蓝牙很多逻辑判断使用SettingsLib的一套逻辑会方便很多;上面demo使用的是原生的接口方法;
3、本来想做两个Activity的,一个原生的,一个调用SettingsLib实现基本功能;
4、原生部分开发了一些,SettingsLib调用的方式基本没做,有需求的自己试试,
原生Settings很多接口就是调用的SettingsLib的api;

三、其他

1、Android 蓝牙开发调试小结

(1)蓝牙开发如果使用原生接口,很多状态无法判断,比如列表中某个蓝牙是否在连接状态无法判断;
(2)蓝牙开发如果使用SettingsLib封装的接口,会方便很多,比如获取的列表可以判断是否保存、连接状态;

2、Android14 蓝牙启动流程

主要流程:

1、应用端 --> BluetoothAdapter.enable();
2、BluetoothAdapter.java --> mManagerService.enable(mAttributionSource);
3、BluetoothManagerService.java -->  doBind AdapterService
4、AdapterService.java --> enableNative();
5、com_android_bluetooth_btservice_AdapterService.cpp 执行对应的native方法

详细介绍:

https://blog.csdn.net/wenzhi20102321/article/details/142422355

3、Android14 蓝牙 BluetoothService 启动和相关代码介绍

蓝牙开关和使能开发主要用到:BluetoothService、BluetoothManagerService、BluetoothManager、BluetoothAdapter 这几个系统相关类。
某个蓝牙的配对、连接、断开 使用的是 BluetoothDevice 对象。

蓝牙开关状态不记忆或者打开异常就可以看看BluetoothManagerService的日志,
里面有打开关闭相关过程日志和时间点,这个对问题分析有一定的帮助。

详细介绍:

https://blog.csdn.net/wenzhi20102321/article/details/142264944

4、Android13 蓝牙协议属性配置详解

Android系统中蓝牙协议是否使能一般是通过一个属性值,如果这个属性值设置为false,

会导致这个协议的服务未启动,也就是说这个蓝牙功能会没有作用。

比如 Android 蓝牙传输文件协议是opp,如果opp未使能,那么整个系统是不支持蓝牙文件传输的;

还有a2dp是声音相关的协议。

在Android13之前的版本,我们可以通过 config.xml 中的 profile_supported_a2dp 属性控制蓝牙的某个协议是否使能;

Android13 以及更新的版本蓝牙协议使用prop属性使能属:

https://blog.csdn.net/wenzhi20102321/article/details/139703045

5、Android13 原生设置应用蓝牙配对代码分析研究

每个Android 版本的Settings对蓝牙处理的逻辑都有一些差异,可以对比看看谷歌进行了哪些优化。

有些中性的设置是从旧代码移植过来的,在新版本上会有些bug,可以参考原生设置解决。

Android13 原生Settings 中蓝牙连接的相关代码分析:

https://blog.csdn.net/wenzhi20102321/article/details/131648367

6、Android 蓝牙相关广播介绍

蓝牙app中的广播接收器onReceive 的蓝牙相关广播

蓝牙相关广播主要包括:蓝牙开关,蓝牙连接,蓝牙状态改变,蓝牙配对等等等等。

https://blog.csdn.net/wenzhi20102321/article/details/134956116

7、Android9 查看连接多个蓝牙耳机查看使用中的蓝牙耳机

Android 9.0之后,支持一台手机可以同时连接多个蓝牙设备。

但是判断那个蓝牙设备是使用中,需要经过一些复杂判断才知道:

https://blog.csdn.net/wenzhi20102321/article/details/133715403

8、Android13 不能静态注册的几个广播

介绍一些广播相关的知识,主要是静态广播注册无效的介绍 :

https://blog.csdn.net/wenzhi20102321/article/details/134956090

蓝牙有些广播只能动态注册才能监听到。

http://www.dtcms.com/wzjs/299930.html

相关文章:

  • 无锡个人网站建设网站推广方式
  • delphi可以做网站吗电脑课程培训零基础
  • 网站策划书案例展示百度站长工具怎么查排名
  • 自助建站免费自助建站网站百度校招
  • 网站建设项目书电子商务推广
  • 怎么在百度建个网站网络推广策划方案怎么写
  • 用啥网站做首页网络营销工作内容和职责
  • 怎么用域名进网站百度竞价广告推广
  • 中国建设银行手机银行下载官方网站微信营销神器
  • 郑州做个人网站的公司产品关键词怎么找
  • 怎么做外贸网站推广百度教育官网登录入口
  • 做网站优化的好处企业管理培训班哪个好
  • 可以做任务挣钱的网站山东企业网站建设
  • 我有网站 怎么做淘宝推广的哪些平台可以免费打广告
  • 燕十八html教程网站建设信息流广告投放工作内容
  • 网站建设服务的具体条件网络推广的具体方式
  • 大连日语网站开发网站推广软件有哪些
  • 网站建设商标在哪个类别免费广告发布平台app
  • 技术网站建设电商网站建设
  • 网站怎么做的有创意什么叫做seo
  • 长沙装修公司口碑最好的是哪家福州seo网络推广
  • 网站上传文章怎么做百度网页推广
  • 黄骅港赶海免费最佳地点是哪里seo培训优化
  • 上海网站建设 网站开发情感链接
  • 河北网站制作报价云资源软文发布平台
  • 如何做内网站的宣传栏烘焙甜点培训学校
  • 网站开发语言 知乎销售网站
  • 注册安全工程师考哪四门抖音关键词优化排名
  • 定制营销型网站北京seo相关
  • 网站树状型结构优化市场策划方案