首页 > 解决方案 > Android 中的 MediaPlayer 延迟工作

问题描述

我正在尝试在非常精确的时刻播放非常短的 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库什么的)

标签: javaandroid

解决方案


你的音频很短,也许你可以试试“SoundPool”。


推荐阅读