How to customized UI on recovery mode

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

How to customized UI on recovery mode

How to customized UI on recovery mode

Since JB4.3, we have added a customer library in myandroid/devices/fsl/common/recovery to give a chance for customer to customize their UI menu in recovery.img

Be sure you define the TARGET_RECOVERY_UI_LIB to be same as your defined in Android.mk in myandroid/devices/fsl/common/recovery, as we did in myandroid/devices/fsl/imx6/BoardConfigCommon.mk

TARGET_RECOVERY_UI_LIB := librecovery_ui_imx

Once you defined TARGET_RECOVERY_UI_LIB, myandroid/bootable/recovery will use the one to replace the default ui lib  as the source code myandroid/bootable/recovery/default_device.cpp.


By default, we define below menu as below:

const char* ITEMS[] = { "reboot system now",

  "apply update from ADB",

  "wipe data/factory reset",

  "wipe cache partition",

  NULL };

Below is an example to add a new menu as "apply update from SD Card":

diff --git a/common/recovery/recovery_ui.cpp b/common/recovery/recovery_ui.cpp

index ccf8ccd..9cbd91e 100644

--- a/common/recovery/recovery_ui.cpp

+++ b/common/recovery/recovery_ui.cpp

@@ -31,6 +31,7 @@ const char* HEADERS[] = { "Volume up/down to move highlight;",

const char* ITEMS[] = { "reboot system now",

  "apply update from ADB",

+ "apply update from SD Card",

  "wipe data/factory reset",

  "wipe cache partition",

  NULL };

@@ -77,8 +78,9 @@ class ImxDevice : public Device {

switch (menu_position) {

case 0: return REBOOT;

case 1: return APPLY_ADB_SIDELOAD;

- case 2: return WIPE_DATA;

- case 3: return WIPE_CACHE;

+ case 2: return APPLY_EXT;

+ case 3: return WIPE_DATA;

+ case 4: return WIPE_CACHE;

default: return NO_ACTION;

}

}

The handle on the menu is defined in function prompt_and_wait(Device* device, int status) in myandroid/bootable/recovery/recovery.cpp. Below is the buildin menu function in recovery.

    enum BuiltinAction { NO_ACTION, REBOOT, APPLY_EXT, APPLY_CACHE,

  APPLY_ADB_SIDELOAD, WIPE_DATA, WIPE_CACHE };

标记 (2)
%3CLINGO-SUB%20id%3D%22lingo-sub-1111503%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%A6%82%E4%BD%95%E5%9C%A8%E6%81%A2%E5%A4%8D%E6%A8%A1%E5%BC%8F%E4%B8%8B%E8%87%AA%E5%AE%9A%E4%B9%89%20UI%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1111503%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Calibri%2C%20sans-serif%3B%20font-size%3A%2011pt%3B%20line-height%3A%201.5em%3B%22%3E%E8%87%AA%20JB4.3%20%E4%BB%A5%E6%9D%A5%EF%BC%8C%E6%88%91%E4%BB%AC%E5%9C%A8%20myandroid%2Fdevices%2Ffsl%2Fcommon%2Frecovery%20%E4%B8%AD%E6%B7%BB%E5%8A%A0%E4%BA%86%E4%B8%80%E4%B8%AA%E5%AE%A2%E6%88%B7%E5%BA%93%EF%BC%8C%E8%AE%A9%E5%AE%A2%E6%88%B7%E6%9C%89%E6%9C%BA%E4%BC%9A%E5%9C%A8%20recovery.img%20%E4%B8%AD%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BB%96%E4%BB%AC%E7%9A%84%20UI%20%E8%8F%9C%E5%8D%95%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%20font-family%3A%20Calibri%2C%20sans-serif%3B%22%3E%E7%A1%AE%E4%BF%9D%E5%B0%86%20TARGET_RECOVERY_UI_LIB%20%E5%AE%9A%E4%B9%89%E4%B8%BA%E4%B8%8E%3CSPAN%20style%3D%22font-family%3A%20Calibri%2C%20sans-serif%3B%20font-size%3A%2015px%3B%22%3E%20myandroid%2Fdevices%2Ffsl%2Fcommon%2Frecovery%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20Calibri%2C%20sans-serif%3B%20font-size%3A%2015px%3B%22%3E%20%E4%B8%AD%E7%9A%84%20Android.mk%20%E4%B8%AD%E5%AE%9A%E4%B9%89%E7%9A%84%E7%9B%B8%E5%90%8C%3C%2FSPAN%3E%20%EF%BC%8C%E5%B0%B1%E5%83%8F%E6%88%91%E4%BB%AC%E5%9C%A8%20myandroid%2Fdevices%2Ffsl%2Fimx6%2FBoardConfigCommon.mk%20%E4%B8%AD%E6%89%80%E5%81%9A%E7%9A%84%E9%82%A3%E6%A0%B7%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%20font-family%3A%20Calibri%2C%20sans-serif%3B%22%3ETARGET_RECOVERY_UI_LIB%20%3A%3D%20librecovery_ui_imx%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%20font-family%3A%20Calibri%2C%20sans-serif%3B%22%3E%E4%B8%80%E6%97%A6%E5%AE%9A%E4%B9%89%E4%BA%86%3CSPAN%20style%3D%22font-family%3A%20Calibri%2C%20sans-serif%3B%20font-size%3A%2015px%3B%22%3ETARGET_RECOVERY_UI_LIB%3C%2FSPAN%3E%20%EF%BC%8C%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-family%3A%20Calibri%2C%20sans-serif%3B%20font-size%3A%2015px%3B%20line-height%3A%201.5em%3B%22%3Emyandroid%2Fbootable%2Frecovery%20%E5%B0%86%E4%BD%BF%E7%94%A8%E5%AE%83%E6%9D%A5%E6%9B%BF%E6%8D%A2%E9%BB%98%E8%AE%A4%E7%9A%84%20ui%20lib%20%E4%BD%9C%E4%B8%BA%E6%BA%90%E4%BB%A3%E7%A0%81%20myandroid%2Fbootable%2Frecovery%2Fdefault_device.cpp%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Calibri%2C%20sans-serif%3B%20font-size%3A%2015px%3B%20line-height%3A%201.5em%3B%22%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2011pt%3B%20font-family%3A%20Calibri%2C%20sans-serif%3B%22%3E%E9%BB%98%E8%AE%A4%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E6%88%91%E4%BB%AC%E5%AE%9A%E4%B9%89%E4%BB%A5%E4%B8%8B%E8%8F%9C%E5%8D%95%E5%A6%82%E4%B8%8B%EF%BC%9A%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3Econst%20char*%20ITEMS%5B%5D%20%3D%20%7B%20%22%E7%AB%8B%E5%8D%B3%E9%87%8D%E5%90%AF%E7%B3%BB%E7%BB%9F%22%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E2%80%9C%E5%BA%94%E7%94%A8%E6%9D%A5%E8%87%AA%20ADB%20%E7%9A%84%E6%9B%B4%E6%96%B0%E2%80%9D%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E2%80%9C%E6%B8%85%E9%99%A4%E6%95%B0%E6%8D%AE%2F%E5%9B%9E%E5%A4%8D%E5%8E%9F%E5%8E%82%E8%AE%BE%E5%AE%9A%E2%80%9D%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E2%80%9C%E6%93%A6%E9%99%A4%E7%BC%93%E5%AD%98%E5%88%86%E5%8C%BA%E2%80%9D%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E6%97%A0%E6%95%88%E7%9A%84%20%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2011pt%3B%20font-family%3A%20Calibri%2C%20sans-serif%3B%22%3E%E4%B8%8B%E9%9D%A2%E6%98%AF%E6%B7%BB%E5%8A%A0%E6%96%B0%E8%8F%9C%E5%8D%95%E2%80%9C%E4%BB%8E%20SD%20%E5%8D%A1%E5%BA%94%E7%94%A8%E6%9B%B4%E6%96%B0%E2%80%9D%E7%9A%84%E7%A4%BA%E4%BE%8B%EF%BC%9A%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E5%B7%AE%E5%BC%82%20--git%20a%2Fcommon%2Frecovery%2Frecovery_ui.cpp%20b%2Fcommon%2Frecovery%2Frecovery_ui.cpp%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3Eindex%20ccf8ccd..9cbd91e%20100644%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E---%20a%2Fcommon%2Frecovery%2Frecovery_ui.cpp%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%2B%2B%2Bb%2Fcommon%2Frecovery%2Frecovery_ui.cpp%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%40%40%20-31%2C6%20%2B31%2C7%20%40%40%20const%20char*%20HEADERS%5B%5D%20%3D%20%7B%20%22%E9%9F%B3%E9%87%8F%E5%A2%9E%E5%A4%A7%2F%E5%87%8F%E5%B0%8F%E4%BB%A5%E7%A7%BB%E5%8A%A8%E7%AA%81%E5%87%BA%E6%98%BE%E7%A4%BA%EF%BC%9B%22%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3Econst%20char*%20ITEMS%5B%5D%20%3D%20%7B%20%22%E7%AB%8B%E5%8D%B3%E9%87%8D%E5%90%AF%E7%B3%BB%E7%BB%9F%22%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E2%80%9C%E5%BA%94%E7%94%A8%E6%9D%A5%E8%87%AA%20ADB%20%E7%9A%84%E6%9B%B4%E6%96%B0%E2%80%9D%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%2B%E2%80%9C%E4%BB%8E%20SD%20%E5%8D%A1%E5%BA%94%E7%94%A8%E6%9B%B4%E6%96%B0%E2%80%9D%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E2%80%9C%E6%B8%85%E9%99%A4%E6%95%B0%E6%8D%AE%2F%E5%9B%9E%E5%A4%8D%E5%8E%9F%E5%8E%82%E8%AE%BE%E5%AE%9A%E2%80%9D%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E2%80%9C%E6%93%A6%E9%99%A4%E7%BC%93%E5%AD%98%E5%88%86%E5%8C%BA%E2%80%9D%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E6%97%A0%E6%95%88%E7%9A%84%20%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%40%40%20-77%2C8%20%2B78%2C9%20%40%40%20%E7%B1%BB%20ImxDevice%20%3A%20%E5%85%AC%E5%85%B1%E8%AE%BE%E5%A4%87%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E5%BC%80%E5%85%B3%EF%BC%88%E8%8F%9C%E5%8D%95%E4%BD%8D%E7%BD%AE%EF%BC%89%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E6%83%85%E5%86%B5%200%3A%20%E8%BF%94%E5%9B%9E%20REBOOT%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E6%83%85%E5%86%B51%EF%BC%9A%E8%BF%94%E5%9B%9EAPPLY_ADB_SIDELOAD%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E-%20%E6%83%85%E5%86%B52%EF%BC%9A%E8%BF%94%E5%9B%9EWIPE_DATA%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E-%20%E6%83%85%E5%86%B53%EF%BC%9A%E8%BF%94%E5%9B%9EWIPE_CACHE%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%2B%20%E6%83%85%E5%86%B5%202%EF%BC%9A%E8%BF%94%E5%9B%9E%20APPLY_EXT%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%2B%20%E6%83%85%E5%86%B5%203%EF%BC%9A%E8%BF%94%E5%9B%9E%20WIPE_DATA%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%2B%20%E6%83%85%E5%86%B5%204%3A%20%E8%BF%94%E5%9B%9E%20WIPE_CACHE%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E9%BB%98%E8%AE%A4%EF%BC%9A%E8%BF%94%E5%9B%9ENO_ACTION%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2011pt%3B%20font-family%3A%20Calibri%2C%20sans-serif%3B%22%3E%E8%8F%9C%E5%8D%95%E4%B8%8A%E7%9A%84%E5%8F%A5%E6%9F%84%E5%9C%A8myandroid%2Fbootable%2Frecovery%2Frecovery.cpp%E4%B8%AD%E7%9A%84%E5%87%BD%E6%95%B0prompt_and_wait(Device*%20device%2C%20int%20status)%E4%B8%AD%E5%AE%9A%E4%B9%89%E3%80%82%E4%BB%A5%E4%B8%8B%E6%98%AF%E6%81%A2%E5%A4%8D%E4%B8%AD%E7%9A%84%E5%86%85%E7%BD%AE%E8%8F%9C%E5%8D%95%E5%8A%9F%E8%83%BD%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E6%9E%9A%E4%B8%BE%20BuiltinAction%20%7B%20NO_ACTION%2C%20REBOOT%2C%20APPLY_EXT%2C%20APPLY_CACHE%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E5%BA%94%E7%94%A8ADB%E4%BE%A7%E8%BD%BD%EF%BC%8C%E6%93%A6%E9%99%A4%E6%95%B0%E6%8D%AE%EF%BC%8C%E6%93%A6%E9%99%A4%E7%BC%93%E5%AD%98%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E
无评分
版本历史
最后更新:
‎08-27-2014 06:42 PM
更新人: