想要实现退出客户端后也能点击屏幕顶端(状态栏位置)启动一个特定的应用程序,这个app怎么做?
主要是实现不了退出应用程序后也能监听点击事件,以及service怎么响应该点击事件,跪求大神。
应该要用到Android中的BroadcastReceiver,让它来监听系统发出的相应广播消息,但是点击屏幕顶端(状态栏位置),系统会发出什么广播,这个得查查。你讲得具体点,是想像手机QQ那样面,最小化后,状态栏上有个小图标,然后下拉状态栏面板后,可以点击它的那个最小化状态再打开它
显示图标在状态栏上 ,参考
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification n = new Notification(
resId, "Floats Start!", System.currentTimeMillis());
// 将此通知放到通知栏的"Ongoing"即"正在运行"组中
n.flags |= Notification.FLAG_ONGOING_EVENT;
// 表明在点击了通知栏中的"清除通知"后,此通知不清除,
// 经常与FLAG_ONGOING_EVENT一起使用
n.flags |= Notification.FLAG_NO_CLEAR;
PendingIntent pi = PendingIntent.getActivity(this, 0, getIntent(), 0);
n.contentIntent = pi;
n.setLatestEventInfo(this, "FloatsWindow", "start!", pi);
nm.notify(NOTIFICATION_ID_ICON, n);
如果退出程序还需要监控的话,就需要捕捉系统的通知了
以下代码是android 判断点击的位置是不是在指定的view上
修改为判断点击的位置是不是在状态栏上,如果是的话,就执行指定的操作
private boolean inRangeOfView(View view, MotionEvent ev){
int[] location = new int[2];
view.getLocationOnScreen(location);
int x = location[0];
int y = location[1];
if(ev.getX() < x || ev.getX() > (x + view.getWidth()) || ev.getY() < y || ev.getY() > (y + view.getHeight())){
return false;
}
return true;
}