首页 > 解决方案 > SoundPool - 声音文件中的什么位置

问题描述

我在 Android 中使用 Soundpool 加载了声音。

我已经使用该play功能播放声音。

我如何知道一个文件有多长以及我当前在该文件中的哪个位置播放?

标签: androidsoundpool

解决方案


声音文件时长

MediaPlayer可能是你最好的选择,在这里:

MediaPlayer player = MediaPlayer.create(ctxt, R.raw.mysound);
int duration = player.getDuration();
player.release();    //(If not using this player later on)

当前播放位置

SoundPool不支持此功能。您的三个主要选择:

  1. 用于MediaPlayer播放。MediaPlayer提供一种getCurrentPosition()方法。
  2. 使用AudioTrack-- 手动将未压缩的音频逐字节发送到流中。AudioTrack具有确定播放位置的一些基本功能(在大多数设备上通常精确到几十毫秒内),除此之外,您还可以确切地知道有多少音频被添加到播放缓冲区。
  3. 坚持使用SoundPool,但要自己计时。也就是说,花一点时间 hack ( SystemClock.UptimeMillis()) 或设置 a CountDownTimer,并通过假设播放一play()返回就开始来估计您的播放位置。这种方法充满了问题和不准确之处,但具有不涉及AudioTrack's复杂性的好处。

推荐阅读