• 触觉智能分享-RK3568 Android11修改默认输入法


    前言

    RK3568 Android11平台自带Android英文输入法,本文基于IDO-EVB3568平台,以百度输入法为例,介绍安装和内置第三方输入法的方法。

    我司基于RK3568开发的工控主板,四核A55 2.0G 主频,支持高达8GB高速LPDDR4,1T算力NPU ,4K H.265硬解码,4K HDMI2.0显示输出,支持双通道LVDS/eDP/两路MIPI DSI 等多种显示接口,支持3屏异显。板载2路千兆以太网,双频WIFI+蓝牙,支持5G或4G通信,支持2路USB3.0和7路USB2.0/SATA3.0,5路串口(UART/RS232/RS485),2路CAN总线。支持Android11/Debian10/Ubuntu20/Buildroot/麒麟OS/开源鸿蒙等多种操作系统。

     

    一、获取输入法名称

    在将输入法内置到系统之前,可以通过手动安装的方式,获取输入法的包名和类名。

    通过adb安装输入法apk,并使用ime list命令查看输入法包名类名

    1. > adb install baidu_input.apk
    2. > adb shell ime list -s
    3. com.android.inputmethod.latin/.LatinIME
    4. com.baidu.input/.ImeService

    二、输入法预安装

    将输入法apk文件添加至 device/rockchip/rk356x/rk3568_r/preinstall_del/ 目录下,编译后该APK文件将会预安装至系统。

    三、环境变量修改

    添加环境变量def_input_method,指定变量值为输入法的包名和类名。修改内容如下

    1. --- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
    2. +++ b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
    3. @@ -246,4 +246,7 @@
    4. <integer name="def_screenshot_button_show">0integer>
    5. +
    6. +
    7. + <string name="def_input_method" translatable="false">com.baidu.input/.ImeServicestring>
    8. resources>

    四、设置默认输入法

    在设置源码中,指定DEFAULT_INPUT_METHOD为要设置的输入法。修改内容如下

    1. --- a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
    2. +++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
    3. @@ -2319,6 +2319,9 @@ class DatabaseHelper extends SQLiteOpenHelper {
    4. try {
    5. stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
    6. + " VALUES(?,?);");
    7. +
    8. + loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
    9. + R.string.def_input_method);
    10. // Don't do this. The SystemServer will initialize ADB_ENABLED from a
    11. // persistent system property instead.

    五、给输入法添加默认权限

    输入法一般需要定位、存储等权限,可通过预先设置输入法默认的权限,避免输入法启动时弹出权限申请确认弹窗。修改内容如下

    1. --- a/frameworks/base/services/--- a/frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
    2. +++ b/frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
    3. @@ -527,6 +527,9 @@ public final class DefaultPermissionGrantPolicy {
    4. String[] calendarSyncAdapterPackages = (syncAdapterPackagesProvider != null) ?
    5. syncAdapterPackagesProvider.getPackages(CalendarContract.AUTHORITY, userId) : null;
    6. + // baidu input
    7. + grantPermissionsToPackage(pm, "com.baidu.input", userId, false, true, ALWAYS_LOCATION_PERMISSIONS,STORAGE_PERMISSIONS,PHONE_PERMISSIONS,MICROPHONE_PERMISSIONS,CONTACTS_PERMISSIONS);
    8. +
    9. // Installer
    10. grantSystemFixedPermissionsToSystemPackage(pm,
    11. ArrayUtils.firstOrNull(getKnownPackages(

    六、输入法测试

    可通过adb命令查看系统默认输入法

    > adb shell settings get secure default_input_method

    经过以上步骤的系统修改,点击系统桌面上的编辑框,默认调用的输入法将会变更为修改后的输入法。

     

  • 相关阅读:
    2.类和对象(上)
    背课文记单词,读课文记单词,读文章记单词;40篇文章搞定3500词;71篇文章突破中考单词;15篇文章贯通四级词汇;15篇文章贯通六级词汇
    【无标题】
    verilog-延迟语句
    利用面向对象方法,处理数据文件【Python】
    iphone苹果手机如何连接电脑进行投屏?
    【联邦学习】联邦学习的量化传输仿真(一)
    一个ubuntu系统搭建redis集群
    Linux中如何获取输入设备(如触摸屏、按键等)的事件信息
    前端页面布局之【Grid布局】详解
  • 原文地址:https://blog.csdn.net/Industio_CSDN/article/details/126181580