在我针对 API 23+ 的混合 Cordova Android 应用程序中,我想使用自定义声音进行通知。为此,我做了以下事情
- 在
plugin.xml
我在应用程序中使用的单个自定义插件的文件中,我声明<resource-file src="src/android/res/unysound.mp3" target="res/raw/mysound.mp3" />'
。
打开 APK 作为 zip 存档,我看到 mp3 文件实际上已经在“res/raw/mysound.mp3”中结束。 - 构建通知时我执行以下操作
Notification notification = new Notification.Builder(context)
.setDefaults(0) //turns off ALL defaults
.setVibrate(vibrate) /sets to vibrate
....
.setSound(uri).build();
在哪里
Uri uri = Uri.parse("android.resource://" + ctxt.getPackageName() + "/raw/mysound.mp3");
这似乎是我在谷歌搜索上什至在 SO 的其他线程中找到的许多文章中指出的方法。然而,当我发出通知时,我没有听到预期的声音。我可能做错了什么?
下面的答案没有帮助,因为在我的带有自定义插件的混合 Cordova 应用程序的上下文中,尝试构建 APK 会抛出错误 class R not known/found...
原文由 DroidOS 发布,翻译遵循 CC BY-SA 4.0 许可协议
下面的代码将帮助你:
其中 mysound 是我的铃声,放在 res/raw 文件夹下。
注意:你只需要输入没有扩展名的铃声名称,比如 raw/mysound
注意:在 Android Oreo 中,您必须更改频道 ID 才能使更改生效。在 Oreo 版本之前,使用“.setDefaults()”会阻止播放自定义声音。