3

我想实现以下目标:

  • 录制音频
  • 发送音频到服务器
  • 播放音频

我知道前 2 个任务可以通过使用服务来完成,就像我在之前的一个应用程序中所做的那样,但是在播放音频文件时,它需要从 Activity 触发。

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

所以,现在出现了一个问题:是使用Service本身来播放音频(从活动触发)还是使用IntentService

文档说,

没有简单或直接的方式直接从 IntentService 与用户界面进行交互。

任何使用 IntentService 启动的任务都不能被中断

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

哪个最适合他的要求--> Service OR IntentService ??

任何建议将不胜感激。

4

1 回答 1

8

我会使用 aService而不是 anIntentService来满足您的需要。

特别是,使用允许在绑定到它的对象和从绑定到的对象Service之间进行双向通信的绑定。ActivityServiceActivity

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

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

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

此外,如果您使用绑定Service,MediaPlayerMediaController,您可以从Activity.

编辑:有关更多信息,请参阅...绑定服务

于 2015-03-13T09:26:43.323 回答