如何在一个列表中播放来自Android的特定音频文件?

如何在一个列表中播放来自Android的特定音频文件?,android,ringtone,Android,Ringtone,我需要知道是否有可能播放android内置铃声文件中的特定音频文件。例如,假设Tone_23在android铃声列表中,现在我需要在单击按钮时播放此特定铃声。我在谷歌上搜索了一下,我得到了关于如何呼叫/显示铃声Epicker活动的指导(整个铃声列表都会显示出来)。如果可能的话,请分享你的想法。提前感谢。我认为您只能播放系统中自动设置的铃声,例如: Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIF

我需要知道是否有可能播放android内置铃声文件中的特定音频文件。例如,假设Tone_23在android铃声列表中,现在我需要在单击按钮时播放此特定铃声。我在谷歌上搜索了一下,我得到了关于如何呼叫/显示铃声Epicker活动的指导(整个铃声列表都会显示出来)。如果可能的话,请分享你的想法。提前感谢。

我认为您只能播放系统中自动设置的铃声,例如:

Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
r.play();

如果您总是想播放特定的音调/文件,则必须将其添加到您的资产中,然后从那里播放。

您可以尝试以下方法:

/**
 * Play ring tone.
 *
 * @param ringToneTitle the ring tone title
 */
void playRingTone(String ringToneTitle) {
    RingtoneManager ringtoneManager = new RingtoneManager(
            getApplicationContext());
    ringtoneManager.setType(RingtoneManager.TYPE_RINGTONE);

    int length = ringtoneManager.getCursor().getCount();

    for (int i = 0; i < length; i++) {
        Ringtone mRingtone = ringtoneManager.getRingtone(i);
        if (mRingtone != null) {
            Log.d("ringtoneTitle ", mRingtone.getTitle(getApplicationContext()));
            if(ringToneTitle.equalsIgnoreCase(mRingtone
                        .getTitle(getApplicationContext())) {
                mRingtone.play();
            }
        }
    }
}
/**
*播放铃声。
*
*@param RingtoneTile铃声标题
*/
无效播放铃声(字符串铃声){
RingtoneManager RingtoneManager=新的RingtoneManager(
getApplicationContext());
ringtoneManager.setType(ringtoneManager.TYPE_RINGTONE);
int length=ringtonemager.getCursor().getCount();
for(int i=0;i
希望这有帮助

补充:还可以看看这个类


RingtoneManager提供对铃声、通知和其他类型声音的访问。它管理对不同媒体提供商的查询,并将结果合并到一个光标中。它还为每个铃声提供铃声。我们通常称这些声音为铃声,但类型是指适用于手机铃声。

@SunniSonic:你的意思是,我只能播放设备默认铃声。我说得对吗?如果你将默认铃声与用户设置的铃声联系起来,那么你是对的。你可以播放这些铃声。例如,如果你设置了“再打我一次宝贝”:D作为您的铃声,您可以启动该铃声,但不能启动其他铃声。您必须拥有任何其他铃声作为资产。特别是因为所有手机制造商的铃声并不都相同。这样,您的应用程序只能在某些设备上运行。我得到了铃声列表的总数,现在我需要打印铃声名称,无论其中有什么列表。我该怎么做。请检查,我已经用以下语句更新了答案
Log.d(“ringtoneTitle”,mRingtone.getTitle(getApplicationContext());
谢谢你的帮助,效果很好,现在我需要播放列表中的一个音频文件,所以我使用uricontent://media/internal/audio/media/162 但它抛出异常,文件无法播放。为什么会happens@Aerrow它抛出了哪个异常?你能提供完整的堆栈跟踪吗?我用下面的代码来播放音频文件MediaP层mediaPlayer=新mediaPlayer();FileInputStream fis=新FileInputStream(“content://media/internal/audio/media/186);mediaPlayer.reset();mediaPlayer.setDataSource(fis.getFD());mediaPlayer.setLooping(false);mediaPlayer.prepare();mediaPlayer.start();我将得到以下错误,09-26 16:21:03.320:W/System.err(10425):java.io.FileNotFoundException:/content:/media/internal/audio/media/186:open failed:enoint(没有这样的文件或目录)