Ошибочное создание MediaPlayer с Uri или файлом в активах

Я скопировал song.mp3 в каталог активов своего проекта и написал этот код:

private MediaPlayer mp;

Uri uri = Uri.parse("file:///android_asset/song.mp3");

mp=MediaPlayer.create(this, uri);

После выполнения создать оператора переменный член парламента является пустым. Что не так?

Спасибо.

10
задан Fran Verona 2 October 2012 в 18:40
поделиться

1 ответ

Попробуйте это и посмотрите, пойманы ли какие-либо исключения:

try {
    MediaPlayer mp = new MediaPlayer();
    mp.setDataSource(this, uri);
}
catch (NullReferenceArgument e) {
    Log.d(TAG, "NullReferenceException: " + e.getMessage());
}
catch (IllegalStateException e) {
    Log.d(TAG, "IllegalStateException: " + e.getMessage());
}
catch (IOException e) {
    Log.d(TAG, "IOException: " + e.getMessage());
}
catch (IllegalArgumentException e) {
    Log.d(TAG, "IllegalArgumentException: " + e.getMessage());
}
catch (SecurityException e) {
    Log.d(TAG, "SecurityException: " + e.getMessage());
}

Пойманное исключение объяснит, что идет не так в вашем создании. Согласно документации, статический метод create - это просто сокращение для того, что находится в блоке try выше. Основное различие, которое я вижу, заключается в том, что статический метод create не бросает, в то время как setDataSource бросает.

6
ответ дан 3 December 2019 в 15:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: