不同国家,键盘布局不用,其具体的布局是kcm文件中配置的
在\frameworks\base\packages\InputDevices\res\raw下已经有对应的kcm文件,\frameworks\base\packages\InputDevices\res\xml\keyboard_layouts.xml中是这些kcm文件的列表,在framework/base/services/core/java/android/server/input/InputManagerServices.java中已经有去解析keyboard_layouts.xml这个文件,按照InputManagerServices.java ->visitKeyboardLayoutsInPackage这个方法以及 getDefaultKeyboardLayout方法中的实现keyboard_layouts.xml应该要有locale可以与systemLocale匹配的,但实际实现中却没有。肯定知道locale与keyboardlayout的对应规则,或者去哪里可以查阅到这些资料。
在\frameworks\base\packages\InputDevices\res\raw下已经有对应的kcm文件,\frameworks\base\packages\InputDevices\res\xml\keyboard_layouts.xml中是这些kcm文件的列表,在framework/base/services/core/java/android/server/input/InputManagerServices.java中已经有去解析keyboard_layouts.xml这个文件,按照InputManagerServices.java ->visitKeyboardLayoutsInPackage这个方法以及 getDefaultKeyboardLayout方法中的实现keyboard_layouts.xml应该要有locale可以与systemLocale匹配的,但实际实现中却没有。肯定知道locale与keyboardlayout的对应规则,或者去哪里可以查阅到这些资料。
解决方案 »
- 求救啊,这个数据类型怎么回事啊
- android 使用BASE64Decoder and BASE64Encoder
- 为什么有R.java文件,也更新了,再Activity类还是提示找不到R下的各种id呢?
- android程序跑起来需要的最低配置是多少呢?请教大虾们啊~~~
- Android画面间复杂类型参数传递问题
- 想找对手机软件和手机社交有兴趣的筒子一起关注手机软件的发展
- 请教刷NFC卡的源码
- cocos2dx制作飞翔的小鸟,小鸟的跳跃与下落问题
- 调试-找不到源
- 按钮点击功能不能实现,重启之后还是不行,Monitors提示如下。
- AS如何获取onCreat中的值
- AS如何从MainActivity中传一个我从文本框中获取的值,到我的自定义类中
private void visitAllKeyboardLayouts(KeyboardLayoutVisitor visitor) {
final PackageManager pm = mContext.getPackageManager();
Intent intent = new Intent(InputManager.ACTION_QUERY_KEYBOARD_LAYOUTS);
for (ResolveInfo resolveInfo : pm.queryBroadcastReceivers(intent,
PackageManager.GET_META_DATA | PackageManager.MATCH_DIRECT_BOOT_AWARE
| PackageManager.MATCH_DIRECT_BOOT_UNAWARE)) {
final ActivityInfo activityInfo = resolveInfo.activityInfo;
final int priority = resolveInfo.priority;
visitKeyboardLayoutsInPackage(pm, activityInfo, null, priority, visitor);
}
}看起来还是挺明显的,需要外部应用提供信息,搜索下github镜像InputDevices/AndroidManifest,剩下应该是你的专职工作我也就不太清楚了。<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.inputdevices"
coreApp="true"
android:sharedUserId="android.uid.system"> <application
android:allowClearUserData="false"
android:label="@string/app_label"
android:process="system"
android:defaultToDeviceProtectedStorage="true"
android:directBootAware="true"> <receiver android:name=".InputDeviceReceiver"
android:label="@string/keyboard_layouts_label">
<intent-filter>
<action android:name="android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS" />
</intent-filter>
<meta-data android:name="android.hardware.input.metadata.KEYBOARD_LAYOUTS"
android:resource="@xml/keyboard_layouts" />
</receiver>
</application>
</manifest>