Задний план:
Недавно я купил планшет Motorola XOOM вместе с настольной док-станцией и аксессуарами для клавиатуры Bluetooth.
Док-станция и клавиатура работают отлично, но когда я снимаю планшет с док-станции, чтобы отойти от стола, клавиатура по-прежнему остается в паре с устройством, и мне приходится вручную изменять настройки, чтобы использовать программную клавиатуру. То же самое происходит, когда я снова устанавливаю его на док-станцию, мне нужно вручную переключить его обратно. Это не огромная проблема, но было бы неплохо не думать об этом.
Итак, я попытался загрузить приложение из магазина, которое просто включало и выключало Bluetooth при подключении или отключении от источника питания, что некоторое время работало хорошо, но фоновая служба умирала по прошествии определенного периода и становилась бесполезной, пока я не перезапустил ее вручную.
К ТОЧНОМУ: Я пытаюсь написать небольшое приложение / сервис для своего планшета, которое будет распознавать, когда он был пристыкован / отстыкован, и соответствующим образом переключать настройку «Использовать физическую клавиатуру».
Я начал с BroadcastReciever, чтобы распознать состояние док-станции:
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(); } }
Но у меня возникли проблемы с определением наилучшего способа обновить настройку после запуска события. Я рассмотрел несколько примеров с использованием InputMethodManager, но все методы, похоже, нуждаются в конкретном EditText или другом вводе для привязки.
Кроме того, я не могу найти соответствующую константу, которая представляет этот параметр где-либо в документации, но графически она находится здесь: http://i.stack.imgur.com/esFaw.png
Кто-нибудь может мне с этим помочь?
Я хотел бы, чтобы было решение для изменения настройки, но я открыт и для других идей.