Android系统应用开发(一)原稿
2016-09-10 17:18
295 查看
z杂项
//系统原来的settings
//系统签名 说明 javaapk.com_lockScreen_sliding.apk:要签名的apk名字 lockScreen.apk:签名后生成的apk的名字
账号登陆
编译及push
<------------------------------------------------------framework---改完重启----adb reboot-------------------------------------------------------------->
-------------------------通知栏USB的广播---------------------------------------
-----------------------------启动app的theme-----Z:\myandroid\frameworks\base\core\res\res\values\themes-------------------
-----------------------------启动app的theme-----Z:\myandroid\frameworks\base\core\res\res\values\themes-------------------
-----------------------------关机背景-----Z:\myandroid\frameworks\base\services\java\com\android\server\ShoutDownActivity-------------------
--------------------------------------------------(一)屏蔽通知栏下拉 ------------------------------------------------------------------------
在Z:\myandroid\frameworks\base\core\java\android\app\StatusBarManager.java public static final int DISABLE_EXPAND = 0x00000001;
public static final int DISABLE_NOTIFICATION_ICONS = 0x00000002;
public static final int DISABLE_NOTIFICATION_ALERTS = 0x00000004;
public static final int DISABLE_NOTIFICATION_TICKER = 0x00000008;
public static final int DISABLE_NONE = 0x00000000;
将what换成以上5个中的任意一个
public void disable(int what) {
try {
mService.disable(what(DISABLE_EXPAND , mToken, mContext.getPackageName());
} catch (RemoteException ex) {
// system process is dead anyway.
throw new RuntimeException(ex);
}
}
----------------------------------wifi对话框布局------------:\myandroid\packages\apps\Settings\res\layout\wifi_dialog.xml-------------------
----------------------------------导航栏(back ,menu,home)------------:Z:\myandroid\frameworks\base\packages\SystemUI\res\layout\Navigation_bar.xml-------------------
----------------------------------输入法------------:Z:\myandroid\packages\inputmethods\PinyinIME-------------------
Z:\myandroid\packages\inputmethods\PinyinIME\src\com\android\inputmethod\pinyin\XmlKeyboardLoader.java
1,键盘图标有2套,一套 private static final String XMLATTR_KEY_ICON = "icon";
另一套 private static final String XMLATTR_KEY_ICON = "icon_popup";
2,改变按键的图标
Z:\myandroid\packages\inputmethods\PinyinIME\res\xml\skb_template1 normal_key_bg
改这个图片就可以了
但是“,”和"123"二个键是图片用的 light_key_bg改变这个图片就可以
3,屏蔽输入法的冒泡
public void delayedShow(long delay, int locationInParent[]) {
/* if (mBalloonTimer.isPending()) {
mBalloonTimer.removeTimer();
}
if (delay <= 0) {
mParent.getLocationInWindow(mParentLocationInWindow);
showAtLocation(mParent, Gravity.LEFT | Gravity.TOP,
locationInParent[0], locationInParent[1]
+ mParentLocationInWindow[1]);
} else {
mBalloonTimer.startTimer(delay, BalloonTimer.ACTION_SHOW,
locationInParent, -1, -1);
}*/
}
Z:\myandroid\packages\inputmethods\PinyinIME\src\com\android\inputmethod\pinyin\BalloonHint.java
adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\app\PinyinIME.apk system/app/
adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\lib\libjni_pinyinime.so system/lib/
修改默认的输入法为拼音输入法:
----------------------------------屏蔽home键-------------------
1,Z:\myandroid\frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindow.java下的
---------------------------------------------------------------------------------系统"xxx已停止运行"的对话框样式---------------------------------------------------------
1,代码位置: AppErrorDialog AppErrorDialog extends BaseErrorDialog系统"xxx已停止运行"的对话框
---------------------------------------------------------------------------------屏蔽通知栏,下拉刷新---------------------------
1,文件位置Z:\myandroid\frameworks\base\packages\SystemUI\src\com\Android\systemui\statusbar\phone\PanelView.Java
---------------------------------------------------------------------------------长按home键----------------------------
1,Z:\myandroid\frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java
----------------------------------------------------------------------------------去掉导航栏----------------------------
隐藏 导航栏 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
----------------------------------------------------------------------------------去掉系统锁屏----------------------------
Z:\myandroid\frameworks\base\packages\Keyguard\
private boolean mExternallyEnabled = true;(false去掉)
adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\priv-app\Keyguard.apk system/priv-app/
-----------------------------------------------------------OTA升级测试----------------------------
1,代码位置Z:\myandroid\packages\apps\fsl_imx_demo\FSLOta
2,adb install -r Z:\myandroid\out\target\product\evk_6sl_eink\system\app\FSLOta.apk system/app/
3,adb shell am start -n com.fsl.android.ota/com.fsl.android.ota.OtaAppActivity
----------------------------------------被动学习黑屏原因---------------可能是我framework那里改的有问题--------
1,SDK路径:C:\Program Files (x86)\Android\android-sdk 2,exit 退出shell环境 3,make后system.img位置 :Z:\myandroid\out\target\product\evk_6sl_eink\system.img 4,查找 grep "adb _active" -r 递归查找字符串
//系统原来的settings
adb push Z:\Settings.apk system/priv-app/
//系统签名 说明 javaapk.com_lockScreen_sliding.apk:要签名的apk名字 lockScreen.apk:签名后生成的apk的名字
1,复制Z:\myandroid\device\fsl\common\security下的platform.pk8和platform.x509.pem到某个文件夹下名称假如M文件夹 2,复制你要签名的apk到M文件夹下 3,自带的签名工具signapk.jar:由......\android_project\out/host\linux-x86\framework/中找到,复制放到M文件夹下 4,执行命令 java -jar signapk.jar platform.x509.pem platform.pk8 javaapk.com_lockScreen_sliding.apk lockScreen.apk 5,lockScreen.apk就是签名后的apk,可以安装到设备上了 6,adb push F:\eclipse导出的apk\META-INF\lockScreen.apk system/priv-app/ 7,logcat -s lockScreen //删除系统app 1,adb remount 2.adb root 3.adb shell 4.rm -rf system\priv-app\lock.apk
账号登陆
1,devel 2,user:test 3, pass:test123456
编译及push
1, 在myandroid 下执行 . ./build/envsetup 2, lunch 选择17 3, 进入 package/apps/Setting/ 4, mm (改变资源文件用mm -B)编译 5,adb root 6, adb remount 7,adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\priv-app\Settings.apk system/priv-app/
<------------------------------------------------------framework---改完重启----adb reboot-------------------------------------------------------------->
-----------------------------systemUI------------------------ 修改状态栏背景,时钟数字颜色 1,systemUI 位置:Z:\myandroid\frameworks\base\packages\SystemUI 2,adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\priv-app\SystemUI.apk system/priv-app/(windows下) adb push out/target/product/evk_6sl_eink/system/priv-app/SystemUI.apk system/priv-app/(linux下)
-------------------------通知栏USB的广播---------------------------------------
位置:Z:\myandroid\frameworks\base\core\res\res\values-zh-rCN 1,在Z:\myandroid\frameworks\base\core\res\下编译生成framework-res.apk 2,adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\framework-res.apk /system/framework/
-----------------------------启动app的theme-----Z:\myandroid\frameworks\base\core\res\res\values\themes-------------------
1,位置:Z:\myandroid\frameworks\base\core\res\res\values\themes 2,adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\framework-res.apk /system/framework/
-----------------------------启动app的theme-----Z:\myandroid\frameworks\base\core\res\res\values\themes-------------------
1, adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\framework.jar /system/framework/ 3, adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\framework2.jar /system/framework/ 4, adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\ext.jar /system/framework/
-----------------------------关机背景-----Z:\myandroid\frameworks\base\services\java\com\android\server\ShoutDownActivity-------------------
关机的线程,Z:\myandroid\frameworks\base\services\java\com\android\server\power\ShutdownThread.java 关机的activity Z:\myandroid\frameworks\base\services\java\com\android\server\ShoutDownActivity 1, adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\services.jar /system/framework/
--------------------------------------------------(一)屏蔽通知栏下拉 ------------------------------------------------------------------------
在Z:\myandroid\frameworks\base\core\java\android\app\StatusBarManager.java public static final int DISABLE_EXPAND = 0x00000001;
public static final int DISABLE_NOTIFICATION_ICONS = 0x00000002;
public static final int DISABLE_NOTIFICATION_ALERTS = 0x00000004;
public static final int DISABLE_NOTIFICATION_TICKER = 0x00000008;
public static final int DISABLE_NONE = 0x00000000;
将what换成以上5个中的任意一个
public void disable(int what) {
try {
mService.disable(what(DISABLE_EXPAND , mToken, mContext.getPackageName());
} catch (RemoteException ex) {
// system process is dead anyway.
throw new RuntimeException(ex);
}
}
----------------------------------wifi对话框布局------------:\myandroid\packages\apps\Settings\res\layout\wifi_dialog.xml-------------------
----------------------------------导航栏(back ,menu,home)------------:Z:\myandroid\frameworks\base\packages\SystemUI\res\layout\Navigation_bar.xml-------------------
----------------------------------输入法------------:Z:\myandroid\packages\inputmethods\PinyinIME-------------------
1,Z:\myandroid\packages\inputmethods\PinyinIME\res\xml\skb_template1 color="@color/label_color" label_color :输入法按键上显示的字体颜色
Z:\myandroid\packages\inputmethods\PinyinIME\src\com\android\inputmethod\pinyin\XmlKeyboardLoader.java
1,键盘图标有2套,一套 private static final String XMLATTR_KEY_ICON = "icon";
另一套 private static final String XMLATTR_KEY_ICON = "icon_popup";
2,改变按键的图标
Z:\myandroid\packages\inputmethods\PinyinIME\res\xml\skb_template1 normal_key_bg
改这个图片就可以了
但是“,”和"123"二个键是图片用的 light_key_bg改变这个图片就可以
3,屏蔽输入法的冒泡
public void delayedShow(long delay, int locationInParent[]) {
/* if (mBalloonTimer.isPending()) {
mBalloonTimer.removeTimer();
}
if (delay <= 0) {
mParent.getLocationInWindow(mParentLocationInWindow);
showAtLocation(mParent, Gravity.LEFT | Gravity.TOP,
locationInParent[0], locationInParent[1]
+ mParentLocationInWindow[1]);
} else {
mBalloonTimer.startTimer(delay, BalloonTimer.ACTION_SHOW,
locationInParent, -1, -1);
}*/
}
Z:\myandroid\packages\inputmethods\PinyinIME\src\com\android\inputmethod\pinyin\BalloonHint.java
adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\app\PinyinIME.apk system/app/
adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\lib\libjni_pinyinime.so system/lib/
修改默认的输入法为拼音输入法:
设置默认输入法为google拼音 \frameworks\base\packages\SettingsProvider\res\values\defaults.xml <!-- wdh add --> <string name="config_default_input_method" translatable="false">com.android.inputmethod.pinyin/.PinyinIME</string> \frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java private void loadSecureSettings(SQLiteDatabase db) //wdh add loadStringSetting( stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.config_default_input_method ); adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\priv-app\SettingsProvider.apk /system/priv-app/
----------------------------------屏蔽home键-------------------
1,Z:\myandroid\frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindow.java下的
// If we have released the home key, and didn't do anything else // while it was pressed, then it is time to go home! if (!down) { cancelPreloadRecentApps(); mHomePressed = false; if (mHomeConsumed) { mHomeConsumed = false; return -1; } if (canceled) { Log.i(TAG, "Ignoring HOME; event canceled."); return -1; } // If an incoming call is ringing, HOME is totally disabled. // (The user is already on the InCallScreen at this point, // and his ONLY options are to answer or reject the call.) try { ITelephony telephonyService = getTelephonyService(); if (telephonyService != null && telephonyService.isRinging()) { Log.i(TAG, "Ignoring HOME; there's a ringing incoming call."); return -1; } } catch (RemoteException ex) { Log.w(TAG, "RemoteException from getPhoneInterface()", ex); } // Delay handling home if a double-tap is possible. if (mDoubleTapOnHomeBehavior != DOUBLE_TAP_HOME_NOTHING) { mHandler.removeCallbacks(mHomeDoubleTapTimeoutRunnable); // just in case mHomeDoubleTapPending = true; mHandler.postDelayed(mHomeDoubleTapTimeoutRunnable, ViewConfiguration.getDoubleTapTimeout()); return -1; } // Go home! wdh add // launchHomeFromHotKey(); return 0; } 注释掉原来的锁屏app,return 0让上层处理
---------------------------------------------------------------------------------系统"xxx已停止运行"的对话框样式---------------------------------------------------------
1,代码位置: AppErrorDialog AppErrorDialog extends BaseErrorDialog系统"xxx已停止运行"的对话框
---------------------------------------------------------------------------------屏蔽通知栏,下拉刷新---------------------------
1,文件位置Z:\myandroid\frameworks\base\packages\SystemUI\src\com\Android\systemui\statusbar\phone\PanelView.Java
1,首先屏蔽通知栏, 在 public void setExpandedHeightInternal(float h) { h = 0;//这个是通知栏下拉的高度,设置为0就不显示,不影响下拉动作的监听 if (Float.isNaN(h)) { // If a NaN gets in here, it will freeze the Animators. if (DEBUG_NAN) { Log.v(TAG, "setExpandedHeightInternal: warning: h=NaN, using 0 instead", new Throwable()); } h = 0; } 2, case MotionEvent.ACTION_UP: Log.i("PanelView", "MotionEvent.ACTION_UP");//在up时添加自己要做的事 Intent intent = new Intent(); intent.setAction("RefreshView"); getContext().sendBroadcast(intent);
---------------------------------------------------------------------------------长按home键----------------------------
1,Z:\myandroid\frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java
adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\android.policy.jar system/framework/
----------------------------------------------------------------------------------去掉导航栏----------------------------
隐藏 导航栏 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
boolean showNav = mWindowManagerService.hasNavigationBar(); 添加 showNav = false;
----------------------------------------------------------------------------------去掉系统锁屏----------------------------
Z:\myandroid\frameworks\base\packages\Keyguard\
private boolean mExternallyEnabled = true;(false去掉)
adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\priv-app\Keyguard.apk system/priv-app/
-----------------------------------------------------------OTA升级测试----------------------------
1,代码位置Z:\myandroid\packages\apps\fsl_imx_demo\FSLOta
2,adb install -r Z:\myandroid\out\target\product\evk_6sl_eink\system\app\FSLOta.apk system/app/
3,adb shell am start -n com.fsl.android.ota/com.fsl.android.ota.OtaAppActivity
----------------------------------------被动学习黑屏原因---------------可能是我framework那里改的有问题--------
相关文章推荐
- Android应用开发——系统自带样式Android:theme
- 做Android 系统/应用开发怎么可以不懂自动化测试
- Android系统的应用开发与运行环境构建
- Android 应用开发笔记 - Android的系统构架
- 一步一步的学习android应用开发到系统底层开发之android开发层次及所需技术
- Android应用开发——系统自带样式Android:theme
- 做Android 系统/应用开发怎么可以不懂自动化测试
- Android 开发之系统应用Launcher详解,简单添加和删除快捷方式及常见问题
- 一步一步的学习android应用开发到系统底层开发之android数据解析JSON篇
- Android 应用开发笔记 - Android的系统构架
- Android应用开发——系统自带样式Android:theme
- WindRiver开发出Android系统多应用窗口显示
- Android应用开发——系统自带样式Android:theme
- Eclipse中开发Android系统的内置应用
- 在Eclipse+ADT中开发Android系统的内置应用
- 做Android 系统/应用开发怎么可以不懂自动化测试
- 做Android 系统/应用开发怎么可以不懂自动化测试
- Android开发--在应用中调用系统的“应用程序信息(Application Info)”界面
- Android应用开发——系统自带样式Android:theme
- Android应用开发——系统自带样式Android:theme