Android 在安卓系统中,屏幕上始终(从未停止)可见图标
我想在屏幕上创建一个图标,只需监听触摸即可(无需强制创建无用的通知) 3天后,通过网络搜索并在IRC渠道询问,并实施以下示例: 我发现有一种黑客方法可以做到这一点,但没有人知道(除了智能任务栏开发人员) 我用大多数源代码示例安装了Smart Taskbar,发现这些示例在没有通知栏的情况下被禁用,但Smart Taskbar从未被禁用(我发现你甚至不能用常规的task killer(如Android task Manager)将其禁用),只有一种方法可以禁用此图标,进入设置>应用程序>选择Smart Taskbar>强制停止 我发现的另一件事是,它从不进入后台,在android任务管理器(在实时进程列表中)中,它被标记为可见,您无法杀死它Android 在安卓系统中,屏幕上始终(从未停止)可见图标,android,android-layout,always-on-top,Android,Android Layout,Always On Top,我想在屏幕上创建一个图标,只需监听触摸即可(无需强制创建无用的通知) 3天后,通过网络搜索并在IRC渠道询问,并实施以下示例: 我发现有一种黑客方法可以做到这一点,但没有人知道(除了智能任务栏开发人员) 我用大多数源代码示例安装了Smart Taskbar,发现这些示例在没有通知栏的情况下被禁用,但Smart Taskbar从未被禁用(我发现你甚至不能用常规的task killer(如Android task Manager)将其禁用),只有一种方法可以禁用此图标,进入设置>应用程序>选择S
有人能帮助我如何创建一个始终可见且不会在屏幕上消失的图标吗?这是绝对可行的。您应该保持一个始终运行的服务。 在创建该服务时
@Override
public void onCreate() {
super.onCreate();
customView= new MYCustomView(MyService.this);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.RIGHT | Gravity.TOP;
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(customView, params);
}
这将使您的视图位于所有VIE之上。在您的服务的
onCreate
方法中调用setupNotification()
,在您的服务的onDestroy
方法中调用clearNotification()
private int SERVICE_NOTIFICATION = 1; // this should be unique for your app
private void setupNotification()
{
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){
Notification serviceNotification = new NotificationCompat.Builder(this)
.setContentTitle("Your Service")
.setContentText("Your Service is running in the background")
.setSmallIcon(R.drawable.ic_launcher)
.setPriority(NotificationCompat.PRIORITY_MIN)
.setOngoing(true)
.build();
startForeground(SERVICE_NOTIFICATION, serviceNotification);
}
else{
Notification serviceNotification = new Notification();
serviceNotification.flags = Notification.FLAG_ONGOING_EVENT;
startForeground(SERVICE_NOTIFICATION, serviceNotification);
}
}
private void clearNotification()
{
stopForeground(true);
}
你们有并没有测试过你们发布的内容,并没有,你们必须为前台服务创建通知,请仔细阅读这篇文章,它会转到后台并在某个时候停止。我在我的一个项目中实现了这一点。是的,您需要为前台服务保留一个通知,因为您可能希望保持该服务的有效性,并且为了在该服务被终止时重新启动该服务,您可能还需要startSticky()。好的,我询问了smart taskbar developer的功能(无通知),因此您在本文中的代码与此无关,抱歉,但这会发出通知,但我说的是我不需要无用的通知,就像上面的回答,这不是有用的响应这正是智能任务栏2所做的。你试过了吗?这是少于APIv18的不可见通知。之后,你必须得到通知。