【问题标题】:how to play a tone from assets folder using Android ringtone manager?如何使用 Android 铃声管理器从资产文件夹中播放铃声?
【发布时间】:2015-01-23 07:23:58
【问题描述】:

我可以使用 Android 铃声管理器播放资产中存在的铃声吗?我知道我可以通过以下方式使用复制到 Res 文件夹中的音调:

Uri inAppsoundUri = Uri.parse("android.resource://"
            + mAppContext.getPackageName() + "/raw/" + tone);**
ringTone = RingtoneManager.getRingtone(mAppContext,
                    inAppsoundUri);**
ringTone.play();

但是当我尝试在 inAppsoundUri 中将 /raw/ 替换为 /assets/ 时,会导致错误。实际上,我还想将音调复制到 Sdcard 以用于某些特定于应用程序的用途,为此我必须将这些音调文件保存在资产中,而且有时我必须通过铃声管理器播放它,为此我必须在 Res 中复制相同的文件/原始文件夹。因此,apk 中存在不必要的 2 个相同音调文件的副本,这会导致 apk 大小变大。那么您能否建议任何方法从同一个地方执行这两个功能(即复制到 sdcard 并使用 Android Ringtone mnager 播放)?

【问题讨论】:

  • 你能发布错误日志吗?
  • 即使文件在 res/raw 中,您也可以将它们复制到外部存储器。打开一个输入流。进一步的代码,例如从资产复制到 sdcard。
  • @haresh: 用资产替换 /raw/ 后出现此异常 无法打开文件 'android.resource://package_name/assets/Tone/tonee_file'。 (无此文件或目录)。但我已经验证了在提到的文件夹中有相同的文件。
  • 我收到“无法打开文件”错误。 @greenapps:这看起来是一个不错的选择,我可以避免额外的复制,谢谢。在您提到的链接中,音频是通过媒体播放器而不是铃声管理器播放的。但我不能使用媒体播放器,因为如果连接了耳机,那么音调是通过耳机而不是通过扬声器发送的,但我总是想通过扬声器播放音调。

标签: java android ringtone


【解决方案1】:

我正在检查它,但我认为它对你有帮助。

Uri inAppsoundUri = Uri.parse("file:///android_asset/tone.mp3"); 

并将tone.mp3 放在assert 文件夹中。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    相关资源
    最近更新 更多