我有一个工作的警报接收器等,它启动我的警报屏幕活动'。 我希望这个活动能够从资源中播放MP3文件作为警报音。
发现了许多问题和答案,但没有可行的解决方案: - (
我的文件位于:... MyFirstApp \ app \ src \ main \ res \ raw folder
以下代码位于我的活动的onCreate方法中:
Uri uri_a = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
Uri uri_b = Uri.parse("android.resource://com.myapps.myfirstapp/res/raw/" + R.raw.def_alarm_tone);
ringTone = RingtoneManager.getRingtone(getApplicationContext(), uri_b);
ringTone.play();
如果我在第3行使用uri_a - 它可以工作并播放默认闹钟铃声。
如果我使用uri_b - 我没有声音 - 日志中的错误显示java.io.FileNotFoundException
。
那么,关于我做错了什么的建议 - 还是替代方案/更好的解决方案???
此外,有关管理应用警报/提醒的一些建议也不错。
使用MediaPlayer作为替代方案的警示有哪些优缺点?
答案 0 :(得分:1)
为什么不尝试这样的事情?
MediaPlayer BG;
....
BG = MediaPlayer.create(getBaseContext(), R.raw.def_alarm_tone);
BG.setLooping(false);
BG.setVolume(100, 100);
...
//whenever you want to use it
BG.start();
确保该文件位于App res / raw目录中。
答案 1 :(得分:0)
原来我在使用URI时遇到了麻烦,因为我的应用程序ID与Gradle Script(Module:app)中的程序包名称不匹配...因为我最近更改了我的应用程序名称。
修正了,现在它按预期工作。