Android 的 MultiClientInputMethod 示例无法正常工作
The sample of Android's MultiClientInputMethod cannot properly work
我按照Google的官方说明使用MultiClientInputMethodManagerService(https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/inputmethod/multi-client-ime.md)
的例子
带有perDisplayFocus的AOSP11模拟器已经搭建好了,截图你可以看到
enter image description here
但是ime的window只在主屏显示,而且只能在主屏输入enter image description here
我添加了一些日志来查看多输入window,好像已经显示了
@Override
public void onShowSoftInput(int flags, ResultReceiver resultReceiver) {
if (DEBUG) {
Log.v(TAG, "onShowSoftInput clientId=" + mClientId + " flags=" + flags);
}
final SoftInputWindow window =
mSoftInputWindowManager.getSoftInputWindow(mSelfReportedDisplayId);
if (window == null) {
return;
}
if (mClientId != window.getClientId()) {
Log.w(TAG, "onShowSoftInput() from a background client is ignored."
+ " windowClientId=" + window.getClientId()
+ " clientId=" + mClientId);
return;
}
window.show();
Log.v(TAG, "is showing"+window.isShowing());
}
AndroidStudiologcatenter image description here
我在Google上搜索了很久都没有找到相关问题time.Has有人用过这个,非常感谢有经验的回答者
我已经解决了,看到这个问题的可以参考我的解决方法https://github.com/Superpengun/MultiDisplayInput
项目中使用的jar是从aosp12编译出来的classed.jar提取出来的,keyboardview是一个dialog,可能dialog的显示有差异Multi-screen。在 github 的项目中,我为 AOSP12 的隐藏 api 重建了 jar 并验证了它
我按照Google的官方说明使用MultiClientInputMethodManagerService(https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/inputmethod/multi-client-ime.md)
的例子带有perDisplayFocus的AOSP11模拟器已经搭建好了,截图你可以看到 enter image description here
但是ime的window只在主屏显示,而且只能在主屏输入enter image description here
我添加了一些日志来查看多输入window,好像已经显示了
@Override
public void onShowSoftInput(int flags, ResultReceiver resultReceiver) {
if (DEBUG) {
Log.v(TAG, "onShowSoftInput clientId=" + mClientId + " flags=" + flags);
}
final SoftInputWindow window =
mSoftInputWindowManager.getSoftInputWindow(mSelfReportedDisplayId);
if (window == null) {
return;
}
if (mClientId != window.getClientId()) {
Log.w(TAG, "onShowSoftInput() from a background client is ignored."
+ " windowClientId=" + window.getClientId()
+ " clientId=" + mClientId);
return;
}
window.show();
Log.v(TAG, "is showing"+window.isShowing());
}
AndroidStudiologcatenter image description here 我在Google上搜索了很久都没有找到相关问题time.Has有人用过这个,非常感谢有经验的回答者
我已经解决了,看到这个问题的可以参考我的解决方法https://github.com/Superpengun/MultiDisplayInput
项目中使用的jar是从aosp12编译出来的classed.jar提取出来的,keyboardview是一个dialog,可能dialog的显示有差异Multi-screen。在 github 的项目中,我为 AOSP12 的隐藏 api 重建了 jar 并验证了它