xjsXjtu
xjsXjtu

Reputation: 161

Why not Android MediaPlayer provide getDataSource API?

Is there any considerations why Android MediaPlayer doesn't provide getDataSource API?

What's more, can two MediaPlayer objects play the same file at the same time?

Upvotes: 2

Views: 304

Answers (1)

TpoM6oH
TpoM6oH

Reputation: 8585

That's probably just a design desition because some parts of MediaPlayer is in native code and implementation of getDataSource would be a bit tricky.

You can easily play the same file in two MediaPlayers, just manage it yourself.

    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()
                }
            }

Upvotes: 1

Related Questions