服务或 IntentService 在录制后播放音频

Service OR IntentService playing audio after recording

我想实现以下目标:

我知道前 2 个任务可以通过使用 Service 实现,因为我在之前的一个应用程序中已经做到了,但是在播放音频文件时,它需要从 Activity.

触发

因为从 Service 访问 Activity 可以通过使用 BroadcastReceiver 来实现,但是从 Activity 访问 Service 的方法呢?

那么,现在问题来了:是否为 服务 本身寻求 播放音频(由 activity 触发) 或者使用 IntentService.

文档说,

No easy or direct way to interact with user interface directly from IntentService.

Any tasks started using IntentService cannot be interrupted

我可能想停止录制蚂蚁时间并随时播放。

哪个最适合需求 --> ServiceIntentService ??

如有任何建议,我们将不胜感激。

我会使用 Service 而不是 IntentService 来满足您的需要。

特别是,使用绑定 Service,它允许绑定到它的 Activity 和从 ServiceActivity 之间的双向通信。

IntentService class 专为使用自己的工作线程的一次性操作而设计,一旦线程上的工作完成,线程就会终止并且 IntentService 调用 stopSelf() 终止自身。这意味着用户(通过 Activity)和 IntentService 之间的任何用户交互都是有问题的。

另一方面,绑定 Service 将一直存在,直到它被显式停止或直到最后一个绑定组件解除绑定。这允许更长期的互动。

对于回放,Service 在 UI 线程上运行的事实不是问题,如果您使用 MediaPlayer 之类的东西处理它自己的线程用于回放。

此外,如果您使用绑定 ServiceMediaPlayerMediaController,您可以从 Activity 控制播放、停止、暂停、搜索等.

编辑:有关更多信息,请参阅... Bound Services