Что вы передаете для значения контекста?Контекст используется, чтобы знать, где искать файл ресурса.Похоже, вы могли вызвать это внутри AsyncTask?Вы используете getApplicationContext()
, чтобы получить ссылку?Например, если бы этот код был внутри Activity, вы бы назвали этот метод следующим образом:
MediaPlayer.create(this, R.raw.notification).start();
Если нет, вам нужно передать соответствующий контекст, который сопоставляется с вашим пакетом приложения.
Другая возможность - ваш R.java устарел.Убедитесь, что в ваших XML-файлах нет ошибок, препятствующих восстановлению ресурсов, и, возможно, запустите очистку проекта.
Еще одна вещь, которую вы можете попробовать, это поместить ваш MP3-файл в каталог assets и попробоватьзагрузить звук таким образом.Для файла, расположенного по адресу assets/notification.mp3
:
MediaPlayer mp = new MediaPlayer();
AssetFileDescriptor afd = getAssets().openFd("notification.mp3");
mp.setDataSource(afd.getFileDescriptor());
afd.close();
mp.prepare();
mp.start();
Попробуйте сначала это в Деятельности, так как getAssets()
необходимо вызывать из контекста.Этот метод позволяет обойти проблемы, которые могут возникать в пакете ресурсов, и может лучше определить, где истинный виновник.
Надеюсь, это поможет!