推广 热搜:   公司  企业  中国  快速    上海  行业  设备  未来 

Android系统蓝牙需要留意的20个必看知识点旋转手机「Android系统蓝牙需要留意的20个必看知识点」

   日期:2025-01-12     移动:http://fabua.ksxb.net/mobile/quote/7245.html
:在文件管理器中无法分享rar压缩包

在default情况下,Android无法通过蓝牙发送、接收rar文件。(可能是因为没有自带解压工具的原因)。如果需要实现收发rar文件,可依据下面方法进行修改 。

1.在packages/apps/Bluetooth/AndroidManifest.xml的activity
android:name=".opp.BluetoothOppLauncherActivity"的android.intent.action.SEND
以及android.intent.action.SEND_MULTIPLE中分别加入了<data android:mimeType="application/rar" />
2. 在packages/apps/Bluetooth/src/com/android/bluetooth/opp/Constants.java中的public

static final String[] ACCEPTABLE_SHARE_INBOUND_TYPES = new String[]里添加了"application/rar"

:蓝牙设置界面旋转会停止蓝牙搜索


正在搜索蓝牙时旋转手机会停止搜索
在Settingsapp的Androidmanafest.xml中对<activity android:name=".SubSettings"这个activity属性修改,
android:configChanges="mcc|mnc|keyboardHidden|keyboard|navigation"

修改为android:configChanges="mcc|mnc|keyboardHidden|keyboard|navigation|orientation|screenSize"


:默认蓝牙连线超时时间如何客制化

[测试条件]测试机与辅助机分别打开蓝牙并成功建立连接
1、辅助机关机或不在有效范围内
2、测试机蓝牙发送一个文件给辅助机
3、点击发送开始计时
4、提示发送失败结束计时
测试发现一般需要大约20S左右的时间,测试机才会以Toast的形式提示用户。

这个超时时间其实是BT Firmware 建立蓝牙连线的超时时间,术语为page timeout。
修改这个时间会影响所有蓝牙连线。比如说如果将这个timeout改短,对于一些距离比较远、周边无线环境比较差的设备来说,能够成功连接的可能性就会下降。故需要权衡这个值。
配置这个page timeout的地方是在:/vendor/mediatek/proprietary/external/bluetooth/bt_cust/bt_cust_table.h默认值为

.name = "pageTimeout",
105 .value = (void*)0x3800,
0x3800 = 14336
14336 * 0.625 = 8960(ms)
BT Firmware会将该timeout时间再乘以2,所以最终的时间是17920(ms)。这里建议修改为0x2000,以缩短这个超时等待时间。

:飞行模式下禁止打开蓝牙

L版本代码,在飞行模式下如何禁止打开蓝牙(包括从widget、notification菜单,甚至部分第三方apk打开蓝牙都禁止)
其修改的路径为:/frameworks/base/services/core/java/com/android/server/BluetoothManagerService.java
需要修改的函数为:

 
添加备注的代码即检测飞行模式是否打开,如果打开就返回,不去打开蓝牙。 


:在蓝牙settings界面中,点击配对设备的设置按钮产生一个对话框,此时如果旋转屏幕,设置对话框自动消失。

在蓝牙settings界面中,点击配对设备的设置按钮产生一个对话框,此时如果旋转屏幕,设置对话框自动消失。这是google default 设计。
开始时,google的设计是对话框不会消失,但是由于:
1.是DeviceProfileSettings 是 alertDialog ,生命周期与与Bluetooth Settings Activity是不相关联的.
2.所以转屏或者切换系统语言时,Bluetooth Settings Activity 会被destroy并重新recreate.
3.alertDialog 中嵌入的fragment 会被destroy,但是因为alert dialog 本身与activity 生命周期不相关,因此无法recreate.
4.因此在此launch 起来的alert dialog, 里面就会嵌入一个僵尸fragment, 导致出现异常.
因此,google针对这个异常,提供了唯一的一个解法是在onDestroy这里把对话框dismiss了,由于在转屏时会调用onDestroy,因此对话框会消失。
综上所述,建议不去做修改


:L版本如何修改使打开蓝牙时在有配对蓝牙设备的情况下,不自动扫描。

L版本在进入蓝牙设置界面(BluetoothSetting)时,会自动开始搜索新的蓝牙设备。和KK版本表现不同。
KK版本在进入蓝牙设置界面时,如果已有配对设备,则不会开始自动搜索新的蓝牙设备。L版本则都会搜索,在已有配对设备的情况下,客户通常希望连接已有的设备,而不是重新搜索新的设备。修改其实很简单。
修改:packages/apps/Settings/src/com/android/settings/bluetooth/BluetoothSettings.java

修改后,重新build settings即可。 


:怎样使蓝牙接收文件在空间满时产生“空间不足”的提示

蓝牙在接收文件过程中,因为接收方空间不足而传输失败,但是用户并不知道是“空间不足”而引起。
要求接收到蓝牙传输的文件时也提示“您的存储空间已满”。
请修改packages/apps/Bluetooth/src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java

 

:L版本怎样取消蓝牙高级设置

L版本中取消蓝牙高级设置,让高级设置不打包到Image并在设置菜单中没有打开高级设置的按钮。
修改:device/mediatek/(platform)/device.mk
把此文件中的PRODUCT_PACKAGES += MtkBt删除就可以了。同时把btconfig.xml中的所有高级属性设置为false。

:在有蓝牙配对请求时,有两种表现:弹出pair框或者到notification里,如何使其一直都是弹出pair框?

