自25.07版本的云手机镜像开始,无影云手机支持使用本地输入法,可在部分场景下提供比云手机内置输入法更好的输入体验。
输入法对比
本地输入法是指运行云手机客户端或通过SDK调取云手机画面的本地设备上安装的输入法,即在本地输入,并在云手机实例中进行响应并输出。
本地输入法与云手机内置的输入法相比,各有优劣,分别适用于不同的场景,具体对比如下表所示。
对比项 | 云手机内置输入法 | 本地输入法 | |
效果 | 云手机内置Gboard输入法
| Windows本地的Emoji输入面板
| Pixel 8a本地的搜狗输入法
|
优势 |
|
| |
弊端 |
|
| |
输入法切换方法
您可以根据需要切换输入法。
ADB
初次启用
在云手机实例刚刚创建完成时,需要启用云手机内置输入法。
adb shell settings put secure enabled_input_methods "com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME:com.wuying.wyime/.PseudoImeService"切换为本地输入法
adb shell ime set com.wuying.wyime/.PseudoImeService切换为云手机内置输入法
本示例中使用的是云手机预装的Gboard输入法,您也可以替换为其他输入法。
adb shell ime set com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIMEWeb SDK
请获取最新的SDK(以支持本地输入法)和Demo。具体操作,请参见Web SDK。
在连接时指定下面的参数。
config.useCustomIme=true随后按照正常连接流程进行连接即可。详细信息可参见Demo。
Android SDK
Android SDK要启用本地输入法,需要在StreamView连接前监听来自ASP Engine的连接状态回调,并在连接成功的回调中将本地输入法设置为启用状态。
请获取最新的SDK(以支持本地输入法)和Demo。具体操作,请参见Android SDK。
@Override
public void onCreate() {
super.onCreate();
IASPEngineListener listener = new IASPEngineListener() {
@Override
public void onConnectionSuccess(int connectionId) {
mStreamView.getASPEngineDelegate().setImeType(ASPIMEType.ASP_IME_TYPE_LOCAL);
mStreamView.shouldProactivelyShowIME(true);
}
/* 注意:也需要实现其他接口 */
}
StreamView streamView = findViewById(R.id.stream_view);
streamView.getASPEngineDelegate().registerASPEngineListener(listener);
/* 其他 onCreate 过程 */
}Windows SDK
由于Windows没有统一的GUI应用程序框架,因此Windows SDK仅提供最基本的状态回调与上行接口,与输入法的交互需要您在对接时自行完成。
在Windows上使用本地输入法大致包含以下步骤:
实现AspIme对象,用于接收
onImeFocusUpdate回调;创建AspClient时,调用
setAspIme来注册AspIme对象;当
onImeFocusUpdate(true, false)时,调起对应UI框架的输入法逻辑;当
onImeFocusUpdate(false, false)时,隐藏对应UI框架的输入法;当输入法提交字符时,调用
AspClient::setImeCommit方法来提交输入内容。
不同的GUI框架适用不同的输入法交互接口,常见框架对应的接口如下:
Qt框架
调起输入法:
setAttribute(Qt::WA_InputMethodEnabled, true);获取输入内容:通过
void inputMethodEvent(QInputMethodEvent *event) override;回调
WPF框架
调起输入法:实现
System.Windows.Interop.IKeyboardInputSink获取输入内容:实现
public bool TranslateChar(ref MSG msg, ModifierKeys modifiers);


