Android的媒体播放器的流在线MP3文件 [英] android mediaplayer stream online mp3 file
问题描述
我有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);
链接=http://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);
链接=http://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屋!