1.主桌面时钟图标,时间字号太小
device/techfaith/子项目/overlay/packages/apps/Launcher3/res/xml/default_workspace_4x4.xml
launcher:packageName=“com.android.deskclock”
launcher:spanY=“2”
2.集成Nuwa应用
vendor/mediatek/proprietary/binary/3rd-party/free/ 添加Nuwa/Nuwa.apk
vendor/mediatek/proprietary/binary/3rd-party/free/Nuwa/Android.mk
Module name should match apk name to be installed
LOCAL_MODULE := Nuwa
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
#LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app
LOCAL_MULTILIB := 32
include $(BUILD_PREBUILT)
device/techfaith/子项目/device.mk
//add
PRODUCT_PACKAGES += Nuwa
3.第一次开机需默认显示第一屏应用
packages/apps/Launcher3/src/com/android/launcher3/LauncherModel.java
for (ItemInfo i : addedShortcutsFinal) {
// if (i.screenId == lastScreenId) {
// addAnimated.add(i);
// } else {
addNotAnimated.add(i);
// }
}
4.壁纸不能全屏
packages/apps/Launcher3/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
import android.view.Window;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window window = getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
5.将屏幕下方虚拟按键的默认状态改为显示状态
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
// removeNavigationBar();
frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
/*
else{
KeyguardManager mKeyguardManager = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
if (!mKeyguardManager.inKeyguardRestrictedInputMode()&&!mKeyguardManager.isKeyguardLocked()) {
showNavigationBar();
}
}
/
/
else{
KeyguardManager mKeyguardManager = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
if (!mKeyguardManager.isDeviceLocked()&&
mContext.getResources().getConfiguration().orientation != Configuration.ORIENTATION_PORTRAIT &&
!mKeyguardManager.isKeyguardLocked()) {
showNavigationBar();
}
}
*/
6.使用后台管家的应用卸载时,Launcher3有时报错
packages/apps/Launcher3/src/com/android/launcher3/AllAppsList.java
try{
PackageManager pm=context.getPackageManager();
int currentStatus=pm.getApplicationEnabledSetting(packageName);
if(currentStatus==PackageManager.COMPONENT_ENABLED_STATE_DISABLED){
pm.setApplicationEnabledSetting(packageName,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,0);
}
}catch(IllegalArgumentException ex){
if (LauncherLog.DEBUG) {
LauncherLog.d(TAG, “has not this package”);
}
}
7.壁纸预览被拉伸
/packages/apps/Launcher3/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
private Resources mResources;
private int mResId;
//add private Point realSize;
public void setDeviceSize(Point point){
realSize=point;
}
//add
if(src.getImageWidth()==realSize.x&&src.getImageHeight()==realSize.y){
return 1;
}else{
return wallpaperSize.x / crop.width();
}
final String[] extras = res.getStringArray(listResId);
//add
Point realSize = new Point();
getWindowManager().getDefaultDisplay().getRealSize(realSize);
8.禁用应用图标不消失
device/techfaith/a_10f_zh/device.mk
#PRODUCT_PACKAGES += SavePowerHelper
packages/apps/Launcher3/src/com/android/launcher3/Launcher.java
public boolean startActivitySafely(View v, Intent intent, Object tag) {
//add
PackageManager pm=getPackageManager();
ComponentName componentName=intent.getComponent();
if(componentName!=null){
String packageName=componentName.getPackageName();
if(packageName!=null){ if(pm.getApplicationEnabledSetting(packageName)PackageManager.COMPONENT_ENABLED_STATE_DISABLED){ pm.setApplicationEnabledSetting(packageName,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,PackageManager.GET_DISABLED_COMPONENTS
| PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
}
}
}
packages/apps/Launcher4/src/com/android/launcher3/AllAppsList.java
/*
PackageManager pm=context.getPackageManager();
int currentStatus=pm.getApplicationEnabledSetting(packageName);
if(currentStatusPackageManager.COMPONENT_ENABLED_STATE_DISABLED){
pm.setApplicationEnabledSetting(packageName,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,PackageManager.GET_DISABLED_COMPONENTS
| PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
}
*/
9.进入主菜单界面,同时按住APP和MENU键,卡在主菜单界面,无法返回到桌面
packages/apps/Launcher3/src/com/android/launcher3/Launcher.java
if (mState == State.WORKSPACE && !mWorkspace.isInOverviewMode()) {
// Show the overview mode
mFocusHandler.setAlpha(0f); //add
showOverviewMode(true);
} else {
//modify
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
showWorkspace(true);
}
}, 200);
}
10.自定义按键启动应用
frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
case KeyEvent.KEYCODE_F1: {
//add
if(homekeyToUser){
return result;
}
if(SystemProperties.get(“ro.build.product”).indexOf(“子项目”)>=0){
//按下此按键,调用APP,提供一个接口
String storedPkg = Settings.Secure.getStringForUser(mContext.getContentResolver(), Settings.Secure.CAMERA_KEY_APP_PKG,“包名”);
String storedCls = Settings.Secure.getStringForUser(mContext.getContentResolver(), Settings.Secure.CAMERA_KEY_APP_CLS,“”类名“”);
Log.i(TAG,“storedPkg=”+storedPkg+",storedCls="+storedCls);
ComponentName com = new ComponentName(storedPkg,storedCls);
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(com);
try{
mContext.startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.i(TAG, “No activity found”);
}
}else{
if (down) {
mHandler.postDelayed(mF1LongPressRun, 1500);
} else {
mHandler.removeCallbacks(mF1LongPressRun);
}
}
break;
}
11.增加开关机动画及编译文件
frameworks/base/data/sounds/animation/子项目 /bootanimation.zip /shutanimation.zip
frameworks/base/data/sounds/full_子项目.mk
LOCAL_PATH := frameworks/base/data/sounds/animation/子项目
PRODUCT_COPY_FILES +=
$(LOCAL_PATH)/bootanimation.zip:system/media/bootanimation.zip
$(LOCAL_PATH)/shutanimation.zip:system/media/shutanimation.zip
12.去掉虚拟按键
/device/techfaith/子项目/system.prop
qemu.hw.mainkeys=1
13.去掉按键唤醒功能
/frameworks/base/core/java/android/view/KeyEvent.java
/** @hide */
public static final boolean isWakeKey(int keyCode) {
switch (keyCode) {
//delete
// case KeyEvent.KEYCODE_BACK:
// case KeyEvent.KEYCODE_MENU:
14.切换成中文输入法后,桌面图库图标显示的是英文
packages/apps/Launcher3/res/xml/default_workspace_4x4.xml
launcher:className=“com.android.gallery3d.app.GalleryActivity”
15.将二级桌面上方的搜索栏去掉
/packages/apps/Launcher3/res/layout/all_apps_search_bar.xml
//add android:visibility=“gone”
android:background="@drawable/all_apps_search_bg" >
16.添加长按Back键启用一键呼救功能
frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
case KeyEvent.KEYCODE_BACK:{
if(down){
mHandler.postDelayed(mBackLongPress,ViewConfiguration.getGlobalActionKeyTimeout());
}else{
mHandler.removeCallbacks(mBackLongPress);
}
break;
}
return result;
}
private final Runnable mBackLongPress = new Runnable() {
public void run() {
Intent intent = new Intent(“android.intent.action.CALL_FOR_HELP”, null);
mContext.sendBroadcast(intent, null);
}
};
17.设置->设置PIN/密码锁成功后,再进入输入密码界面,无须输入密码直接点击确定,提示“设置已停止运行”
packages/apps/Settings/src/com/android/settings/ConfirmLockPassword.java
//final String pin = mPasswordEntry.getText().toString();
String pin = mPasswordEntry.getText().toString();
if (pin.equals("")){
pin = “0” ;
}