У меня есть служба. Я использовал WindowManager для отображения некоторого пользовательского интерфейса во время выполнения службы. Также я показываю уведомление в течение всего срока службы этой Службы.Служба с WindowManager и уведомлением
Ниже мой класс Сервис
public class DemoService extends Service implements View.OnClickListener {
private static final int mLayoutParamFlags = WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
// Views
private View mDemoView;
private ImageButton mEndButton
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
showNotification();
return START_STICKY;
}
@Override
public void onCreate() {
super.onCreate();
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
mDemoView = layoutInflater.inflate(R.layout.windowmanager_demo, null);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
mLayoutParamFlags,
PixelFormat.TRANSLUCENT);
mEndButton = (Button) view.findViewById(R.id.end_button);
mEndButton.setOnClickListener(this);
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
windowManager.addView(mDemoView, params);
}
@Override
public void onDestroy() {
super.onDestroy();
// Remove notification
stopForeground(true);
// Remove WindowManager
if(mDemoView != null){
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.removeView(mDemoView);
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.end_button:
endService();
break;
}
}
/**
* Show notification
*/
private void showNotification() {
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.mipmap.demoicon)
.setContentTitle("Demo App")
.setContentText("Demo Message");
startForeground(R.string.demo_string, notificationBuilder.build());
}
private void endService() {
// Stop demo service
stopSelf();
}
Ниже перечислены вещи, которые я хочу реализовать, но я не знаю, как
Когда служба запущена и UI WindowManager в отображается, если я нажимаю аппаратный задний/домашний ключ, тогда пользовательский интерфейс WindowManager должен исчезнуть, пока служба должна продолжать работать. Я не знаю, как захватить пресс-службу.
Когда я нажимаю на уведомление, пользовательский интерфейс WindowManager должен стать видимым.
Пожалуйста, помогите мне реализовать эти 2 вещи.