持续聆听 Oreo 播放的音乐
Continually listen for music playing in Oreo
我有一项服务使用 AudioManager 通过 isMusicActive 持续收听在单独的音乐应用程序中播放的音乐。这意味着该服务需要始终在后台 运行。该应用程序的主要目的是跟踪花在听音乐上的时间。
一直在Marshmallow上使用,现在想在Oreo上实现同样的功能,但是由于后台服务的限制,好像没有办法实现。我无法使用前台服务,因为音乐应用程序将位于前台。创建我自己的音乐应用程序是唯一的解决方案吗?
没有系统的帮助,你最好的机会是使用前台服务。
I can't use a foreground service because the music app will be in the
foreground
可以,只要服务在前台,您只需要显示通知即可。
后台任务限制背后的原因是,用户应该以某种方式意识到他们 运行,全天候 运行 执行一项任务会对电池产生巨大影响.
不过,对于您想要实现的目标,可能还有其他选择。您可以有一个周期性计时器(例如,每 5 分钟一次),然后检查音乐是否仅按间隔播放。您可以仅根据间隔观察进行粗略估计。例如。如果您检测到音乐连续播放 3 次且间隔为 5 分钟,则您算作大约 15 分钟的收听时间。
我有一项服务使用 AudioManager 通过 isMusicActive 持续收听在单独的音乐应用程序中播放的音乐。这意味着该服务需要始终在后台 运行。该应用程序的主要目的是跟踪花在听音乐上的时间。
一直在Marshmallow上使用,现在想在Oreo上实现同样的功能,但是由于后台服务的限制,好像没有办法实现。我无法使用前台服务,因为音乐应用程序将位于前台。创建我自己的音乐应用程序是唯一的解决方案吗?
没有系统的帮助,你最好的机会是使用前台服务。
I can't use a foreground service because the music app will be in the foreground
可以,只要服务在前台,您只需要显示通知即可。
后台任务限制背后的原因是,用户应该以某种方式意识到他们 运行,全天候 运行 执行一项任务会对电池产生巨大影响.
不过,对于您想要实现的目标,可能还有其他选择。您可以有一个周期性计时器(例如,每 5 分钟一次),然后检查音乐是否仅按间隔播放。您可以仅根据间隔观察进行粗略估计。例如。如果您检测到音乐连续播放 3 次且间隔为 5 分钟,则您算作大约 15 分钟的收听时间。