如何在Android O中动态更改通知声音

Woo*_*ung 5 audio notifications android channel android-8.0-oreo

最近我使用通知通道来支持android O.但问题是我无法动态改变声音Uri.我们的应用程序具有通知声音设置,用户可以根据需要更改应用程序通知声音 但是如您所知,Android现在不允许开发人员在用户重新安装应用之前更新通知频道.在那里,我考虑几种可能的解决方案,看起来不太好.

  1. 用户铃声管理器播放铃声而不是setSound.但是当用户在应用设置中禁用通知时,仍然会停止播放铃声.(这将是糟糕的用户体验)

  2. 当用户更改铃声时,删除通知频道并创建新频道.但这看起来也很糟糕,因为在应用程序设置中,谷歌会显示已删除频道信息的历史记录.(实际上没有必要)

有什么好的解决方案吗?

ian*_*ake 8

在Android O +设备上,您应该删除应用中的任何通知特定设置,并在设置屏幕中提供链接以打开系统的通知频道设置,用户可以直接调整通知频道的声音.

  • 您添加到[铃声目录](https://developer.android.com/reference/android/os/Environment.html#DIRECTORY_RINGTONES)的任何铃声都将自动提供.频道的设置在创建后由用户拥有 - 他们是直接在单个集中式系统UI中选择重要性级别(即,您的通知是否发出声音)以及声音的人. (4认同)
  • 但是我们想为我们的应用程序使用自定义声音而不是谷歌设备提供的铃声。正如我所说,用户可以从列表中选择他们最喜欢的铃声。(这些声音之前是由我们的用户语音录制的)。我知道为什么 google 会引入通知通道,但不明白为什么他们不允许动态修改 setSound。 (2认同)
  • 一些用户抱怨说,他们的电话上的系统通知设置缺少更改声音的选项。我收到了来自三星A5,华为Honor View 10,华为Honor 9的快照,使用GMail通知设置按钮进行了演示。有人面对过吗? (2认同)
  • @mdicosimo 是的,我试过华为nova,小米PAD 4,用户只能打开/关闭声音,不能选择不同的铃声。 (2认同)
  • 假设我有20种声音可供用户选择,那么最佳做法是什么?是否应该将所有内容复制到Ringtone文件夹中,并与其他应用程序和用户SDCard混淆?我希望这些声音保持在我的应用程序内部。 (2认同)
  • 我还遇到过这样的情况:我有大约 20 种声音用作通知。不能使用电话选择器,因为此应用程序是政府应用程序,必须仅从这 20 种声音中选择一种。我当前的选择是预先创建 20 个通知渠道...我认为 Google 需要稍微修改一下这个通知渠道。如果我删除并重复使用通知通道 ID,他们应该让我更改它的设置。 (2认同)