Почему я могу получить идентификатор mp3-файла в raw, а не программно и как это исправить? - PullRequest
0 голосов
/ 12 февраля 2019

Я начал разрабатывать приложение для Android, и я очень новичок в этом.Мое приложение должно прочитать некоторый QR-код, и в данный момент я использую библиотеку zxing.Теперь у меня возникла проблема с частью приложения, которая включает воспроизведение звуков, хранящихся в / res / raw:

мой код иногда запускается .. но в большинстве случаев он не

Я могу получить доступ к некоторым звуковым файлам в необработанной папке с помощью этого кода:

var myPlayer = MediaPlayer.create(this, R.raw.filename)

, но не вызывая нужный мне файл через переменную:

var myVarWithFilenameInside: String = "filename"        
var myFileInt: Int = resources.getIdentifier("$myVarWithFilenameInside", "raw", this.getPackageName())
var myPlayer = MediaPlayer.create(this, myFileInt)

(даже если, очевидно, в "random"msgstr "это иногда срабатывает; на самом деле это довольно странно ..)

Я уже пытался не указывать тип переменной, а также вставлять packageName (как предложено в IDE) вместо this.getPackageName ()... Однако, похоже, ничего не работает

PS.Кроме того, эта инструкция работает отлично, но опять же я должен получить идентификатор без использования переменной, но положить его внутри метода вручную

var myFileInt: Int = resources.getIdentifier("filename", "raw", this.getPackageName())
var myPlayer = MediaPlayer.create(this, myFileInt)

Я очень застрял с этим ... Так что любая помощьбудет оценено Спасибо заранее

1 Ответ

0 голосов
/ 12 февраля 2019

Если в папке raw есть файл filename.mp3 , это работает для меня:

var myVarWithFilenameInside = "filename"
var myFileInt: Int = resources.getIdentifier(myVarWithFilenameInside, "raw", this.packageName)
var myPlayer: MediaPlayer = MediaPlayer.create(this@YourActivity, myFileInt)
myPlayer.start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...