机器人:玩用单MediaPlayer对象音频文件,还可以显示图像还可以、机器人、音频文件、图像

2023-09-04 05:21:39 作者:柠檬味的夏天

我需要显示的图像和之后的其他播放相应的音频文件中的一个。

我试图创建多个媒体播放器的对象,但它显示了错误(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();
                }
            });
 

解决方案 有哪些视频 音频格式是Windows Media Player支持的

下面是我的建议:

首先,把你的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