【干货】Android系统定制基础篇:第十二部分(Android8.1桌面支持键盘操作、Android默认接受WiFi P2P连接邀请、Android配置时间服务器、Android修改默认输入法)

一、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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉亭下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值