Android的媒体播放器的流在线MP3文件 [英] android mediaplayer stream online mp3 file

查看:241
本文介绍了Android的媒体播放器的流在线MP3文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有Android的应用程序流的MP3文件,在播放器中播放该文件, 但问题是媒体播放器prepare()。需要很长一段时间的缓冲和应用程序冻结 所以我试图用prepareAsync(); //但这个功能我不能让球员发挥下档

只是单一网上,如果我需要再踢文件,我应该关闭重新启动活动的文件时

打到底要不要播放下,这是我的code

我很抱歉我的英文不好

这是我的$ C C任何帮助$请

 公共无效了playMP3(字符串_link)
{
mediaPlayer.setOn preparedListener(新在preparedListener(){
    公共无效于prepared(MediaPlayer的MP){
        如果(!mediaPlayer.isPlaying()){
        mediaPlayer.start();
        Progressbar.setVisibility(View.INVISIBLE);
        play.setVisibility(View.GONE);
        stop.setVisibility(View.VISIBLE);
        songProgressBar.setProgress(0);
        songProgressBar.setMax(100);
        }
        updateProgressBar();
    }
});
mediaPlayer.setOnCompletionListener(新OnCompletionListener(){

    @覆盖
    公共无效onCompletion(MediaPlayer的MP){
        // TODO自动生成方法存根
        mediaPlayer.reset();
        songProgressBar.setProgress(0);
        songProgressBar.setSecondaryProgress(0);
        play.setVisibility(View.VISIBLE);
        stop.setVisibility(View.GONE);
        链接=htt​​p://server11.mp3quran.net/hawashi/002.mp3;
        调用playMP3(链接);

    }
});
mediaPlayer.setOnBufferingUpdateListener(新OnBufferingUpdateListener(){
    @覆盖
    公共无效onBufferingUpdate(MediaPlayer的熔点,INT百分比){
       // Toast.makeText(getApplicationContext()中,n+百分之,Toast.LENGTH_LONG).show();
        songProgressBar.setSecondaryProgress(百分比);

         如果(百分之== 100)
         {
             Progressbar.setVisibility(View.INVISIBLE);

         }否则如果(百分号> songProgressBar.getProgress())
         {
             Progressbar.setVisibility(View.INVISIBLE);
         }其他
         {
             Progressbar.setVisibility(View.VISIBLE);
         }

    }
});

mediaPlayer.reset();
Progressbar.setVisibility(View.VISIBLE);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

尝试 {
    mediaPlayer.setDataSource(_link);
    //mediaPlayer.$p$ppare(); //可能需要很长时间! (用于缓冲等)// @@
    。媒体播放器prepareAsync();
}赶上(抛出:IllegalArgumentException E){
    // TODO自动生成的catch块
    e.printStackTrace();
}赶上(SecurityException异常E){
    // TODO自动生成的catch块
    e.printStackTrace();
}赶上(IllegalStateException异常E){
    // TODO自动生成的catch块///
    e.printStackTrace();
}赶上(IOException异常E){
    // TODO自动生成的catch块
    e.printStackTrace();
}}
 

解决方案

其实我也不知道哪里是误在code,但我将解释我是如何做,在我的应用程序

 公共无效了playMP3(字符串_link){

                mediaPlayer.reset();
                Progressbar.setVisibility(View.VISIBLE);
                mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

            尝试 {
                mediaPlayer.setDataSource(_link);
                mediaPlayer.setOnBufferingUpdateListener(本);
                mediaPlayer.setOn preparedListener(本);
                //mediaPlayer.$p$ppare(); //可能需要很长时间! (用于缓冲等)// @@
                。媒体播放器prepareAsync();
            }赶上(抛出:IllegalArgumentException E){
                // TODO自动生成的catch块
                e.printStackTrace();
            }赶上(SecurityException异常E){
                // TODO自动生成的catch块
                e.printStackTrace();
            }赶上(IllegalStateException异常E){
                // TODO自动生成的catch块///
                e.printStackTrace();
            }赶上(IOException异常E){
                // TODO自动生成的catch块
                e.printStackTrace();
            }
        }
 

