码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-09-15 19:08:18      阅读:445      评论:0      收藏:0      [点我收藏+]

标签:mtk

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);
}

}

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

标签:mtk

原文地址:http://132588761.blog.51cto.com/13248876/1965628

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!