为什么Android MediaPlayer不提供getDataSource API?

时间:2018-02-28 07:20:00

标签: android android-mediaplayer

有没有考虑为什么Android MediaPlayer不提供getDataSource API?

还有两个MediaPlayer对象可以同时播放同一个文件吗?

1 个答案:

答案 0 :(得分:1)

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

您可以轻松地在两个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()
                }
            }