android:使用单个 mediaplayer 对象播放音频文件并显示图像
Posted
技术标签:
【中文标题】android:使用单个 mediaplayer 对象播放音频文件并显示图像【英文标题】:android:play audio files using single mediaplayer object and also display images 【发布时间】:2012-02-02 07:34:34 【问题描述】:我需要一个接一个地显示图像和播放相应的音频文件。
我尝试创建多个媒体播放器对象,但它显示error(1, -17)
所以请帮帮我,我没时间了。
现在我有一个播放音频文件的处理程序,然后在播放另一个音频文件时获取该音频文件的持续时间,这是我的方法,但我无法播放大约 10 个文件
下面是我的示例代码
img.setBackgroundResource(R.drawable.d002_p001);
d002_ae_p001 = MediaPlayer.create(this, R.raw.d002_ae_p001);
handler.postDelayed(new Runnable()
@Override
public void run()
// TODO Auto-generated method stub
d002_ae_p001.start();
xml();
,1000);
d002_ae_p002 = MediaPlayer.create(this,R.raw.d002_ae_p002);
handler.postDelayed(new Runnable()
@Override
public void run()
// TODO Auto-generated method stub
i++;
img.setBackgroundResource(R.drawable.d002_p002);
d002_ae_p002.start();
xml();
,d002_ae_p001.getDuration()+2000);
编辑了我的代码
int image[] = R.drawable.apple,R.drawable.boy,R.drawable.cat;
String audio[]="apple_v.mp3","boy_v.mp3","cat_v.mp3";
MediaPlayer mp = new MediaPlayer();
AssetFileDescriptor descriptor;
try
descriptor = getAssets().openFd(audio[i]);
mp.setDataSource( descriptor.getFileDescriptor(), descriptor.getStartOffset(),descriptor.getLength());
descriptor.close();
mp.prepare();
mp.start();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
mp.setOnCompletionListener(new OnCompletionListener()
@Override
public void onCompletion(MediaPlayer arg0)
// TODO Auto-generated method stub
img.setImageResource(image[i]);
i++;
mp.start();
);
【问题讨论】:
【参考方案1】:这是我的建议:
首先,将 MP3 文件放入非原始资源中。此代码将从资产中播放:
MediaPlayer mp = new MediaPlayer();
AssetFileDescriptor descriptor;
descriptor = getAssets().openFd( "filename.mp3" );
mp.setDataSource( descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength() );
descriptor.close();
mp.prepare();
mp.start();
mp.setOnCompletionListener(
new OnCompletionListener()
@Override
public void onCompletion(MediaPlayer mp)
//code here to change your image, suggest having an array of filenames and incrementing
//each time you pass through.
);
希望有帮助
【讨论】:
tony 以前我有一个数组,如 int image[] = R.raw.apple,R.raw.boy,R.raw.cat;对于资产如何采取 字符串图像[] = "file1.mp3", "file2.mp3", "file3.mp3"; 嘿,我只能播放一个音频文件,我可以更改图像,所以我给了 mp.start() nw 它不断循环任何解决方案 是的,我已经标记了它可以获取您的邮件 ID,以便我们可以分享这样的东西? 这是我的 Google+ 页面,请随时添加我。 plus.google.com/u/0/111365666249481367719/posts以上是关于android:使用单个 mediaplayer 对象播放音频文件并显示图像的主要内容,如果未能解决你的问题,请参考以下文章
如何在所有活动和片段中使用 MediaPlayer 的单个实例?