机器人:玩用单MediaPlayer对象音频文件,还可以显示图像 [英] android:play audio files using single mediaplayer object and also display images
问题描述
我需要显示的图像和之后的其他播放相应的音频文件中的一个。
我试图创建多个媒体播放器的对象,但它显示了错误(1,-17)
所以plz帮助大家好我的时间不多了。
现在我有一个处理程序,该播放音频文件,然后获取音频文件的持续时间,同时播放其他音频文件,这是我的做法,但我无法播放大约10个文件
下面是我的示例code
img.setBackgroundResource(R.drawable.d002_p001);
d002_ae_p001 = MediaPlayer.create(这一点,R.raw.d002_ae_p001);
handler.postDelayed(新的Runnable(){
@覆盖
公共无效的run(){
// TODO自动生成方法存根
d002_ae_p001.start();
XML();
}
},1000);
d002_ae_p002 = MediaPlayer.create(这一点,R.raw.d002_ae_p002);
handler.postDelayed(新的Runnable(){
@覆盖
公共无效的run(){
// TODO自动生成方法存根
我++;
img.setBackgroundResource(R.drawable.d002_p002);
d002_ae_p002.start();
XML();
}
},d002_ae_p001.getDuration()+ 2000);
EDITED这是我的code
INT图像[] = {R.drawable.apple,R.drawable.boy,R.drawable.cat};
串音频[] = {apple_v.mp3,boy_v.mp3,cat_v.mp3};
MediaPlayer的熔点为新的MediaPlayer();
AssetFileDescriptor描述;
尝试 {
。描述符= getAssets()openFd(音频[I]);
mp.setDataSource(descriptor.getFileDescriptor(),descriptor.getStartOffset(),descriptor.getLength());
descriptor.close();
MP prepare()。
mp.start();
}赶上(IOException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}
mp.setOnCompletionListener(新OnCompletionListener(){
@覆盖
公共无效onCompletion(MediaPlayer的为arg0){
// TODO自动生成方法存根
img.setImageResource(图像[I]);
我++;
mp.start();
}
});
下面是我的建议:
首先,把你的MP3文件的资产不生。这code会从资产方面发挥:
MediaPlayer的熔点为新的MediaPlayer();
AssetFileDescriptor描述;
。描述符= getAssets()openFd(FILENAME.MP3);
mp.setDataSource(descriptor.getFileDescriptor(),descriptor.getStartOffset(),descriptor.getLength());
descriptor.close();
MP prepare()。
mp.start();
mp.setOnCompletionListener(
新OnCompletionListener(){
@覆盖
公共无效onCompletion(MediaPlayer的MP){
// code在这里改变你的形象,建议有文件名的数组,并递增
//每次经过的时间。
}
});
希望帮助
i need to display images and play corresponding audio files one after the other.
i tried to create multiple media player objects but it shows error(1, -17)
so plz help guys i am running out of time.
Right now i have a handler which plays audio file and then get the duration of that audio file while playing another audio file this is my approach but i am unable to play some 10 files
below is my sample code
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);
EDITED THIS MY code
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();
}
});
Here is my suggestion:
First of all, put you MP3 files in assets not raw. This code will play from assets:
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.
}
});
Hope that helps
这篇关于机器人:玩用单MediaPlayer对象音频文件,还可以显示图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!