bug1:字符串问题
首先复现bug:点击URL,然后connect,出现了“load url” ,将其韩文的意思改变即可。
进入message的目录:packages/apps/Mms/res 进入资源文件,英文默认是values,韩文是values-ko。
在source insight中导入项目,同步文件,韩文xml乱码,因为上锁,即加密。此时用UltraEdit编辑。
cd L7-R1
cd android 编译在android目录下
.build_target.sh L7-R1 -j2 systemimage 编译
如果编译完成,相应的apk文件的时间就会更新
然后找到apk文件,复制到桌面
在cmd中执行 adb install -r 文件 就可以安装到手机上,进行查看修改的结果
比如我编辑的Mms的内容,会有相应的Mms.apk,这是就应该进入Mms的目录下,
git status 查看状态
git pull 将别人的代码拉下来,得到别人最新的代码,之后再提交自己的代码
git status 会发现自己修改过的文件变为了红色
git add [文件目录] (目录是红的文件名)
git status 会发现红色变成的绿色
git commit -m “niejianjian [版本号] 日期 问题描述”
git status 绿色的也消失
git push 提交服务器
bug2:自我练习回退操作
由于我之前提交了(commit) 了 settings.IAB 文件,所以执行git reflog会出现如下内容:
ef474dc HEAD@{0}:commit :add settings.IAB
60628de HEAD@{1} : pull : Fast-foreard
418cb03
git reset 60628de 回退对应的操作(撤销)
git status 此时查看状态,发现又回到了add操作以前了
git pull 取回更新
git status 查看状态
(有问题就进行处理,如需git checkout --)
git push 提交服务器
(Everything up-to-date)显示已经更新了
bug3: end key结束应用,使其不出现在recent
要求就是在应用界面,点击end key,回到桌面,并且terminating 当前的app。使其不要出现在rencent中。
之前end key的操作就是直接将home key的值给了它,让它执行home的操作。
首先就是获得topActivity的名字,然后获得当前应用的pid。然后如果这个应用不在白名单中,就直接执行remove,销毁这个应用
// keyCode = KeyEvent.KEYCODE_HOME; [Niejianjian 0916 delete ]
// The following contents : Niejianjian 0916 add
// String oldTopAcName = null;
String nowTopAcName = null;
// int persistentId = 0;
ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
if(mActivityManager != null && down){
ComponentName cn = mActivityManager.getRunningTasks(1).get(0).topActivity;
oldTopAcName = cn.getClassName();
List recentTasks = am.getRecentTasksForUser(
1, ActivityManager.RECENT_IGNORE_UNAVAILABLE, UserHandle.CURRENT.getIdentifier());
ActivityManager.RecentTaskInfo recentInfo = recentTasks.get(0);
persistentId = recentInfo.persistentId;
}
// Go home!
if(!down){
if(!SystemProperties.getBoolean("persist.sys.keyguard.lock", false)
&& !SystemProperties.getBoolean("persist.sys.factorykit.keytest", false)) {
if(!mHomeLongPressed) {
boolean ignoreGoHome=false;
if(mActivityManager != null){
ComponentName cn = mActivityManager.getRunningTasks(1).get(0).topActivity;
nowTopAcName = cn.getClassName();
android.util.Log.i("KEY_Niejianjian_Test","oldTopAcName = " + oldTopAcName );
if (!oldTopAcName.contains("com.android.launcher2.Launcher") && !oldTopAcName.contains("com.bns.ptt.daehap.a1")
&& !oldTopAcName.contains("com.android.dialer") && !oldTopAcName.contains("com.android.music")){
android.util.Log.i("KEY_Niejianjian_Test","oldTopAcName = " + oldTopAcName + " & persistentId = " +persistentId );
if(oldTopAcName.contains("com.android.deskclock")){
Settings.System.putInt(mContext.getContentResolver(),"com.android.deskclock.remove.key",1);
}
if(oldTopAcName.contains("com.android.contacts")){
Settings.System.putInt(mContext.getContentResolver(),"com.android.contacts.remove.key",1);
}
am.removeTask(persistentId, ActivityManager.REMOVE_TASK_KILL_PROCESS);
}
Log.d("cgp","current activity className:"+cn.getClassName());
if(cn.getClassName().equals(filterActivityName[0]) || cn.getClassName().equals(filterActivityName[1])){
ignoreGoHome = true;
}
}
Log.d("cgp","ignoreGoHome:"+ignoreGoHome);
if(!ignoreGoHome){
launchHomeFromHotKey();
}
}
return -1;
}
bug4:end key no tone sound
在keycode == KeyEvent.KEYCODE_ENDCALL_HOME中,加上以下代码,就获得获得系统声音了
AudioManager audioManagerw = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
if (audioManagerw != null && down && repeatCount==0) {
audioManagerw.playSoundEffect(AudioManager.FX_KEY_CLICK);
}
bug5:PTT Key 和power同时点击过快时,出现的问题
锁屏的流程是这样的,当点击power -> screen off -> LockScreen onCreate
在screen off状态,点击ptt key,就是点亮屏幕,然后调出ptt界面,拨出电话。
如果点击了power,极短的时间之后点击ptt键,就会没有出现LockScreen。最后跟踪流程,发现点击power之后,延迟了500ms才调用的LockScreen
mHandler.postDelayed(mLockKeyEnable, 50);
将500ms改为50ms,就很大程度的避免了这个问题。
bug6:ptt key和power点击过快
正常流程是power灭屏,起lockscreen,然后ptt,亮屏,销毁lockscreen,然后起ptt界面,ptt finished,lockscreen 起。
有时候会出现这样一个bug,也是极快点击的情况下,偶尔会出现ptt界面和lock screen界面同时出现,当ptt finished的时候,就会出现黑屏。
这是因为ptt界面起的时候,要判断当前的界面如果是锁屏,就会销毁锁屏,然后弹出ptt界面。
增加判断,当起lockscreen的是,判断当前界面是不是ptt,如果是的话,就重复延迟发送,每过100ms,判断一下,直到当前界面不是ptt的时候,再启动lockscreen界面
private Runnable mLockKeyEnable = new Runnable() {
@Override
public void run() {
//Log.d("chen","LockKey Runnable");
if(!mLockKeyHandle)
return;
//Log.d("chen","mLockKeyEnable Runnable : mPowerManager.isScreenOn()="+mPowerManager.isScreenOn());
// niejianjian 20151029 add "&& lockFlags"
if(mPowerManager.isScreenOn() && lockFlags)
return;
// niejianjian 2015 add and modified following contents
ComponentName cn = mActivityManager.getRunningTasks(1).get(0).topActivity;
android.util.Log.i("NieJianJian_LockSreen","class --> PhoneWindowManager ||| mLockKeyEnable ---> topAtyName = " + cn.getClassName());
if (cn.getClassName().equals("com.bns.ptt.daehap.a1.ui.callactivity.CallUIActivity")){
lockFlags = false;
ii++;
android.util.Log.i("NieJianJian_LockSreen","++++++++++++++++++++ " + ii);
mHandler.postDelayed(mLockKeyEnable, 100);
} else {
try {
android.util.Log.i("NieJianJian_LockSreen","--------------------- " + ii);
lockFlags = true;
mLockKeyHandle = false;
Intent lock = new Intent();
lock.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
lock.setClassName("com.unc.lockscreen","com.unc.lockscreen.LockSreen");
mContext.startActivityAsUser(lock, UserHandle.CURRENT);
ii = 0;
} catch (ActivityNotFoundException e) {
Slog.w(TAG, "No activity to handle assist action.", e);
}
}
}
};
bug7:快速多次点击power key 会出现亮屏时出现lockscreen界面
在lockscreen的locksreen.java文件中,会修改下面这个值,lockscreen开启后,会将下值修改为true。
android.os.SystemProperties.getBoolean("persist.sys.keyguard.lock", false)
点击power键的时候,就会判断这个值,来决定lockscreen的销毁和开起。
由于点击过快,发送还有50ms的延迟,就会出现错误。
if (!down) {
mHandler.postDelayed(new Runnable() {
@Override
public void run(){
if(android.os.SystemProperties.getBoolean("persist.sys.keyguard.lock", false))
{
//android.util.Log.i("NieJianJian_LockSreen","class --> PhoneWindowManager ||| run()" );
KeyLockDisable();
}
}
},500);
}