MediaPlayer类
静态构造方法
常用方法
绑定事件监听器
播放音频
1、播放应用的资源文件(res/raw/)
通过我们上面介绍的几个静态构造函数创建MediaPlayer对象
2、播放应用的原始资源文件(assets)1) 通过Context.getAssets()方法获得AssetManager对象
2) 通过AssetManager对象的openFd(String name)方法打开指定的原生资源文件夹,返回一个AssetFileDescriptor对象
3) 通过AssetFileDescriptor的getFileDescriptor()得到一个FileDescriptor对象
4) 通过public void setDataSource (FileDescriptor fd, long offset, long length)来创建MediaPlayer对象
5) 调用MediaPlayer.prepare()方法准备音频
6) 调用MediaPlayer的start()、pause()、stop()等方法控制
2) 调用MediaPlayer对象的prepare()方法准备音频
3) 调用MediaPlayer的start()、pause()、stop()等方法控制
4、播放网络上的音频文件
1) 根据网络上的地址创建Uri对象
2) 通过public void setDataSource (Context context, Uri uri)设置音频来源装载音频文件
3) 调用MediaPlayer对象的prepare()方法准备音频
4) 调用MediaPlayer的start()、pause()、stop()等方法控制
当然也可以通过我们的另一种静态构造方法直接创建一个MediaPlayer对象
实现效果:
贴上源代码:
源代码下载:http://download.csdn.net/detail/jiahui524/3847987
http://blog.csdn.net/jiahui524
静态构造方法
常用方法
绑定事件监听器
播放音频
1、播放应用的资源文件(res/raw/)
通过我们上面介绍的几个静态构造函数创建MediaPlayer对象
MediaPlayer mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,
R.raw.a1);
2) 通过AssetManager对象的openFd(String name)方法打开指定的原生资源文件夹,返回一个AssetFileDescriptor对象
3) 通过AssetFileDescriptor的getFileDescriptor()得到一个FileDescriptor对象
4) 通过public void setDataSource (FileDescriptor fd, long offset, long length)来创建MediaPlayer对象
5) 调用MediaPlayer.prepare()方法准备音频
6) 调用MediaPlayer的start()、pause()、stop()等方法控制
AssetFileDescriptor fileDescriptor = assetManager
.openFd("a2.mp3");
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),
fileDescriptor.getStartOffset(),
fileDescriptor.getLength());
mediaPlayer.prepare();<p> mediaPlayer.start();</p>
3、播放外部存储上的音频资源文件(sdcard)
1) 创建MediaPlayer对象,通过MediaPlayer对象的setDataSource(String path)方法装载预定的音频文件2) 调用MediaPlayer对象的prepare()方法准备音频
3) 调用MediaPlayer的start()、pause()、stop()等方法控制
mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource("/mnt/sdcard/a3.mp3"); mediaPlayer.prepare(); mediaPlayer.start();
1) 根据网络上的地址创建Uri对象
2) 通过public void setDataSource (Context context, Uri uri)设置音频来源装载音频文件
3) 调用MediaPlayer对象的prepare()方法准备音频
4) 调用MediaPlayer的start()、pause()、stop()等方法控制
mediaPlayer = new MediaPlayer();
// 通过Uri解析一个网络地址
Uri uri = Uri
.parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");
mediaPlayer.setDataSource(MediaPlayerDemoActivity.this, uri);
mediaPlayer.prepare();
mediaPlayer.start();
-
Uri uri = Uri .parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694"); mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this, uri); mediaPlayer.start();
贴上源代码:
package com.jiahui.media;
import java.io.IOException;
public class MediaPlayerDemoActivity extends Activity implements
OnClickListener {
private Button btnAppStart, btnAssetsStart, btnSdcardStart,
btnNetworkStart;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnAppStart = (Button) this.findViewById(R.id.btnAppStart);
btnAssetsStart = (Button) this.findViewById(R.id.btnAssetsStart);
btnSdcardStart = (Button) this.findViewById(R.id.btnSdcardStart);
btnNetworkStart = (Button) this.findViewById(R.id.btnNetworkStart);
btnAppStart.setOnClickListener(this);
btnAssetsStart.setOnClickListener(this);
btnSdcardStart.setOnClickListener(this);
btnNetworkStart.setOnClickListener(this);
}
@Override
public void onClick(View v) {
MediaPlayer mediaPlayer = null;
switch (v.getId()) {
case R.id.btnAppStart:
System.out.println("---播放应用的资源文件----");
// 使用raw下的资源文件创建MediaPlayer对象
mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,
R.raw.a1);
mediaPlayer.start();
break;
case R.id.btnAssetsStart:
System.out.println("---播放assest的资源文件----");
AssetManager assetManager = this.getAssets();
try {
AssetFileDescriptor fileDescriptor = assetManager
.openFd("a2.mp3");
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),
fileDescriptor.getStartOffset(),
fileDescriptor.getLength());
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case R.id.btnSdcardStart:
System.out.println("---播放SDcard上的文件---");
try {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource("/mnt/sdcard/a3.mp3");
mediaPlayer.prepare();
mediaPlayer.start();
} catch (Exception e) {
}
break;
case R.id.btnNetworkStart:
System.out.println("播放网络上的音频");
// http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?
// xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694
try {
// mediaPlayer = new MediaPlayer();
// 通过Uri解析一个网络地址
Uri uri = Uri
.parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");
mediaPlayer.setDataSource(MediaPlayerDemoActivity.this, uri);
// mediaPlayer.prepare();
// 也可以直接通过这种方式装载网络上的音频文件
mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,
uri);
mediaPlayer.start();
} catch (Exception e) {
// TODO: handle exception
}
break;
default:
break;
}
}
}
http://blog.csdn.net/jiahui524