为什么Android MediaPlayer不提供getDataSource API?

问题描述 投票:0回答:1

是否有任何考虑因为Android MediaPlayer不提供getDataSource API?

更重要的是,两个MediaPlayer对象可以同时播放同一个文件吗?

android android-mediaplayer
1个回答
1
投票

这可能只是一个设计决策,因为MediaPlayer的某些部分是本机代码,而setDataSource的实现会有点棘手。

您可以轻松地在两个MediaPlayers中播放相同的文件,只需自己管理即可。

    mediaPlayer.reset()
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC)

    mediaPlayer2.reset()
    mediaPlayer2.setAudioStreamType(AudioManager.STREAM_MUSIC)

    context.resources.openRawResourceFd(R.raw.audio_file)
            .use { assetFileDescriptor ->
                mediaPlayer.setDataSource(assetFileDescriptor.fileDescriptor,
                            assetFileDescriptor.startOffset, assetFileDescriptor.length)

                mediaPlayer.prepareAsync()

                mediaPlayer.setOnPreparedListener {
                    it.start()
                }

                mediaPlayer2.setDataSource(assetFileDescriptor.fileDescriptor,
                            assetFileDescriptor.startOffset, assetFileDescriptor.length)

                mediaPlayer2.prepareAsync()

                mediaPlayer2.setOnPreparedListener {
                    it.start()
                }
            }
© www.soinside.com 2019 - 2024. All rights reserved.