连续录制音频并更新视图

时间:2015-06-24 10:06:17

标签: android audio service

我需要在Android应用中连续(小时)录制来自麦克风的未压缩音频,处理音频并在绘图中显示结果。如果应用程序失去焦点,绘图可以(并且应该)停止,但录制和分析不应该。

我不确定我是否采取了正确的步骤,所以这是我想到的实现:

  1. A RecordActivity处理视图,特别是在结果到达并按下按钮时绘制结果。 record按钮会启动RecordService
  2. RecordService服务初始化android.media.AudioRecord并在其AudioRecord.OnRecordPositionUpdateListener读取缓冲区中,将其保存到文件并分析其内容。存储分析结果。
  3. RecordService使用PendingIntent将分析结果传达给RecordActivity,以更新情节。
  4. 当用户按下停止按钮时,RecordActivity会通过拨打stopService来终止服务。
  5. 我的问题是:

    1. 为此使用服务是正确的还是我可以使用某项活动?
    2. 使用已启动的服务而不是绑定服务是否正确?
    3. 这个过程的哪些部分应该由不同的线程(甚至过程)处理? AudioRecord? (分析显然取决于要求)。整个服务?
    4. 该服务应该是Foreground服务吗?
    5. 一般来说,这个结构是否正确?

1 个答案:

答案 0 :(得分:0)

  1. Service是一个很好的解决方案,我不明白为什么你要使用PendingIntent。也许您应该考虑使用LocalBroadcast和普通Intent
  2. 在这种情况下,由于服务绑定到Activity的生命周期,我建议使用有界Service:)
  3. 嗯......这取决于。如果AudioRecording实现有自己的线程(我猜在Android中),那么它并不是严格要求使用线程。但是如果你给文件系统写了很多数据,最好在服务中启动一个线程并在那里处理你的逻辑(记住服务不是线程)
  4. 这取决于您的设计。如果您在应用程序转到后台时暂停Service逻辑,则不需要。但是,即使应用程序在后台运行,如果您需要服务,那么使用前台Service
  5. 会更好
  6. 总的来说,我认为这是一个很好的解决方案