Utworzono aplikację, która uruchamia usługę. Usługa zasadniczo ma przycisk nakładki, a przycisk kliknięcia robi coś. Jednak za każdym razem klikam przycisk, aplikacja odpowiada w tle przycisku. Czy ktoś może pomóc?Android: przycisk nakładki onClick nigdy nie jest wywoływany
Odniosłem się do link.
Oto mój kod: Kod
Usługa:
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;
}
}
manifestu zawiera następujące uprawnienia, a także:
Próbowałem zmieniając typy do
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,
Teraz, gdziekolwiek kliknę, wywoływane jest zdarzenie dotykowe. Czy ktoś może mi pomóc?
Zwrócenie wartości false w systemie onTouch spowoduje, że aplikacja kontynuuje przetwarzanie dotyku, tak jakby przycisk nie został dotknięty. Spróbuj zwrócić true. – anthonycr