客户要求默认键盘
bash
+#fi
+
+echo "ro.product.locale=nl-BE"
echo "ro.wifi.channels=$PRODUCT_DEFAULT_WIFI_CHANNELS"
后面发现usb otg 转接的键盘无法配置成比利时键盘 AZERTY
思路是在监听物理键盘的插入,直接在监听中配置成比利时键盘
bash
diff --git a/src/com/android/settings/sim/receivers/SimCompleteBootReceiver.java b/src/com/android/settings/sim/receivers/SimCompleteBootReceiver.java
index e9acf94976..8fc0001aea 100644
--- a/src/com/android/settings/sim/receivers/SimCompleteBootReceiver.java
+++ b/src/com/android/settings/sim/receivers/SimCompleteBootReceiver.java
@@ -21,6 +21,7 @@ import android.content.Context;
import android.content.Intent;
import android.util.Log;
+import com.android.settings.Junjie;
import com.android.settings.sim.SimActivationNotifier;
import com.android.settings.sim.SimNotificationService;
@@ -34,6 +35,10 @@ public class SimCompleteBootReceiver extends BroadcastReceiver {
Log.e(TAG, "Invalid broadcast received.");
return;
}
+ Intent i = new Intent(context, Junjie.class);
+ i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startService(i);
在这个开机广播中启动监听服务
bash
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 3ec0a3cff0..baee450325 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -189,6 +189,11 @@
android:value="true" />
</activity>
+ <service android:name=".Junjie"
+ android:enabled="true"
+ android:exported="true"
+ />
+
bash
package com.android.settings;
import android.app.Service;
import android.os.IBinder;
import android.content.Context;
import android.view.InputDevice;
import android.os.Handler;
import android.content.Intent;
import android.os.Message;
import android.content.res.Configuration;
import android.hardware.input.InputManager;
import android.hardware.input.InputDeviceIdentifier;
import android.view.inputmethod.InputMethodManager;
public class Junjie extends Service implements InputManager.InputDeviceListener{
private InputManager mIm;
private Context context;
public void onCreate(){
super.onCreate();
context = getApplicationContext();
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
mIm = (InputManager)context.getSystemService(Context.INPUT_SERVICE);
mIm.registerInputDeviceListener(this, null);//添加监听
int[] ids = mIm.getInputDeviceIds();//非常重要, 决定后续是否能监听到状态变化
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
//doNothing
android.util.Log.d("KeyboardService", "0410 onConfigurationChanged");
}
public void onDestroy(){
super.onDestroy();
mIm.unregisterInputDeviceListener(this);//注销监听
}
public IBinder onBind(android.content.Intent intent){
return null;
}
@Override
public void onInputDeviceAdded(int deviceId){
android.util.Log.d("KeyboardService", "0410 > onInputDeviceAdded() deviceId:"+deviceId);
InputMethodManager input = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);//得到InputMethodManager。
final int[] devices = InputDevice.getDeviceIds();//获取设备
for (int i = 0; i < devices.length; i++) {//遍历查找
InputDevice device = InputDevice.getDevice(devices[i]);
if (device != null
&& !device.isVirtual()
&& device.isFullKeyboard()) {
InputDeviceIdentifier identifier = device.getIdentifier();
// mIm.addKeyboardLayoutForInputDevice(identifier,
// "com.android.inputdevices/com.android.inputdevices.InputDeviceReceiver/keyboard_layout_belgian");//添加布局
// liujunjie
//mIm.setKeyboardLayoutForInputDevice(identifier,
// "com.android.inputdevices/com.android.inputdevices.InputDeviceReceiver/keyboard_layout_belgian");//更改布局
mIm.setKeyboardLayoutForInputDevice(identifier,0,input.getCurrentInputMethodInfo(),input.getCurrentInputMethodSubtype(),
"com.android.inputdevices/com.android.inputdevices.InputDeviceReceiver/keyboard_layout_belgian");
}
}
}
@Override
public void onInputDeviceRemoved(int deviceId){
android.util.Log.d("KeyboardService", "0410 > onInputDeviceRemoved() deviceId"+deviceId);
}
@Override
public void onInputDeviceChanged(int deviceId){
android.util.Log.d("KeyboardService", "0410 > onInputDeviceChanged() deviceID"+deviceId);
}
}
这个服务的点在于setKeyboardLayoutForInputDevice 4个参数