背景:
我最近购买了一台摩托罗拉 XOOM 平板电脑以及桌面扩展坞和蓝牙键盘配件。
扩展坞和键盘工作得很好,但是当我将平板电脑从扩展坞上取下并远离办公桌时,键盘仍然与设备配对,我必须手动更改设置才能使用软键盘。当我将其放回坞站时也是如此,我需要手动将其切换回来。这不是一个huge问题,但最好不用考虑它。
因此,我尝试从市场上下载一个应用程序,该应用程序可以在连接或断开电源时简单地打开和关闭蓝牙,这在一段时间内运行良好,但后台服务会在一段时间后消失并变得毫无用处,直到我手动重新启动它。
重点:我正在尝试为我的平板电脑编写一个小应用程序/服务,它可以识别平板电脑何时已对接/取消对接,并相应地切换“使用物理键盘”设置。
我开始使用 BroadcastReceiver 来识别 Dock 状态:
public class DockBroadcastReciever extends BroadcastReceiver {
private final String DOCK_STATE_LABEL = "android.intent.extra.DOCK_STATE";
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
String message = (extras.getInt(DOCK_STATE_LABEL) == Intent.EXTRA_DOCK_STATE_UNDOCKED) ? "Undocked" : "Docked";
Toast toast = Toast.makeText(context, message, Toast.LENGTH_LONG);
toast.show();
}
}
但我无法找出事件触发后更新设置的最佳方法。我已经使用了一些例子输入法管理器,但所有的方法似乎都需要一个特定的EditText或一些其他要绑定的输入。
此外,我似乎无法在文档中的任何位置找到表示该设置的相应常量,但从图形上看,它位于此处:https://i.stack.imgur.com/esFaw.png https://i.stack.imgur.com/esFaw.png
谁能帮我解决这个问题吗?
我希望有一个改变设置的解决方案,但我也愿意接受其他想法。