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