即使应用程序在后台,播放/停止铃声的最佳/正确方法是什么?

问题描述 投票:0回答:1

首先提供一些背景信息

[当应用在Android 8+中处于后台时,我在启动后台服务时遇到问题。该文档清楚地描述了the new limitations用于背景执行。

所以我继续将我的服务实现为JobIntentService(简单情况下的推荐方法)。这似乎很好用……对于我还是遇到的第一个错误。

播放铃声...应该很容易

[Android 8之前,我们的应用正在使用后台服务通过RingtoneManager播放铃声(在onStartCommand()中开始播放,并在服务停止时停止播放)。这工作得很好。

由于新的后台执行限制,我也尝试使用JobIntentService来完成此任务,但注意到无法将其明确停止。好的,所以我尝试使用JobSchedulerJobService(因为据我了解,JobIntentService基本上应该做相同的事情,而不必担心创建JobInfo)。我没有任何特殊要求,因此我使用了JobIntentServicesetOverrideDeadline(0))所使用的相同内容。

JobService已启动,但是即使我从onStartJob()返回true,它也会被系统立即停止。我正在研究这个问题-也许我在这里做错了。

...还是它?

  • 我还考虑过绑定服务,但似乎很奇怪,因为我还需要从另一个服务中调用它(但也许可以)。绑定服务不受背景限制的影响,因此也许这是正确的方法。
  • 常规后台服务在Android 8之前运行良好,但我显然不能使用它。
  • 我不认为前台服务是制作简单铃声的方法。
  • 我什至尝试将应用程序提升到前台以解决问题,但从谷歌搜索到的感觉,这更像是一种hack,而不是适当的解决方案。

这应该很简单吧?

我有点困惑,播放和停止铃声这一简单问题似乎并不简单,包括背景内容(如果我的应用程序具有某种调用功能,我只需要这个上班了,那为什么还要在这里弄乱我的意思呢?]

我主要不是Android开发人员,因此我可能缺少一些重要的显而易见的东西。我尝试了无休止的搜索,并获得了很多使用RingtoneManager甚至甚至是[[MediaPlayer或类似的东西来播放东西的示例,但是我没有提到背景问题。

感谢任何输入,谢谢。
android background android-8.0-oreo android-jobscheduler ringtone
1个回答
0
投票
我最终使用前台服务播放了铃声。我仍然可以停止该服务,并且允许该服务从后台启动。

股票的Android手机应用程序还会显示呼叫通知,因此也许他们在这里做同样的事情。

© www.soinside.com 2019 - 2024. All rights reserved.