URI из строки вызывает сбой приложения.Я использую это неправильно? - PullRequest
0 голосов
/ 13 июня 2019

В директории raw у меня есть файлы с именами от rhode1.mp3 до rhode49.mp3.

Мне нужно случайным образом воспроизвести один из этих файлов, поэтому я случайным образом генерирую число и прикрепляю его к R.raw.rhode для использования в качестве URI (uri1 в приведенном ниже коде), но это приводит к сбою приложения. Например, когда я заменяю uri1 на R.raw.rhode1, это работает, и аудиофайл воспроизводится.

Я пытался написать R.raw.rhode$note1.mp3, и все равно это не сработало. Также попробовал:

("R.raw.rhode" + note1.toString() + ".mp3")

И

("R.raw.rhode" + note1.toString())

переопределить забаву onCreate (saveInstanceState: Bundle?) {

    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    var mediaplayer: MediaPlayer? = null
    val letsgo = findViewById<Button>(R.id.start)
    val think = findViewById<SeekBar>(R.id.think)
    val extime = findViewById<SeekBar>(R.id.extime)
    val rpt = findViewById<SeekBar>(R.id.rpt)
    val rtime = findViewById<SeekBar>(R.id.rtime)
    var note1: Int
    var uri1: Uri

    letsgo.setOnClickListener {

        note1 = Random.nextInt(49) + 1
        uri1 = Uri.parse("R.raw.rhode" + note1.toString())
        mediaplayer = MediaPlayer.create(applicationContext, uri1)
        mediaplayer!!.start()
    }
}

1 Ответ

0 голосов
/ 13 июня 2019

R.resourceType.resourceName является действительным символом с точки зрения языка программирования. Но это, очевидно, не URL / URI.

Вот пример того, как построить URI ресурса: https://stackoverflow.com/a/7979084/3050249

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...