一、Android8.1桌面支持键盘操作
Android 8.1 Launcher3 桌面默认并不支持键盘操作切换应用焦点,也无法进入全部列表。因此,对 Launcher3 做一些简单修改使基支持键盘切换焦点。
显示进入应用列表图标
Android 8.1 Launcher3 默认隐藏了进入应用列表图标,修改下面代码,使其像 Android 5.1 一样显示进入应用列表图标:
diff --git a/packages/apps/Launcher3/src/com/android/launcher3/config/BaseFlags.java b/packages/apps/Launcher3/src
old mode 100644
new mode 100755
index 6a4cbcb..5bc4df8
--- a/packages/apps/Launcher3/src/com/android/launcher3/config/BaseFlags.java
+++ b/packages/apps/Launcher3/src/com/android/launcher3/config/BaseFlags.java
@@ -51,7 +51,7 @@ abstract class BaseFlags {
// Feature flag to enable moving the QSB on the 0th screen of the workspace.
public static final boolean QSB_ON_FIRST_SCREEN = true;
// When enabled the all-apps icon is not added to the hotseat.
- public static final boolean NO_ALL_APPS_ICON = true;
+ public static final boolean NO_ALL_APPS_ICON = false;
// When enabled fling down gesture on the first workspace triggers search.
public static final boolean PULLDOWN_SEARCH = false;
// When enabled the status bar may show dark icons based on the top of the wallpaper.
进入应用列表图标见下图:
应用列表支持焦点切换
Android 8.1 Launcher3 应用列表界面默认并不支持焦点切换,使用键盘无法操作。
修改下面代码,使应用列表支持焦点切换:
diff --git a/packages/apps/Launcher3/res/layout/all_apps_icon.xml b/packages/apps/Launcher3/res/layout/all_apps_ic
index 3c2f842..1c22ec3 100755
--- a/packages/apps/Launcher3/res/layout/all_apps_icon.xml
+++ b/packages/apps/Launcher3/res/layout/all_apps_icon.xml
@@ -24,5 +24,7 @@
launcher:iconDisplay="all_apps"
launcher:centerVertically="true"
android:paddingLeft="@dimen/dynamic_grid_cell_padding_x"
- android:paddingRight="@dimen/dynamic_grid_cell_padding_x" />
+ android:paddingRight="@dimen/dynamic_grid_cell_padding_x"
+ android:focusable="true"
+ android:focusableInTouchMode="true" />
移除搜索框
搜索框总是会抢占焦点,并且无法释放焦点,导致其它应用图标无法再获取焦点,因此,我们移除搜索框,修改如下:
diff --git a/packages/apps/Launcher3/res/layout/search_container_workspace.xml b/packages/apps/Launcher3/res/layou
old mode 100644
new mode 100755
index 1c617b1..161431f
--- a/packages/apps/Launcher3/res/layout/search_container_workspace.xml
+++ b/packages/apps/Launcher3/res/layout/search_container_workspace.xml
@@ -22,9 +22,11 @@
android:id="@id/search_container_workspace"
android:padding="0dp" >
- <fragment
- android:name="com.android.launcher3.qsb.QsbContainerView$QsbFragment"
- android:layout_width="match_parent"
- android:tag="qsb_view"
- android:layout_height="match_parent"/>
+ <!--Modified by shenhb@topband.com.cn,remove search box.-->
+ <!--<fragment-->
+ <!--android:name="com.android.launcher3.qsb.QsbContainerView$QsbFragment"-->
+ <!--android:layout_width="match_parent"-->
+ <!--android:tag="qsb_view"-->
+ <!--android:layout_height="match_parent"/>-->
+ <!--End of modify-->
</com.android.launcher3.qsb.QsbContainerView>
\ No newline at end of file
diff --git a/packages/apps/Launcher3/src/com/android/launcher3/Workspace.java b/packages/apps/Launcher3/src/com/an
old mode 100644
new mode 100755
index 6ce3ad6..8a03091
--- a/packages/apps/Launcher3/src/com/android/launcher3/Workspace.java
+++ b/packages/apps/Launcher3/src/com/android/launcher3/Workspace.java
@@ -606,11 +606,13 @@ public class Workspace extends PagedView
.inflate(R.layout.search_container_workspace,firstPage, false);
}
+ /* Modified by shenhb@topband.com.cn,remove search box.
CellLayout.LayoutParams lp = new CellLayout.LayoutParams(0, 0, firstPage.getCountX(), 1);
lp.canReorder = false;
if (!firstPage.addViewToCellLayout(qsb, 0, R.id.search_container_workspace, lp, true)) {
Log.e(TAG, "Failed to add to item at (0, 0) to CellLayout");
}
+ End of Modify */
}
public void removeAllWorkspaceScreens() {
二、Android默认接受WiFi P2P连接邀请
WiFi P2P 连接时不弹窗,默认接受P2P连接邀请,用于无 TP 项目通过手机 APP 配置 WiFi 网络。
修改文件:frameworks\opt\net\wifi\service\java\com\android\server\wifi\p2p\WifiP2pServiceImpl.java
private void notifyInvitationReceived() {
// Add start <<<
if ("1".equals(SystemProperties.get("persist.sys.p2p_no_verify","0"))) {
sendMessage(PEER_CONNECTION_USER_ACCEPT);
return;
}
// Add end >>>
Resources r = Resources.getSystem();
final WpsInfo wps = mSavedPeerConfig.wps;
final View textEntryView = LayoutInflater.from(mContext)
.inflate(R.layout.wifi_p2p_dialog, null);
...
属性配置:
取值:0:弹窗,1:不弹窗
persist.sys.p2p_no_verify=0
三、Android配置时间服务器
配置时间服务器
Android 是通过连接指定的 ntpServer 来获取网络时间,而不同的服务器带来的延迟也不尽相同,通常情况下,我们自然是期望尽快获取时间,那么我们就需要对 ntpServer 有一定的筛选,尤其是在选择默认的 ntpServer 的时候。
Android 中配置 ntpServer 的源文件:
frameworks/base/core/res/res/values/config.xml
此外,调整一下切换不同服务器之间的 timeout 也能加快获取网络时间。
亚洲主要的授时服务器
http://www.pool.ntp.org/zone/asia
实际测试中发现,下列服务器响应比较快,最大的平均响应时间低于150ms(可能与网络也有一定的关系,不同地方可能有较大的差异):
http://sg.pool.ntp.org
http://tw.pool.ntp.org
http://3.asia.pool.ntp.org
http://jp.pool.ntp.org
http://cn.pool.ntp.org
http://hk.pool.ntp.org
http://th.pool.ntp.org
http://s2g.time.edu.cn
四、Android修改默认输入法
内置Google拼音输入法
内置Google拼音输入法
diff --git a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
index b8e7d84..a6a6ee8 100755
--- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -194,4 +194,8 @@
<string name="def_screenshot_location">internal_storage</string>
<!-- default setting for Settings.Global.DEFAULT_RESTRICT_BACKGROUND_DATA -->
<bool name="def_restrict_background_data">false</bool>
+
+ <string name="config_default_input_method" translatable="false">com.google.android.inputmethod.pinyin/.PinyinIME</string>
+ <string name="def_enabled_input_methods" translatable="false">com.google.android.inputmethod.pinyin/.PinyinIME</string>
+
</resources>
diff --git a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
old mode 100644
new mode 100755
index d8f3daf..78480a6
--- a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2459,6 +2459,13 @@ class DatabaseHelper extends SQLiteOpenHelper {
loadIntegerSetting(stmt, Settings.Secure.SLEEP_TIMEOUT,
R.integer.def_sleep_timeout);
+
+ //add by shenhb@topband.com.cn, for default input method
+ loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
+ R.string.config_default_input_method);
+ loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
+ R.string.def_enabled_input_methods);
+ //add end
/*
* IMPORTANT: Do not add any more upgrade steps here as the global,
diff --git a/vendor/rockchip/common/apps/GooglePinyinIME/Android.mk b/vendor/rockchip/common/apps/GooglePinyinIME/Android.mk
new file mode 100755
index 0000000..1e71a2e
--- /dev/null
+++ b/vendor/rockchip/common/apps/GooglePinyinIME/Android.mk
@@ -0,0 +1,14 @@
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+LOCAL_MODULE := GooglePinyinIME
+LOCAL_MODULE_CLASS := APPS
+LOCAL_MODULE_TAGS := optional
+LOCAL_BUILT_MODULE_STEM := package.apk
+LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
+#LOCAL_PRIVILEGED_MODULE :=
+LOCAL_CERTIFICATE := PRESIGNED
+#LOCAL_OVERRIDES_PACKAGES :=
+LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
+#LOCAL_REQUIRED_MODULES :=
+#LOCAL_PREBUILT_JNI_LIBS :=
+include $(BUILD_PREBUILT)
diff --git a/vendor/rockchip/common/apps/GooglePinyinIME/GooglePinyinIME.apk b/vendor/rockchip/common/apps/GooglePinyinIME/GooglePinyinIME.apk
new file mode 100755
index 0000000..549bd9e
Binary files /dev/null and b/vendor/rockchip/common/apps/GooglePinyinIME/GooglePinyinIME.apk differ
diff --git a/vendor/rockchip/common/apps/apps.mk b/vendor/rockchip/common/apps/apps.mk
index 74ea1fb..c5406b2 100755
--- a/vendor/rockchip/common/apps/apps.mk
+++ b/vendor/rockchip/common/apps/apps.mk
@@ -1,4 +1,6 @@
+PRODUCT_PACKAGES += \
+ GooglePinyinIME
#PRODUCT_PACKAGES += \
# RKUpdateService
支持属性配置输入法
通过属性配置默认输入法。
【输入法】增加persist.sys.ime.config属性,可配置输入法
diff --git a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index bf18824..17f18d3 100755
--- a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2462,14 +2462,22 @@ class DatabaseHelper extends SQLiteOpenHelper {
loadIntegerSetting(stmt, Settings.Secure.SLEEP_TIMEOUT,
R.integer.def_sleep_timeout);
-
- //add by shenhb@topband.com.cn, for default input method
- loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
- R.string.config_default_input_method);
- loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
- R.string.def_enabled_input_methods);
- //add end
+ String config_input = SystemProperties.get("persist.sys.ime.config");
+ if(!config_input.isEmpty()) {
+ loadSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, config_input);
+ loadSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS, config_input);
+ }else{
+ //add by shenhb@topband.com.cn, for default input method
+ loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
+ R.string.config_default_input_method);
+ loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,
+ R.string.def_enabled_input_methods);
+ //add end
+
+ }
+
+
/*
* IMPORTANT: Do not add any more upgrade steps here as the global,
* secure, and system settings are no longer stored in a database
属性配置:
persist.sys.ime.config=com.sohu.inputmethod.sogouoem/.SogouIME