java—以编程方式更改键盘输入语言

j8yoct9x  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(427)

我正在开发一个应用程序,在这个应用程序中,我需要允许用户根据请求或默认情况更改默认键盘中显示的输入键,例如,我可以在开始时提示用户选择默认语言,然后在使用默认键盘时,应用程序总是显示所选语言的键盘键,
我知道这是可能的,因为在默认的键盘应用程序中,当选择多个输入法时,长按空格键可以在运行时更改输入法,如果这是可能的,那么我的要求也是可能的。。。
我不想像下面这样提示输入默认键盘:

InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);
imeManager.showInputMethodPicker();

我不想一直更改区域设置并重新启动我的活动,例如:

Resources res = getBaseContext().getResources();
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.locale = new Locale("ru".toLowerCase());
res.updateConfiguration(conf, dm);
Log.i("inside onStart","after ever");   
setContentView(R.layout.activity_main);

我只想用我想要的语言显示键盘输入。

ecr0jaav

ecr0jaav1#

只有在应用程序作为系统应用程序运行时(出于安全原因),才可以在不通知用户的情况下更改键盘。
您需要首先在应用程序的androidmanifest.xml中授予android权限

"android.permission.WRITE_SECURE_SETTINGS"

然后需要确定键盘的id。
->要知道id,您需要手动将键盘默认设置为“设置菜单”,然后将此打印放在某个位置,

System.out.println(Settings.Secure.getString(getContentResolver(),Settings.Secure.DEFAULT_INPUT_METHOD));

一旦你打印了id并且知道了你的键盘id,你就可以按照下面的步骤操作了(我已经把我的默认键盘改成了日语)

InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);

//imeManager.showInputMethodPicker(); //This is to see available keyboards.
imeManager.setInputMethod(null,"jp.co.omronsoft.openwnn/.OpenWnnJAJP");

好好享受!!

0wi1tuuw

0wi1tuuw2#

在这里做了一些研究,那里找到了答案,首先你要创建一个自定义的键盘视图,它扩展了keyboardview,并在其中创建静态键值变量,如

static final int KEYCODE_LANGUAGE_SWITCH_ENG = -102;
static final int KEYCODE_LANGUAGE_SWITCH_URDU = -103;

之后,在实现inputmethodservice的ime类中,在oninitializeinterface override函数内创建键盘。喜欢

mSymbolsKeyboard = new Keyboard(this, R.xml.qwerty2);
mEngQwertyKeyboard = new Keyboard(this, R.xml.eng_qwerty);

在此之后,在onkey override功能中将这些最终静态键添加为开关盒,并在这些盒中相应地设置键盘:

setKeyboard(mEngQwertyKeyboard);

相关问题