Reputation: 161
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
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