使用MediaPlayer获取Http网络流时MediaPlayer的状态调用
来源:互联网 发布:酷方 知乎 编辑:程序博客网 时间:2024/05/19 12:26
先来说几个常用状态:
MediaPlayer.OnCompletionListener 监听MediaPlayer播放完成时的状态,
回调onCompletion(MediaPlayer mp)MediaPlayer.OnPreparedListener 监听MediaPlayer准备完成时的状态,
回调onPrepared(MediaPlayer mp)MediaPlayer.OnErrorListener 监听MediaPlayer播放发生错误时的状态,
回调onError(MediaPlayer mp, int what, int extra)MediaPlayer.OnBufferingUpdateListener 监听MediaPlayer缓冲完成时的状态,回调onBufferingUpdate(MediaPlayer mp, int percent)
贴上一段码表示状态
package com.example.day604;import android.media.MediaPlayer;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.TextView;import java.io.IOException;/** * 通过http获得mp3文件播放, *该音频文件存在于服务器的位置 http://www.mobvcasting.com/android/audio/goodmorinigandroid.mp3 */public class MainActivity extends AppCompatActivity implements MediaPlayer.OnCompletionListener, View.OnClickListener, MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener,MediaPlayer.OnBufferingUpdateListener{ private MediaPlayer mediaPlayer; private TextView bufferText,statusText; private Button start,stop; private String url="http://www.mobvcasting.com/android/audio/goodmorinigandroid.mp3"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start=(Button)findViewById(R.id.start); stop=(Button)findViewById(R.id.stop); bufferText=(TextView)findViewById(R.id.bufferText); statusText=(TextView)findViewById(R.id.statusText); statusText.setText("onCreate"); //这种无参构造的方式和以前的有参调用不同需要几个步骤 mediaPlayer=new MediaPlayer(); mediaPlayer.setOnCompletionListener(this); mediaPlayer.setOnErrorListener(this); mediaPlayer.setOnPreparedListener(this); mediaPlayer.setOnBufferingUpdateListener(this); statusText.setText("MediaPalyer created"); try { mediaPlayer.setDataSource(url); statusText.setText("setDataSource done"); statusText.setText("calling prepareAsync");// mediaPlayer.prepare();//运行prepare()播放器会填充一个缓冲区,即使网速慢也能平稳的播放 但这里的prepare()会造成阻塞 mediaPlayer.prepareAsync(); } catch (IOException e) { e.printStackTrace(); } start.setOnClickListener(this); stop.setOnClickListener(this); start.setEnabled(false); stop.setEnabled(false); } @Override public void onClick(View v) { if (v==start) { mediaPlayer.start(); statusText.setText("start called"); start.setEnabled(false); stop.setEnabled(true); } else if (v==stop) { mediaPlayer.pause(); statusText.setText("pause called"); start.setEnabled(true); } } /** * @param mp * Mediaplayer播放完成时回调 */ @Override public void onCompletion(MediaPlayer mp) { statusText.setText("onComplete called"); start.setEnabled(false); stop.setEnabled(false); } /** * @param mp * 当完成prepareAsync()状态时回调,表明音频准备播放 */ @Override public void onPrepared(MediaPlayer mp) { statusText.setText("prepared called"); start.setEnabled(true); } /** * @param mp * @param what * @param extra * @return * 当MediaPalyer发生错误后调用 */ @Override public boolean onError(MediaPlayer mp, int what, int extra) { statusText.setText("onError called"); switch (what) { case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK: statusText.setText("MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK"+extra); Log.v("Error:","MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:"+extra); break; case MediaPlayer.MEDIA_ERROR_SERVER_DIED: statusText.setText("MEDIA_ERROR_SERVER_DIED:"+extra); Log.v("Error","MEDIA_ERROR_SERVER_DIED:"+extra); break; case MediaPlayer.MEDIA_ERROR_UNKNOWN: statusText.setText("MEDIA_ERROR_UNKNOWN:"+extra); Log.v("Error","MEDIA_ERROR_UNKNOWN:"+extra); break; } return false; } /** * @param mp * @param percent * MediaPlayer正在缓冲时调用 */ @Override public void onBufferingUpdate(MediaPlayer mp, int percent) { bufferText.setText(""+percent+"%"); }}
0 0
- 使用MediaPlayer获取Http网络流时MediaPlayer的状态调用
- MediaPlayer的状态
- MediaPlayer的各种状态
- MediaPlayer的状态
- 管理MediaPlayer的状态
- mediaplayer状态
- 简析Android mediaPlayer 播放在线音乐网络异常状态的处理
- 判断MediaPlayer的播放状态
- MediaPlayer的状态控制分析
- 简单的MediaPlayer使用
- MediaPlayer的基本使用
- MediaPlayer的基本使用
- MediaPlayer 的使用介绍
- MediaPlayer的简单使用
- MediaPlayer的使用
- MediaPlayer的使用
- Android Mediaplayer的使用
- 简单的使用MediaPlayer
- bzoj2001 [Hnoi2010]City 城市建设 动态最小生成树
- oraclesql分页最高效率写法
- dp46上 HDU2084
- Oracle数据库使用PDE文件导出数据和传统EXP/IMP方式的区别
- java中匿名对象的使用
- 使用MediaPlayer获取Http网络流时MediaPlayer的状态调用
- [并查集 杂题] BZOJ 4452 [Cerc2015]Export Estimate
- 匹配括号( ( ),{ },[ ]等左右对应的字符 ) 的一种方法
- 2017上半年课程设计1
- 数据库学习
- [编程题]数独(JAVA)
- python常用函数
- 关于VUE-CLI脚手架热更新不起效的原因
- Android6.0运行时权限