[FAQ09768][legacy wi-fi]蓝牙听歌,wifi 连接AP 时,声音有卡断
[DESCRIPTION]
蓝牙听歌,wifi 连接 AP 时,声音有卡断
[SOLUTION]
在原本的設計,在 WIFI 進行 DHCP 連接時,會有約 1.5 秒的時間會把天線切回 WIFI。 如果 WF 環境不好或是重傳次數太多,會導致這 1.5 秒都被 WIFI 拿來用,此時 BT 在聽音樂就會有斷音的現象。 目前的改動是當 BT OPP or A2DP 把 1.5 秒改成 70ms,減少搶占 BT 天線的時間。
6582 patch:ALPS01065806
===
[FAQ12796]KK 版本收到短信后,点亮屏的操作
[DESCRIPTION]
目前收到短彩信之后,是不会点亮屏幕的,如果要实现这个需求,在 JB5 之前的版本,请参考 FAQ02971 收到新短信时,点亮屏幕,如果是 KK 版本,请按照此方法修改
[SOLUTION]
alps/packages/apps/mms/src/comandroid\mms\transation\MessagingNotification.java
private static void updateNotification()方法中
if (isNew) {
//MessageUtils.handleNewNotification(context, messageCount);
/// M: add for OP09 @{
if (MmsConfig.isSupportCTFeature()) {
wakeUpScreen(context);
// 这里其实就是唤醒屏幕的方法,但是因为是按照 OP09 的需求做的,里面要
// 求在插入耳机的状况下才会唤醒, 如果可以接受, 就请去掉上面的
// if 判断, 如果不接受, 就在下面的 else 分支另外写方 法
} else {
PowerManager powerManager = (PowerManager)(context.getSystemService(Context.POWER_SERVICE));
PowerManager.WakeLock wakeLock = null;
wakeLock = powerManager.newWakeLock(
PowerManager.FULL_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.ON_AFTER_RELEASE,
"MMS_wake_lock");
long wakeUpTime = 0;
try {
ContentResolver cr = context.getContentResolver();
wakeUpTime = android.provider.Settings.System.getInt(cr, Settings.System.SCREEN_OFF_TIMEOUT);
} catch (SettingNotFoundException e) {
MmsLog.e(TAG, “Exception occured in wakeupScreen()”);
}
wakeLock.acquire(wakeUpTime);
}
}
}
===
[FAQ00366]如何使 Android 应用程序获取系统权限
[DESCRIPTION]
如何使 Android 应用程序获取系统权限
[SOLUTION]
在 android 的 API 中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这 个函数都是没用的,无论模拟器还是真机,在 logcat 中总会得到"Unable to open alarm driver: Permission denied". 这个函数需要 signatureOrSystem 等级的 permission 才能使用。有两种方法可以处理,来得到系统权限。
第一个方法直接修改编译,需要在 Android 系统源码的环境下用 make 来编译:
- 在应用程序的 AndroidManifest.xml 中的 manifest 节点中加入 android:sharedUserId=“android.uid.system"这个
属性。
- 修改它的 Android.mk 文件,加入 LOCAL_CERTIFICATE := platform 这一行
- 使用 mm 命令来编译,生成的 apk 就有修改系统时间的权限了。
第二个方法使用系统签名文件来处理:
- 同上,和系统相同的 uid. Android 的系统用户 id 是 android.uid.system , 在 Manifest 里面添加android:sharedUserId=“android.uid.system”。
- 相同的系统签名。包签名需要用到 android 提供的 signapk,但很遗憾,我们的开发包里面并没有,需要您手动的从源码里面编译,在 2.2 的版本中,源码路径是:froyo\build\tools\signapk。
然后从源码路径 froyo\build\target\product\security 中取出两个系统签名文件
- platform.pk8
- platform.x509.pem
就可以对 eclipse 编译好的 apk 签名了,(注: 编译好的 apk 在 bin 目录下)。
形式是:
Java –jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk.
完成这两部后,在运行之前,您还要从模拟器上卸载掉原来的相同程序,因为签名改了,不然会报错不能安装。 对于在模拟器上进行 setCurrentTimeMillis 虽然我们能够修改模拟器的时间了,这个方法的返回值仍然是 false, 可能 是不能真正的修改系统的时钟吧。在 Log 中的提示是:
08-16 08:29:24.307: WARN/SystemClock(125): Unable to set rtc to 1281918564: Invalid argument.
这个和 android 模拟器里面自带的 setting 里面的修改时间 Log 提示错误是一样的。
===