我按照谷歌的官方说明使用MultiClientInputMethodManagerService的示例(https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/inputmethod/multi-client ime.md(
带有perDisplayFocus的AOSP11模拟器已经构建完成,屏幕截图可以看到在此处输入图像描述
但是时间窗口只显示在主显示器上,并且只能在主显示器输入图像描述
我添加了一些日志来查看多输入窗口,它似乎显示了
@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());
}
AndroidStudio的logcat在此处输入图像描述我在谷歌上搜索,很长时间没有找到相关问题。有人用过这个吗,非常感谢经验丰富的回答者
我已经解决了它,任何看到这个问题的人都可以参考我的解决方案https://github.com/Superpengun/MultiDisplayInput
项目中使用的jar是从aosp12编译的类中提取的。jar,键盘视图是一个对话框,可能对话框的多屏幕显示有区别。在github的项目中,我为AOSP12的隐藏api重建了jar,并对其进行了验证