java - Android 中是否有播放、暂停、倒带、快进方法?

标签 java android

我正在开发一个允许用户对着设备说话的 Android 应用程序。然后我想保存它,倒带一部分以再次播放,也许快进到音频的另一部分,暂停,播放等等。就像基本的录音机一样。

是否有任何内置的 API 或方法或代码允许这样做?如果没有,那么我从这里去哪里?

如有任何帮助,我们将不胜感激。

最佳答案

使用 MediaPlayer 您可以在流中寻找不同的位置,但这不同于播放快进(或快退),在 DVR 中也称为“特技播放”。

但是,快进可能可以使用 seekTo 实现像这样:

  • 设置一个周期性计时器(即 postDelayedscheduleAtFixedRate ),每 100 毫秒一次。
  • 在计时器的 Runnable 中,调用 seekTo 并使用一个代表您想要的播放速率的因子的值。
    • 因此,如果您想要 2 倍快进,那么在每 100 毫秒周期之后,您将寻求 curr_pos + 100 毫秒。这意味着 100 毫秒已经过去,但现在您处于 prev_pos + 200 毫秒。
    • 执行 4x 意味着在每 100 毫秒的周期之后,您寻求 curr_pos + 300 毫秒。

.

  • 我刚刚意识到 seekTo 可能会寻找最近的引用或 I 帧。因此调用 seekTo(curr_pos + 100) 可能无法到达您想要的精确位置。

我可能需要在我正在使用的视频播放器中实现 FF。如果我让它工作,我会在这里更新我的答案。

关于java - Android 中是否有播放、暂停、倒带、快进方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7354431/

相关文章:

java - Android 无法访问更改系统设置权限

java - Android 和 data.gov

java - 为什么我的 if 语句不起作用?

java - 交换字符串中的字母

android - 无法解析 ':app@releaseUnitTest/compileClasspath' : Could not resolve com. android.support :appcompat-v7:27. 1.1 的依赖项

Android SQLite 数据库(像我五岁一样解释)

java - Web 应用程序上的错误 406

android - Xamarin - PrintService 项目上的 "java.lang.RuntimeException: Unable to instantiate service"

android - 从电吉他到 Android 设备的音频流

android - 如何在使用 setSpan 时忽略某些单词或字符