Ich habe eine Anwendung erstellt, die einen Dienst ausführt. Der Dienst hat grundsätzlich einen Overlay-Button und der Button beim Klick tut was. Jedes Mal klicke ich jedoch auf die Schaltfläche, die Anwendung im Hintergrund der Schaltfläche reagiert darauf. Kann mir bitte jemand helfen?Android: Overlay-Taste onClick wird nie aufgerufen
Ich habe auf link verwiesen.
Hier ist mein Code:
Code Service:
public class HUD extends Service implements OnTouchListener{
Button mButton;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
String s;
s = "Hari";
return null;
}
@Override
public void onCreate() {
super.onCreate();
//mView = new HUDView(this);
mButton = new Button(this);
mButton.setText("Overlay button");
mButton.setOnTouchListener(this);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.RIGHT | Gravity.TOP;
params.setTitle("Load Average");
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(mButton, params);
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(getBaseContext(),"onDestroy", Toast.LENGTH_LONG).show();
if(mButton != null)
{
((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(mButton);
mButton = null;
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
Toast.makeText(this,"Overlay button event", Toast.LENGTH_SHORT).show();
return false;
}
}
Das Manifest hat die folgende Erlaubnis auch:
Ich habe versucht, die Arten zu
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
Wechsel
Jetzt, wo auch immer ich klicke, wird das Berührungsereignis aufgerufen. Kann mir bitte jemand helfen?
Bei falscher Rückgabe in onTouch wird die Anwendung angewiesen, die Berührung fortzusetzen, als ob die Schaltfläche nicht berührt wurde. Versuche, wahr zurückzukommen. – anthonycr