微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当平板电脑处于待机状态时,我的 GPS 应用程序是否可以继续在后台运行?

如何解决当平板电脑处于待机状态时,我的 GPS 应用程序是否可以继续在后台运行?

我创建了一个应用程序,可以生成 Android 设备位置的跟踪日志。 GPS 坐标会定期记录并存储在设备上供以后下载。目前,当手机进入待机状态时,程序会停止记录点数。有没有一种方法可以让应用程序在设备处于待机状态时继续记录位置?提前致谢。

解决方法

根据 android documentation,如果您的应用面向 API 级别 26 或更高级别,则当应用本身不在前台时,系统会对运行后台服务施加限制。此外,为了在后台访问位置,您可能需要额外的 permissions

如果您想运行始终在后台运行的服务,您可以run a foreground service 显示正在进行的通知。或者您可以使用 WorkManager 安排任务。

,

我找到了两个解决方案。 1.) 使用唤醒锁

public void wakeLock() {
         PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
         PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK,"MyApp::MyWakelockTag");
        wakeLock.acquire();
    }

将以下内容添加到清单 XML 文件中,

<uses-permission android:name="android.permission.WAKE_LOCK"/>

或者,2.) 使用 WindowManager 使设备保持唤醒状态,

 public void noSleep() {
        if (bNoSleep == true){
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        } else if (bNoSleep != true){
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        }
}

我选择后者作为用户可选择的功能,可通过主工作区中的复选框访问。我还将它设置为在启动跟踪日志时自动启用,用户可以选择禁用它并允许待机/睡眠发生。我确实实现了唤醒锁,但有一些问题可能与我的某些 Android 设备上的自定义 ROM 有关。这就是我最终选择使用 windowmanager 解决方案的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。