MTK 相关部分FAQ收集

编写于

[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 来编译:

  1. 在应用程序的 AndroidManifest.xml 中的 manifest 节点中加入 android:sharedUserId=“android.uid.system”这个 >属性。
  2. 修改它的 Android.mk 文件,加入 LOCAL_CERTIFICATE := platform 这一行
  3. 使用 mm 命令来编译,生成的 apk 就有修改系统时间的权限了。

第二个方法使用系统签名文件来处理:

  1. 同上,和系统相同的 uid. Android 的系统用户 id 是 android.uid.system , 在 Manifest 里面添加android:sharedUserId=“android.uid.system”。
  2. 相同的系统签名。包签名需要用到 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 提示错误是一样的。

===

来自 http://www.jiquan123.com/thread/10/33.htm