MediaPlayer:如何在STREAM_ALARM中播放

时间:2017-10-15 12:35:35

标签: java android android-mediaplayer android-securityexception

我是android开发的初学者。我需要从原始文件播放媒体作为我的闹钟STREAM_ALARM。我在这里发现了类似的问题: Android MediaPlayer - how to play in the STREAM_ALARM?

接受的答案就像在那个链接上那样:

MediaPlayer mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.setDataSource(this,Uri.parse("android.resource://PACKAGE_NAME/"+R.raw.soundfile));
mp.prepare();
mp.start();

我的项目的第一行是这样的:

package buet.mushfiq.classfriendsupport;

所以,我使用buet.mushfiq.classfriendsupport作为我的项目名称并以这种方式实现了代码:

Uri uri = Uri.parse("android.resource://buet.mushfiq.classfriendsupport/"+R.raw.mytone);
MediaPlayer mp=new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
try{
    mp.setDataSource(this,uri);
    mp.prepare();
    mp.start();}
catch (Exception e){
    }

但遗憾的是没有音频播放,android studio显示此错误:

setDataSource IOException | SecurityException happend: 
java.io.FileNotFoundException: No package found for authority: 
android.resource://buet.mushfiq.classfriendsupport/2131099648

mytone.mp3肯定存在于原始文件夹中。实际位置:app / src / main / res / raw。当我应用这段代码时,Android工作室会很好地播放媒体:

mp = MediaPlayer.create(this, R.raw.mytone);
mp.start();

那么如何在Uri.parse函数中找到我的文件?

1 个答案:

答案 0 :(得分:0)

更改此行

  Uri uri = Uri.parse("android.resource://buet.mushfiq.classfriendsupport/"+R.raw.mytone);

Uri uri = Uri.parse("android.resource://"+this.getPackageName()+"/"+R.raw.mytone);

希望它能正常运转。感谢。