У меня есть функция, которая находит путь к аудиофайлам моего телефона, поэтому я почти уверен, что путь, который я получил, правильный. Я могу воспроизвести необработанный файл во время тестирования, но не могу воспроизвести звук по абсолютному пути хранилища, приложение просто зависло, когда я нажал кнопку воспроизведения
//This testing code works
mediaPlayer = MediaPlayer.create(this, R.raw.sample_audio1)
mediaPlayer.start()
//setDataSource does not work for me
mediaPlayer.setDataSource(this, Uri.parse("/storage/emulated/0/Music/thomasF1.mp3"))
mediaPlayer.prepare()
mediaPlayer.start()
//This does not work for me as well
mediaPlayer = MediaPlayer.create(this, Uri.parse("/storage/emulated/0/Music/thomasF1.mp3")
mediaPlayer.start()
//manifest xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mediaplayer">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
...
//in the MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
Log.i("mpdebug", "onCreate")
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
list = getAudioDirectories()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), requestCode)
} else {
Log.i("mpdebug", list.toString())
Log.i("mpdebug", "permission granted")
initListeners()
}
}
private fun initListeners() {
// Start the media player
playBtn.setOnClickListener {
if (pause) {
mediaPlayer.seekTo(mediaPlayer.currentPosition)
mediaPlayer.start()
pause = false
Toast.makeText(this, "media playing", Toast.LENGTH_SHORT).show()
} else {
val path =
Environment.getExternalStorageDirectory().absolutePath + "/Music/thomasF1.mp3"
Log.i("mpdebug path", path)
try {
mediaPlayer = MediaPlayer.create(applicationContext, Uri.parse(path))
// mediaPlayer = MediaPlayer.create(applicationContext, R.raw.sample_audio1)//
mediaPlayer.start()
} catch (e: Exception) {
Log.i("mpdebug", e.toString())
}
Toast.makeText(this, "media playing", Toast.LENGTH_SHORT).show()
}
...
}