音频播放器—MediaPlayer
1.日常生活中听到的数码声音即音频,主要格式有(MP3,3GPP,Ogg和,WAWE)等,通常看到的视频主要有(3GP 和mpeg-4)
2.再Android中提供了一个MediaPlayer类,使用该类可以轻松播放音乐,只需要指定播放的音频调用相应的方法即可,以下列出常用方法
1.MediaPlayer支持三种不同的媒体来源:
① 本地资源
② 内部的URI,比如你可以通过ContentResolver来获取
③ 外部URL(流) 对于Android所支持的的媒体格式列表
2.常用方法
• create():创建一个要播放的多媒体
• setDataSource():设置数据来源
• prepare():准备播放
• start():开始播放
• stop():停止播放
• pause():暂停播放
• reset():恢复MediaPlayer到未初始化状态
3.其他方法
• getCurrentPosition():得到当前的播放位置
• getDuration():得到文件的时间
• getVideoHeight():得到视频高度
• getVideoWidth():得到视频宽度
• isLooping():是否循环播放
• isPlaying():是否正在播放
• prepare():准备(同步)
• prepareAsync():准备(异步)
• release():释放MediaPlayer对象
• reset():重置MediaPlayer对象
• seekTo(int msec):指定播放的位置(以毫秒为单位的时间)
• setAudioStreamType(int streamtype):指定流媒体的类型
• setDisplay(SurfaceHolder sh):设置用SurfaceHolder来显示多媒体
• setLooping(boolean looping):设置是否循环播放
4.实现音频播放的步骤
① 添加音频资源(存放在res目下的raw包下-手动创建)
② 创建MediaPlayer对象(两种方式)
- 使用MediaPlayer类提供的静态方法create来创建MediaPlayer对象,语法格式如下
MediaPlayer mediaplayer = MediaPlayer.create(this,R.raw.hls)
参数说明:
参数1:设备上下文,直接用this指定
参数2:需要播放音频的资源文件 - 通过无参构造方法创建MediaPlayer对象(用着这种方法时,需单独指定装载的资源文件,这里MediaPlayer提供了一个
setDateSource
方法,此方法用于指定文件位置,真正装载文件还需要调用prepare方法)例如下边代码
MediaPlayer player = new MediaPlayer();
try {
player.setDataSource("/music/attition.mp3"); //设置播放文件具体路径
player.prepare(); //装载播放文件
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
③开始播放音频,利用MediaPlayer提供的start()
方法,
④ 播放途中暂停,利用MediaPlayer提供的pause()
方法,
⑤ 停止播放音频,利用MediaPlayer提供的stop()
方法,
实例-创建简易播放器
xml文件-三个按钮
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}"
android:orientation="vertical"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="音频播放"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<Button
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="开始播放"
/>
<Button
android:id="@+id/btn_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="暂停播放"
/>
<Button
android:id="@+id/btn_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="停止播放"
/>
</LinearLayout>
</LinearLayout>
效果:::
java文件
public class MadioActivity extends Activity {
MediaPlayer mediaplayer;
private Button btn_start,btn_pause,btn_stop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_madio);
//引入音频文件
mediaplayer = MediaPlayer.create(this,R.raw.m1);
btn_start=(Button) findViewById(R.id.btn_start);
btn_pause=(Button) findViewById(R.id.btn_pause);
btn_stop=(Button) findViewById(R.id.btn_stop);
btn_start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mediaplayer.start(); //开始播放音频
}
});
btn_pause.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mediaplayer.pause(); //暂停播放音频
}
});
btn_stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mediaplayer.stop(); //停止播放音频
}
});
}
}
注意:停止之后,不能再次播放了