Ich habe ein Custom der LinearLayout
erweitert, ich bin das Hinzufügen WindowManager.addView()
Methode zum Screenen unter Verwendung mit folgendem Layout param FlagsWie keyup und keydown Ereignis in Dienst erkennen
LinearLayout mLinear = new LinearLayout(getApplicationContext()) {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
super.dispatchKeyEvent(event);
Log.i(TAG, "event");
int action = event.getAction();
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
Log.i("Key", "VolumeUp");
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
Log.i("Key", "VolumeDown");
return true;
case KeyEvent.KEYCODE_BACK:
Log.d(TAG, " " + "KEYCODE_BACK");
return false;
default:
return true;
}
}
};
mView = LayoutInflater.from(this).inflate(R.layout.volume_service_layout, mLinear);
wm = (WindowManager) getSystemService(WINDOW_SERVICE);
if (mView.getVisibility() == View.VISIBLE)
flag = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING ;
//params
params = new WindowManager.LayoutParams(
100,
100,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.LEFT | Gravity.CENTER_VERTICAL;
wm.addView(mView, params);
}
dispatchKeyEvent()
ist wichtiges Ereignis in meinem Dienst zu erkennen Override in customview
Klasse, aber nach dem Hinzufügen zu Windows zurück drücken Sie Button
funktioniert nicht.Wenn ich hinzufügen WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
Flag Rückstempeltaste funktioniert gut, ich bin nicht in der Lage, keyup und Keydown-Ereignis zu erkennen.
Ich möchte Keyup oder Keydown-Ereignis in Serviceklasse erkennen. Bitte schlagen Sie eine Lösung für dieses Problem vor.
Wo müssen Sie Ihren Code geschrieben haben, meine ich in Aktivität oder Fragment? –
Ich habe diesen Code im Service verwendet –