Java 如何使用Android ringtone manager从资产文件夹播放铃声?

Java 如何使用Android ringtone manager从资产文件夹播放铃声?,java,android,ringtone,Java,Android,Ringtone,我可以使用Android铃声管理器播放资产中存在的铃声吗?我知道我可以通过以下方式使用Res文件夹中复制的音调: Uri inAppsoundUri = Uri.parse("android.resource://" + mAppContext.getPackageName() + "/raw/" + tone);** ringTone = RingtoneManager.getRingtone(mAppContext, inApp

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

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

但当我尝试在inAppsoundUri中用/assets/替换/raw/时,结果出现了错误。实际上,我还想将铃声复制到SD卡,用于某些特定于应用程序的用途,为此我必须将这些铃声文件保存在资源中,有时我还必须通过Ringtone manager播放铃声,为此我必须将相同的文件复制到Res/raw文件夹中。因此,apk中存在相同音调文件的不必要的2个副本,这会导致较大的apk大小。那么,你能不能建议一下实现这两个功能的方法。从同一个地方复制到SD卡并使用Android Ringtone mnager播放?

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

Uri inAppsoundUri = Uri.parse("file:///android_asset/tone.mp3"); 
并将tone.mp3放在assert文件夹中


谢谢

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

Uri inAppsoundUri = Uri.parse("file:///android_asset/tone.mp3"); 
并将tone.mp3放在assert文件夹中


谢谢

您可以发布错误日志吗?即使文件是res/raw格式的,您也可以将其复制到外部内存中。打开一个输入流。进一步的代码,比如从资产复制到sdcard。可能重复@haresh:在用资产替换/raw/后,我遇到了这个异常,无法打开文件“android”。resource://package_name/assets/Tone/tonee_file'. 没有这样的文件或目录。但我已经确认同一个文件存在于提到的文件夹中。我发现打开文件失败错误@greenapps:这看起来是个不错的选择,我可以避免额外的拷贝,谢谢。在您提到的链接中,音频是通过媒体播放器而不是铃声管理器播放的。但我不能使用媒体播放器,因为如果连接了耳机,则音频会通过耳机而不是扬声器传送,但我始终希望通过扬声器播放音频。请发布错误日志,即使文件在res/raw中,也可以将其复制到外部存储器中。打开一个输入流。进一步的代码,比如从资产复制到sdcard。可能重复@haresh:在用资产替换/raw/后,我遇到了这个异常,无法打开文件“android”。resource://package_name/assets/Tone/tonee_file'. 没有这样的文件或目录。但我已经确认同一个文件存在于提到的文件夹中。我发现打开文件失败错误@greenapps:这看起来是个不错的选择,我可以避免额外的拷贝,谢谢。在您提到的链接中,音频是通过媒体播放器而不是铃声管理器播放的。但我不能使用媒体播放器,因为如果连接了耳机,则音调通过耳机传递,而不是通过扬声器,但我始终希望通过扬声器播放音调。