蓝牙默认被检测时间改为 永不超时

1、修改AdapterProperties.java文件
a) 添加1行:
import android.content.SharedPreferences;//added MTK
b) 添加2行,位置如下:
// Lock for all getters and setters.
// If finer grained locking is needer, more locks
// can be added here.
private Object mObject = new Object();
private final SharedPreferences mSharedPreferences;//added MTK
private static final String KEY_SCAN_DISCOVERABLE_MODE = "bt_scan_discoverable_mode";//added MTK
public AdapterProperties(AdapterService service) {
c)添加1行,位置如下:
public AdapterProperties(AdapterService service) {
mService = service;
mAdapter = BluetoothAdapter.getDefaultAdapter();
mSharedPreferences = service.getSharedPreferences("ScanModeSharedP", service.MODE_MULTI_PROCESS);//added
MTK
}
d)修改函数onBluetoothReady(),注释掉5行,添加5行,位置如下:
void onBluetoothReady() {
Log.d(TAG, "ScanMode = " + mScanMode );
Log.d(TAG, "State = " + getState() );
// When BT is being turned on, all adapter properties will be sent in 1
// callback. At this stage, set the scan mode.
synchronized (mObject) {
if (getState() == BluetoothAdapter.STATE_TURNING_ON &&
mScanMode == BluetoothAdapter.SCAN_MODE_NONE) {
/* mDiscoverableTimeout is part of the
adapterPropertyChangedCallback received before
onBluetoothReady */
//deleted mtk
// if (mDiscoverableTimeout != 0)
// setScanMode(AbstractionLayer.BT_SCAN_MODE_CONNECTABLE);
// else /* if timeout == never (0) at startup */
// setScanMode(AbstractionLayer.BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);
/* though not always required, this keeps NV up-to date on first-boot after flash */
// setDiscoverableTimeout(mDiscoverableTimeout);
//deleted end
//added MTK
mScanMode = mSharedPreferences.getInt(KEY_SCAN_DISCOVERABLE_MODE,
BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
if(mScanMode == BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE){
setScanMode(AbstractionLayer.BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);
Log.d(TAG, "mSharedPreferences setScanMode = " + mScanMode );
}else
setScanMode(AbstractionLayer.BT_SCAN_MODE_CONNECTABLE);
Log.d(TAG, "onBluetoothReady setScanMode = " + mScanMode );
//added end
}

}

}
e)修改函数onBluetoothDisable(),添加2行,位置如下:
void onBluetoothDisable() {
// When BT disable is invoked, set the scan_mode to NONE
// so no incoming connections are possible
//Set flag to indicate we are disabling. When property change of scan mode done
//continue with disable sequence
debugLog("onBluetoothDisable()");
mSharedPreferences.edit().putInt(KEY_SCAN_DISCOVERABLE_MODE, mScanMode).apply();//added MTK
Log.d(TAG, "mSharedPreferences ScanMode = " + mScanMode );//added MTK
mBluetoothDisabling = true;
if (getState() == BluetoothAdapter.STATE_TURNING_OFF) {
setScanMode(AbstractionLayer.BT_SCAN_MODE_NONE);
}

}
2、修改BluetoothDiscoverableEnabler.java文件
a) 修改getDiscoverableTimeout()函数,修改1行:
private int getDiscoverableTimeout() {
......
int timeout = SystemProperties.getInt(SYSTEM_PROPERTY_DISCOVERABLE_TIMEOUT, -1);
if (timeout < 0) {
String timeoutValue = mSharedPreferences.getString(KEY_DISCOVERABLE_TIMEOUT,
VALUE_DISCOVERABLE_TIMEOUT_NEVER);//modified MTK
......
}
3、 修改
\packages\apps\Settings\src\com\android\settings\bluetooth\BluetoothSettin
gs.java文件
a) 修改函数updateContent(),添加1行,位置如下:
if (mDiscoverableEnabler == null) {
mDiscoverableEnabler = new BluetoothDiscoverableEnabler(getActivity(),
mLocalAdapter, mMyDevicePreference);
mDiscoverableEnabler.resume();
mDiscoverableEnabler.reBootDiscoverable();//added MTK
}
b) 修改函数onBluetoothStateChanged(),添加7行,位置如下:
public void onBluetoothStateChanged(int bluetoothState) {
super.onBluetoothStateChanged(bluetoothState);
//added MTK
Log.d(TAG, "onBluetoothStateChanged, bluetoothState " + bluetoothState);
if(bluetoothState == BluetoothAdapter.STATE_ON){
if (mDiscoverableEnabler != null){
mDiscoverableEnabler.reBootDiscoverable();
Log.d(TAG, "onBluetoothStateChanged, isBluetoothBootup " +
isBluetoothBootup);
}

}
//added end
updateContent(bluetoothState, true);
4、 修改
\packages\apps\Settings\src\com\android\settings\bluetooth\BluetoothDiscov
erableEnabler.java文件
添加函数reBootDiscoverable(),
public void reBootDiscoverable() {
int mode = mLocalAdapter.getScanMode();
Log.d(TAG, "reBootDiscoverable(): getScanMode = " + mode);
Log.d(TAG, "reBootDiscoverable(): getDiscoverableTimeout = " +
getDiscoverableTimeout());
if (mode == BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
setEnabled(true);
}

}

时间: 2025-01-01 03:17:53

蓝牙默认被检测时间改为 永不超时的相关文章

OpenMesh 将默认的 float 类型改为 double 类型

OpenMesh 中默认的数据类型都是 float 类型的,如果要将其默认的 float 类型改为 double 类型,可以这么做: #include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh> #include <OpenMesh/Core/IO/MeshIO.hh> #include <OpenMesh/Core/Mesh/Handles.hh> #include <OpenMesh/Core/Mesh/Trai

关于时间的操作(JavaScript版)——年月日三级联动(默认显示系统时间)

这个功能是大学时自己使用纯JavaScript写的,没有借助Jquery,呵呵呵,看起来有点繁琐,可是在当时依稀的记得功能实现后自己好好的高兴一把了呢,从现在来看那时候的自己是多么的幼稚.多么的无知: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>年月日三级联动(默认显示系统时间)</title> <

超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

我在玩webservice中遇到这个问题,情况是:(.net4.0)之前用的是好的,更新系统后出错.vs运行是好的,IIS运行出错..net底层抛错.换成.net2.0后完美运行.所以.net4.0出问题. ========================================================================================================= (转) 问题解决方法: 解决办法 1.在代码里面,把未关闭的连接关闭 2.扩大共

【转】时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

超时时间已到.超时时间已到,但是尚未从池中获取连接.出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小. 解决办法1.在代码里面,把未关闭的连接关闭2.扩大共享池,方法如下:解决方法可以是修改连接池的连接生存期,因为默认值是60秒,即连接从应用程序被释放后可以在池中保存的时间.具体操作步骤如下:如果是ODBC的话,则可以在ODBC Data Source Administrator中手动更改,该程序位于“Start”菜单中的“Programs”->\"Adminstrative

[转]超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

超时时间已到.超时时间已到,但是尚未从池中获取连接.出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小. 解决办法:首先要做的是在我们使用连接后立即关闭连接.如果没有关闭连接那么连接将保存到连接池中知道GC来销毁.这种情况下你以为连接池没有到达最大值但实际上连接池已经到达了最大值 其次我们可以通过连接字符串中的Max Pool Size = N;来动态扩大连接池中的连接最大数量. 说明: 也就是在connectionString中如果未指定max pool size的值,则max p

ECSHOP后台登陆后一段时间不操作就超时的解决方法

ECSHOP后台登陆后一段时间不操作就超时的解决方法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2012-05-27 客户生意比较好,因此比较忙,常常不在电脑前,经常打开后台长时间不操作,等回到电脑前操作时,每次都超时,需要从新登陆,因此,客户希望后台的登录时间尽量长些,解决这个问题主要是要在date/config.php 中设置session的值,session默认的是“1440”,可尽量大些,比如“3600”等等!

[bug]超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

引言 自己弄了一个小项目——日程管理系统,在初始化日期时,查询了数据库,每个日期就会查询一次数据库,就导致了这个问题. 问题 出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the

防止shell脚本长时间运行导致ssh超时

在一些对安全性要求较高的场景下,ssh的超时时间是管理员预先设置好的,在闲置一段时间后ssh连接会自动断开.这种情况下如果通过ssh执行脚本,而脚本运行时间又比较长的话,会导致ssh客户端和服务器长时间无交互而超时,命令执行失败. 使用bash子进程可以解决这种问题,思路是由子进程执行具体的逻辑代码,而由主进程来监控子进程的执行状态,同时向控制台输出字符来keep alive. bash创建子进程有多重方式,这里使用"()",然后用"&"将其放在后台执行.虽

防止shell脚本长时间执行导致ssh超时

在一些对安全性要求较高的场景下.ssh的超时时间是管理员预先设置好的,在闲置一段时间后ssh连接会自己主动断开. 这样的情况下假设通过ssh运行脚本,而脚本运行时间又比較长的话.会导致sshclient和server长时间无交互而超时,命令运行失败. 使用bash子进程能够解决这样的问题,思路是由子进程运行详细的逻辑代码,而由主进程来监控子进程的运行状态,同一时候向控制台输出字符来keep alive. bash创建子进程有多重方式.这里使用"()",然后用"&&qu