Android中的MediaPlayer延迟运行

时间:2019-01-03 00:09:16

标签: java android

我正在尝试在非常精确的时刻播放非常短的wav文件(每个文件约0.5秒)。

我已经加载了wav文件,并试图在循环播放时播放它:

private val player = MediaPlayer()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val afd = resources.openRawResourceFd(R.raw.sub_kick_36_045)
        val fileDescriptor = afd.fileDescriptor

        try {
            player.setDataSource(
                fileDescriptor, afd.startOffset,
                afd.length
            )
            player.isLooping = true
            player.prepare()

        } catch (ex: IOException) {
            Log.d("Activity", ex.message)
        }

        play.setOnClickListener {
            player.start()
        }

        stop.setOnClickListener {
            player.stop()
        }
    }

声音正在播放,但是播放循环时我有明显的延迟。

我发现一个应用程序可以非常准确地播放声音,但是它使用更复杂的过程来播放文件,并且文件本身非常特殊(不是wav)

https://github.com/tube42/drumon

也许你们可以建议我如何以最小的延迟立即播放声音(0.5秒至5秒长)。 (使用某些Java库之类的东西)

1 个答案:

答案 0 :(得分:0)

您的音频很短,也许您可​​以尝试“ SoundPool”。