目前我们的流程基本上是在bt setting(settings, device picker, profilesetting)的界面(各branch可能不同),才会显示配对请求对话框,其它界面都会跑到notification里面。目前,有客户需要在任何时候都弹出pair框。
可以这样修改:

在packagesappsSettingssrccomandroidsettingsbluetoothangel下, 将bluetoothPairingRequest.java下的onReceive函数中,

即:只保留当屏幕是亮的时候,就弹出pair对话框。 


:第三方应用程序中获取系统蓝牙状态的方法

建立BroadcastReceiver对象,接收BluetoothAdapter.ACTION_STATE_CHANGED动作,在EXTRA_STATE和EXTRA_PREVIOUS_STATE包含了现在状态和过去的状态,状态有四种

1:STATE_TURNING_ON  ---正在开启

2:STATE_ON  ---已经开启

3:STATE_TURNING_OFF  ---正在关闭

4:STATE_OFF  ---已经关闭

十一:在亮屏时没有蓝牙配对请求提示音

在亮屏状态下,如果有其他设备来进行配对,此时没有配对请求提示音
在亮屏状态下,如果有其他设备来进行配对,此时没有配对请求提示音。这是Google的设计,在亮屏的情况下,如果有其他设备来进行配对,此时只会在状态栏弹出Notification,而不会有提示音。在灭屏的状态下,如果有配对请求被接收到,此时是有配对提示的。
如果需要在亮屏的时候也有配对请求提示音,修改起来其实非常简单。
修改文件:
alpspackagesappssettingssrccomandroidsettingsbluetoothBluetoothPairingRequest.java在onRecieve方法中有以下语句:

 
将else中的语句copy到if语句context.startActivity(pairingIntent);这句之后就
可以了

十二:手机灭屏时接受到配对时点亮屏幕

手机灭屏时接受到配对屏幕不点亮。要修改的文件:
alpspackagesappsBluetoothsrccomandroidbluetoothbtserviceRemoteDevices.java
第一步:在文件头部
import android.os.PowerManager;
第二步:在RemoteDevices类中定义变量
private PowerManager.WakeLock mWakeLock;
第三步:在RemoteDevices的构造函数中添加:
 
第四步: 

 
第五步: 

 
第六步: 

 

十三:已配对蓝牙设备重命名,重新配对名字不更新

测试机蓝牙名称A5QP,辅助机蓝牙名称T650w,第一次配对成功后,再取消配对,修改
辅助机的蓝牙名称为12345,此时再次配对,发现测试机显示配对T650W成功,而不是配对12345成功。
修改packagesappsBluetoothsrccomandroidbluetoothbtserviceRemoteDevices.java文件:
添加1条语句,位置如下:

 

十四:如何修改蓝牙OPP接收文件默认存储地址?

如何修改蓝牙OPP接收文件默认存储地址?
在KK版本上,请修改packages/apps/Bluetooth/src/com/android/bluetooth/opp/Constants.java文件中如下代码:
public static final String DEFAULT_STORE_SUBDIR = "/bluetooth";

十五:对已建立蓝牙连接的终端重命名后,对方发送文件时,如何修改让其显示修改之后的名称

对已建立蓝牙连接的终端重命名后,对方发送文件时,如何修改让其显示修改之后的名称。
修改
packages/apps/Bluetooth/src/com/android/bluetooth/opp/BluetoothOppManager.java中的getDeviceName方法。

修改完后,编译packages/apps/Bluetooth/,把编译出来的Bluetooth.apk使用adb push到手机中的/system/app 下面,重新启动手机即可。 


十六:如何打开蓝牙语音拨号功能

如何打开蓝牙语音拨号功能?
修改mediatek/external/bluetooth/bt_cust/bt_cust_table.h文件,将HFPVoiceRecognition属性的值改为1。
{
.name = "HFPVoiceRecognition",
.value = (void*)1,
},

十七:如何修改蓝牙搜索设备的最大数目


蓝牙一次搜索设备所上报的最大数目是25,是否可以修改为其他值可以修改为25个以下的值,由于library限制不可以改到大于25
具体修改请参考如下方法
android_server_BluetoothService.cpp在该文件修改如下函数的如下参数

 

十八:蓝牙setting界面,已配对的蓝牙耳机设备下面“已连接”,“已连接(无手机)”,“已连接(无媒体)”字样的含义

“已连接”,表示该蓝牙耳机设备与手机之间,已有建立ACL link,并且有连接handsfreeprofile和A2DP profile。
“已连接(无手机)”,表示该蓝牙耳机设备与手机之间,已有建立ACL link;但是,只连接上A2DPprofile,而没有连接handsfree profile.
“已连接(无媒体)”,表示该蓝牙耳机设备与手机之间,已有连接ACL link;但是,只连接上Handsfree profile,而没有连接A2DP profile.

需要额外注意的是:
“已连接(无手机)”,是在进行配对连接或重新连接的过程中,出现Handsfree profile没有连接上时,才会出现;
“已连接(无媒体)”,是在进行配对连接或重新连接的过程中,出现A2DP profile没有连接上时,才会出现;
对于蓝牙耳机设备来说,如果将Handsfree profile和A2DP profile都断开的话,则BT protocol
stack会认为该蓝牙耳机设备已断开连接,从而主动发起ACL link的链路。此时,设备下面的字样也会同时消失。

十九:开机蓝牙默认打开

需求
1、Download后开机,蓝牙默认开启;
2、恢复出厂设置后开机,蓝牙默认开启;
3、正常关机后开机,蓝牙恢复关机时保存的状态;

按如下方式修改:

 

本文地址:http://fabua.ksxb.net/quote/7245.html    海之东岸资讯 http://fabua.ksxb.net/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号