然后实现OnCompletionListener,在preparedListener和OnBufferingUpdateListener在您的类

 公共类PlayerActivity扩展活动实现OnCompletionListener,在preparedListener,OnBufferingUpdateListener {
。
。
。
 

和实现所有methodes

 在prepared(MediaPlayer的媒体播放器){公共无效
    如果(!mediaPlayer.isPlaying()){
        mediaPlayer.start();
        Progressbar.setVisibility(View.INVISIBLE);
        play.setVisibility(View.GONE);
        stop.setVisibility(View.VISIBLE);
        songProgressBar.setProgress(0);
        songProgressBar.setMax(100);
        }
        updateProgressBar();
}

@覆盖
公共无效onCompletion(MediaPlayer的媒体播放器){
    //mediaPlayer.reset();
        songProgressBar.setProgress(0);
        songProgressBar.setSecondaryProgress(0);
        play.setVisibility(View.VISIBLE);
        stop.setVisibility(View.GONE);
        链接=htt​​p://server11.mp3quran.net/hawashi/002.mp3;
        调用playMP3(链接);
}

@覆盖
公共无效onBufferingUpdate(MediaPlayer的熔点,INT百分比){
     songProgressBar.setSecondaryProgress(百分比);

         如果(百分之== 100)
         {
             Progressbar.setVisibility(View.INVISIBLE);

         }否则如果(百分号> songProgressBar.getProgress())
         {
             Progressbar.setVisibility(View.INVISIBLE);
         }其他
         {
             Progressbar.setVisibility(View.VISIBLE);
         }
}
 

我希望这有助于你。

i have android app stream mp3 file and play this file in player , but the problem is mediaPlayer.prepare(); take long time buffer and app freeze so i tried to use prepareAsync(); // but with this function i can't make player play next file

just single file online if i need to play another file i should close restart activity when

play end not play next this is my code

and i'm sorry for my bad english

this is my code any help please

public void playMp3(String _link)
{
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
    public void onPrepared(MediaPlayer mp) {
        if(!mediaPlayer.isPlaying()){
        mediaPlayer.start();
        Progressbar.setVisibility(View.INVISIBLE);
        play.setVisibility(View.GONE);
        stop.setVisibility(View.VISIBLE);
        songProgressBar.setProgress(0);
        songProgressBar.setMax(100);
        }
        updateProgressBar();      
    }
});
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

    @Override
    public void onCompletion(MediaPlayer mp) {
        // TODO Auto-generated method stub
        mediaPlayer.reset();
        songProgressBar.setProgress(0);
        songProgressBar.setSecondaryProgress(0);
        play.setVisibility(View.VISIBLE);
        stop.setVisibility(View.GONE);
        link = "http://server11.mp3quran.net/hawashi/002.mp3";
        playMp3(link);

    }
});
mediaPlayer.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {
    @Override
    public void onBufferingUpdate(MediaPlayer mp, int percent) {
       // Toast.makeText(getApplicationContext(), "n" + percent, Toast.LENGTH_LONG).show();
        songProgressBar.setSecondaryProgress(percent);

         if(percent==100)
         {
             Progressbar.setVisibility(View.INVISIBLE);

         }else if(percent > songProgressBar.getProgress())
         {
             Progressbar.setVisibility(View.INVISIBLE);
         }else
         {
             Progressbar.setVisibility(View.VISIBLE);
         }

    }
});

mediaPlayer.reset();
Progressbar.setVisibility(View.VISIBLE);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

try {
    mediaPlayer.setDataSource(_link);
    //mediaPlayer.prepare(); // might take long! (for buffering, etc)   //@@
    mediaPlayer.prepareAsync();
} catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (SecurityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IllegalStateException e) {
    // TODO Auto-generated catch block///
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}}

解决方案

Actually I don't know where is error in your code but I will explain how I did that in my app

public void playMp3(String _link){

                mediaPlayer.reset();
                Progressbar.setVisibility(View.VISIBLE);
                mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

            try {
                mediaPlayer.setDataSource(_link);
                mediaPlayer.setOnBufferingUpdateListener(this);
                mediaPlayer.setOnPreparedListener(this);
                //mediaPlayer.prepare(); // might take long! (for buffering, etc)   //@@
                mediaPlayer.prepareAsync();
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SecurityException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block///
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

Then implements OnCompletionListener, OnPreparedListener and OnBufferingUpdateListener in your class

public class PlayerActivity extends Activity implements OnCompletionListener, OnPreparedListener, OnBufferingUpdateListener{
.
.
.

and implements all methodes

public void onPrepared(MediaPlayer mediaplayer) {
    if(!mediaPlayer.isPlaying()){
        mediaPlayer.start();
        Progressbar.setVisibility(View.INVISIBLE);
        play.setVisibility(View.GONE);
        stop.setVisibility(View.VISIBLE);
        songProgressBar.setProgress(0);
        songProgressBar.setMax(100);
        }
        updateProgressBar();      
}

@Override
public void onCompletion(MediaPlayer mediaPlayer) {
    //mediaPlayer.reset();
        songProgressBar.setProgress(0);
        songProgressBar.setSecondaryProgress(0);
        play.setVisibility(View.VISIBLE);
        stop.setVisibility(View.GONE);
        link = "http://server11.mp3quran.net/hawashi/002.mp3";
        playMp3(link);
}

@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
     songProgressBar.setSecondaryProgress(percent);

         if(percent==100)
         {
             Progressbar.setVisibility(View.INVISIBLE);

         }else if(percent > songProgressBar.getProgress())
         {
             Progressbar.setVisibility(View.INVISIBLE);
         }else
         {
             Progressbar.setVisibility(View.VISIBLE);
         }
}

I wish this helped you.

这篇关于Android的媒体播放器的流在线MP3文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