当应用程序被破坏或进入后台的Android位置服务停止工作

苏尼尔米娜:

我建立一个基于位置的应用程序,我已经创建了在后台工作的服务。当应用程序在云背景或销毁,在我的服务类,如果我发挥循环音频它完美的作品。

音频播放继续连我破坏应用程序,用于获取用户的位置我使用FusedLocationProviderClient API,它也从服务的工作,但只有当应用程序在前台当应用程序用户转到其他应用程序或毁坏App这个它没有得到的位置,但媒体播放器在相同的服务工作正常。

我的服务类

public class ServiceClass extends Service {

    private MediaPlayer mediaplayer;
    private FusedLocationProviderClient fusedLocationProviderClient;
    private LocationRequest locationRequest;
    private Context mContext;
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        //Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
        mContext = this;
        mediaplayer = MediaPlayer.create(this,Settings.System.DEFAULT_RINGTONE_URI);
        mediaplayer.setLooping(true);
        mediaplayer.start();
        getLocation();

        return START_STICKY;
    }

    public void getLocation() {

        Toast.makeText(mContext, "Engine X started YO", Toast.LENGTH_SHORT).show();

        fusedLocationProviderClient = new FusedLocationProviderClient(this);
        locationRequest = new LocationRequest();
        locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        locationRequest.setFastestInterval(1000);
        locationRequest.setInterval(1000);

        fusedLocationProviderClient.requestLocationUpdates(locationRequest, new LocationCallback(){

            @Override
            public void onLocationResult(LocationResult locationResult) {
                super.onLocationResult(locationResult);
                 Log.d("X_loc_BAck", ""+locationResult.getLastLocation().getAccuracy());
                Toast.makeText(mContext, ""+locationResult.getLastLocation().getLatitude(), Toast.LENGTH_SHORT).show();



            }
        },getMainLooper());

    }



    @Override
    public void onDestroy() {
        super.onDestroy();
        mediaplayer.stop();
        //Toast.makeText(this, "Service Desttroyed", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        super.onTaskRemoved(rootIntent);
        mediaplayer.stop();
        Intent i = new Intent(this, ServiceStopped.class);
        sendBroadcast(i);
        //Toast.makeText(this, "Service Task Removed", Toast.LENGTH_SHORT).show();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}
梅尔韦沙辛:

根据该文件

This method is suited for the foreground use cases. For background use cases, the PendingIntent version of the method is recommended, see requestLocationUpdates(LocationRequest, PendingIntent).

看看这个示例项目PendingIntent

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当应用程序进入后台时停止MediaPlayer服务

当应用程序在后台时停止服务

在奥利奥(8.0.0+)(API 26+)中,当应用程序在后台运行或终止时如何获取位置服务更新

当应用程序进入后台时,Android 11(API级别30)onTaskRemoved在前景服务中触发

当应用程序进入后台时,SwiftUI View停止更新

当应用程序进入后台状态iOS 8时Pubnub连接停止

当应用程序进入后台或用户退出应用程序时,如何停止计时器

当应用程序进入后台时如何获得通知?

当应用程序进入后台时碎片销毁

当应用程序进入后台时暂停音频

android-地图应用程序停止工作

当应用程序移至后台时,无法在前台服务中获取位置更新

应用程序已停止工作

Xcode更改我的应用程序的位置服务

如果我开启了位置服务,那么进入后台模式后如何杀死我的应用?

当应用程序进入后台时,实时多人Google Play游戏服务对等方将断开连接

应用关闭后,NativeScript后台服务停止工作

当应用程序在后台运行时,Android服务会接收短信

当应用程序被杀死或关闭时,我如何保持后台 android 服务运行

Android Studio:从Google Studio打开应用程序后,该应用程序停止工作

当应用程序不在焦点或其他选项卡中时,WaitForSeconds停止工作

当应用程序进入后台时,无法处理已完成的后台任务

当应用在iOS中使用后台位置服务时如何隐藏状态栏消息

当应用程序在后台运行时,位置跟踪会在一段时间后停止

android:当应用程序在后台时使屏幕变暗

切换元素位置后,为什么我的应用程序停止工作?

android编程的新手,试图创建登录按钮以进入登录屏幕。当我单击登录按钮时,应用程序显示“停止工作”

进入后台时停止应用程序刷新。(iOS)

当应用程序在后台时将用户的位置转发到服务器 (Swift/iOS)