1. 程式人生 > >藍牙默認被檢測時間改為 永不超時

藍牙默認被檢測時間改為 永不超時

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

}

藍牙默認被檢測時間改為 永不超時