Articles of android service

永远不会调用Android服务的onTaskRemoved! 为什么?

我在最近2天遇到了一个问题,我想点击api并在用户从后台任务中onTaskRemoved应用程序时向用户显示Toast ,我发现从service中可能会因为onTaskRemoved在应用程序从后台删除时被调用。 代码: MyService.java public class MyService extends Service { private static final String TAG = MyService.class.getSimpleName(); Handler mHandler; @Override public void onCreate() { super.onCreate(); mHandler = new Handler(); } @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.d(TAG, “onStartCommand: “); mHandler.post(new Runnable() […]

将LocationManager作为服务Android启动

我正在尝试做的是在收到c2dm消息时,启动一个服务,询问位置“x”的时间,然后将该位置移交给我们的服务器。 c2dm消息正确启动服务,GPS位置打开,但它永远不会更新。 它只是坐在那里我指定的时间长度(目前为12秒)并没有做任何事情。 我在我的应用程序中使用完全相同的代码(不是作为服务)并且它完美地工作。 我究竟做错了什么? 这会在收到c2dm消息时启动服务。 context.startService(new Intent(context, ServicePingLocation.class)); 这是服务本身的代码。 所有被称为“onCreate”和“onStart”的东西。 public class ServicePingLocation extends Service implements LocationListener { private final String DEBUG_TAG = “[GPS Ping]”; private boolean xmlSuccessful = false; private boolean locationTimeExpired = false; private LocationManager lm; private double latitude; private double longitude; private double accuracy; @Override public void onLocationChanged(Location location) { Log.d(DEBUG_TAG, […]

如何从android中的服务获取活动的根视图?

我正在创建一个应用程序,它截取用户打开的应用程序的屏幕截图,并定期将它们发送到服务器。 我正在使用服务来截取屏幕截图,但我找不到任何方法来获取活动的根视图。 NDK有可能吗?

Android相机 – 从服务后台运行

我一直试图在服务的背景下运行相机。 我已经按照如何使用相机在Android上的后台服务中拍摄照片中显示的方法? , 从相机拍照无需预览 。 这就是我所做的 ExperimentalControl.java package com.example.test2; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log; public class ExperimentControl extends Service { VideoRecorder vRecorder; public ExperimentControl() { Log.i(“EXPERIMENT”,”ExperimentControl started!!!”); } @Override public IBinder onBind(Intent intent) { return null; } public int onStartCommand(Intent intent, int flags, int startId) { vRecorder = new VideoRecorder(); vRecorder.startRecording(getApplicationContext()); return […]

如何使用ServiceTestCase测试IntentService?

我一直在尝试使用Android提供的ServiceTestCase类测试我的IntentService ,但测试失败, testServiceTestCaseSetUpProperly首先失败。 我的代码如下: public class MyClientServiceTest extends ServiceTestCase { public static final String TAG = MyClientServiceTest.class.getName(); public static final String FILE_PREFIX = “test_”; private boolean bLoggingIn = false; private boolean bLoggingOut = false; private boolean bSendingScanRequest = false; private boolean bGettingTemplates = false; private final Class SERVICE_CLASS = MyClientService.class; private RenamingDelegatingContext rdContext = null; […]

如何让服务在后台运行

我创建的应用程序会在用户按下电源按钮3次后立即启动活动。 经过一些研究后我发现要做到这一点,首先你需要创建一个服务,启动广播接收器来检查屏幕的开/关状态。 基本上我希望即使应用程序关闭也能运行。 一旦按下电源按钮3次或更多次,它应该开始另一个活动。 如果您知道解决方案,请给我完整的代码或答案的链接。 我以某种方式设法编写此代码,但它无法正常工作: UpdateService.java 这是我使用的服务类: import android.app.Service; import android.content.BroadcastReceiver; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; import android.util.Log; import android.widget.Toast; public class UpdateService extends Service { BroadcastReceiver mReceiver; @Override public void onCreate() { super.onCreate(); // register receiver that handles screen on and screen off logic IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); mReceiver = […]

Activity如何访问NotificationListenerService的方法?

我有一个活动类,需要获取设备的当前中断filter设置。 因此,我有一个MyNotificationListenerService类,它派生自NotificationListenerService并实现onInterruptionFilterChanged()。 但是,只有在中断filter更改时才会调用onInterruptionFilterChanged() 。 当我的应用程序启动时,我需要找出中断filter的当前值。 NotificationListenerService有一个方法,它是getCurrentInterruptionFilter() 。 我的问题是:当我的应用程序启动时, MyNotificationListenerService如何调用MyNotificationListenerService的getCurrentInterruptionFilter() ? 操作系统自动创建并启动MyNotificationListenerService , MyActivity可以获取该对象的句柄,以便显式调用getCurrentInterruptionFilter() ? 如果没有,那么为了让MyActivity能够从MyNotificationListenerService获得初始中断设置,应该采用什么通信机制? 。

适用于18岁以下API的NotificationListenerService?

无论如何可以使用NotificationListenerService来获得超过18的API级别。我找不到任何关于它的信息所以我认为这是不可能的,但我刚发现stackoverflow上的post,有人说它可以完成。 ( 这里Nagendra先生说他们也提供了对旧版本的支持 )我不知道如何直接问他这个问题,所以我要问每个人。 请帮我解决一下这个。 AccessibilityService引起了很多麻烦,所以我正在寻找替代方案。 任何帮助将非常感激。

使用通知操作按钮以编程方式在android视图的大视图和普通视图之间切换

我有一个在前台运行的服务(持续通知)。 我想给用户一个关闭它的按钮,所以我考虑了通知操作(在4.1中)但是,在他们关闭它之前,我想让他们知道关闭它的后果并让他们确认结束。 所以我基本上希望我的通知的正常视图有一个关闭按钮,当用户点击它时,我想将我的通知扩展到具有确认/取消按钮的大视图。 根据我的阅读,我无法控制向用户显示哪个视图。 它只显示大视图如果它是第一个通知或用户捏缩放/向下滑动。 我可以控制呈现的视图吗? 谢谢!

后台服务中的Android BLE扫描

我正在尝试制作一款能够扫描某个蓝牙设备作为后台服务的Android应用。 一旦手机在蓝牙设备的特定范围内,通过读取RSSI进行测量,后台服务将启动向用户显示的活动。 如果手机移出蓝牙设备的范围,(在RSSI值超过某个阈值后),应该杀死活动。 以下是后台服务的代码: public class BeaconScanService extends Service implements BluetoothAdapter.LeScanCallback { private Service self = this; public static final String UNLOCK = “unlock”; public static final String STATUS = “status”; public static final String SIGNAL = “signal”; public static final String GET_SIGNAL = “get_signal”; //desired device to find private static final String targetMAC = […]