1. 程式人生 > >MTK 定製修改(一)

MTK 定製修改(一)

以下內容均為在MTK android 7.0上修改

1.修改預設桌布

a.在/frameworks/base/core/res/res/drawable-nodpi中新增自定義的桌布custum_default_wallpaper.png(名稱自定義)

b.在/frameworks/base/core/res/res/values/symbols.xml中把名稱新增上

<java-symbol type="drawable" name="custum_default_wallpaper" />
c.修改/frameworks/base/core/java/android/app/WallpaperManager.java
public static InputStream openDefaultWallpaper(Context context, @SetWallpaperFlags int which) {
        final String whichProp;
        final int defaultResId;
        if (which == FLAG_LOCK) {
            /* Factory-default lock wallpapers are not yet supported
            whichProp = PROP_LOCK_WALLPAPER;
            defaultResId = com.android.internal.R.drawable.default_lock_wallpaper;
            */
	    //pang add start 20180107
	    whichProp = PROP_LOCK_WALLPAPER;
	    defaultResId = com.android.internal.R.drawable.custum_default_wallpaper ;
	    //pang end
            return null;
        } else {
            whichProp = PROP_WALLPAPER;
	    //pang temp
	    defaultResId = com.android.internal.R.drawable.custum_default_wallpaper ;
            //defaultResId = com.android.internal.R.drawable.default_wallpaper;
        }
......

}

private InputStream openDefaultWallpaperRes(Context context, @SetWallpaperFlags int which) {
            IWallpaperPlugin mWallpaperPlugin = null;
            InputStream is = null;
            /// M: Init mWallpaperPlugin for Operators @{
            try {
                mWallpaperPlugin = (IWallpaperPlugin) MPlugin.createInstance(
                        IWallpaperPlugin.class.getName(), context);
            } catch (Exception e) {
                Log.e(TAG, "Catch IWallpaperPlugin exception: ", e);
            }
            /// @}
            if (mWallpaperPlugin == null || mWallpaperPlugin.getPluginResources(context) == null) {
                is = context.getResources().openRawResource(
			com.android.internal.R.drawable.custum_default_wallpaper);
                        //com.android.internal.R.drawable.default_wallpaper);
            } else {
                Log.d(TAG, "get the wallpaper image from the plug-in");
                is = mWallpaperPlugin.getPluginResources(context).openRawResource(
                        mWallpaperPlugin.getPluginDefaultImage());
            }
            return is;
        }

2.修改預設中文輸入法,我用的是訊飛輸入法

a.在frameworks/base/core/res/res/values/string.xml中新增 

string name="default_inputmethod">com.iflytek.inputmethod/.FlyIME</string>

b.在/frameworks/base/core/res/res/values/symbols.xml中新增 

<java-symbol type="string" name="default_inputmethod" />
c.在frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java中
 private void loadSecureSettings(SQLiteDatabase db) {
.......

            loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,
                      com.android.internal.R.string.default_inputmethod);

            loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
                      com.android.internal.R.string.default_inputmethod);
......
}

d.預設啟用所有輸入法,/frameworks/base/core/java/com/android/internal/inputmethod/InputMethoeUtils.java
public void enableAllIMEsIfThereIsNoEnabledIME() {
	    //pang temp 20180107
            //if (TextUtils.isEmpty(getEnabledInputMethodsStr())) {
            if (!TextUtils.isEmpty(getEnabledInputMethodsStr())) {
                StringBuilder sb = new StringBuilder();
                final int N = mMethodList.size();
                for (int i = 0; i < N; i++) {
                    InputMethodInfo imi = mMethodList.get(i);
                    Slog.i(TAG, "Adding: " + imi.getId());
                    if (i > 0) sb.append(':');
                    sb.append(imi.getId());
                }
                putEnabledInputMethodsStr(sb.toString());
            }
        }
d.在vendor/mediatek/proprietary/packages/3rd-party/中建立xunfei資料夾,在裡面放置xunfei.apk, Android.mk和armeabi資料夾, 其中armeabie中放置的是訊飛輸入法的32位so庫,如下
libmsc-v8.so
libsmartaiwrite-jni-v16.so
libsmartaiwrite-jni-v17.so
libsmartaiwrite-jni-v18.so
libsmartaiwrite-jni-v19.so
Android.mk的內容
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

# Module name should match apk name to be installed
LOCAL_MODULE := xunfei
LOCAL_MODULE_OWNER := mtk
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_DEX_PREOPT := false
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
#LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app
LOCAL_MODULE_PATH := $(TARGET_OUT)/app

LOCAL_PREBUILT_JNI_LIBS :=\
     armeabi/libmsc-v8.so \
     armeabi/libsmartaiwrite-jni-v16.so \
     armeabi/libsmartaiwrite-jni-v17.so \
     armeabi/libsmartaiwrite-jni-v18.so \
     armeabi/libsmartaiwrite-jni-v19.so \
     armeabi/libvadLib-v5.so
LOCAL_MULTILIB := 32
include $(BUILD_PREBUILT)
e.在/device/mediatek/common/device.mk中新增
PRODUCT_PACKAGES += xunfei