当前位置:操作系统 > 安卓/Android >>

Android中的多媒体

本文介绍多媒体的音频和视频播放。
 
播放音频和视频的源文件可以是一下三种:
 
源文件(即res/raw下或assets下)
文件系统(即sdcard)
流媒体(即网络)
 
1. 播放音频文件
播放音频文件可以用MediaPlayer类或SoundPool类。下面我们来介绍这两个类。
 
 
1.1 MediaPlayer从源文件(即res/raw下或assets下)播放音频
 
 
[java] 
mMediaPlayer = MediaPlayer.create(this, R.raw.sleep_away);  
mMediaPlayer.start();  
 
mMediaPlayer = MediaPlayer.create(this, R.raw.sleep_away);
mMediaPlayer.start();
1.2 MediaPlayer从文件系统(即sdcard)播放音频
 
 
[java]
String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3   
mMediaPlayer = new MediaPlayer();  
try {  
    mMediaPlayer.setDataSource(filePath);  
    mMediaPlayer.prepare();  
} catch (Exception e) {  
    e.printStackTrace();  
}  
mMediaPlayer.start();  
 
String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(filePath);
mMediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
mMediaPlayer.start();方法二:
 
 
[java] 
String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3   
mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath));  
mMediaPlayer.start();  
 
String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3
mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath));
mMediaPlayer.start();
1.3 MediaPlayer从流媒体(即网络)播放音频
 
添加权限<uses-permission android:name="android.permission.INTERNET" />
 
 
[java] 
filePath = "http://www.xyz.com/Audio/sample.mp3";  
mMediaPlayer = new MediaPlayer();  
try {  
    mMediaPlayer.setDataSource(filePath);  
    mMediaPlayer.prepare();  
} catch (Exception e) {  
    e.printStackTrace();  
}  
mMediaPlayer.start();  
 
filePath = "http://www.xyz.com/Audio/sample.mp3";
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(filePath);
mMediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
mMediaPlayer.start();方法二:
 
 
[java] 
filePath = "http://www.xyz.com/Audio/sample.mp3";  
mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath));  
mMediaPlayer.start();  
 
filePath = "http://www.xyz.com/Audio/sample.mp3";
mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath));
mMediaPlayer.start();
另外,MediaPlayer的几个方法介绍一下:
 
start():开始播放
pause():暂停播放
reset() + prepare() + start():重新播放(其实MediaPlayer的create方易做图首次调用prepare()方法)
另外,在onDestroy()方法中必须释放MediaPlayer的资源:
 
 
[java] 
@Override  
protected void onDestroy() {  
    super.onDestroy();  
    if (mMediaPlayer != null) {  
        mMediaPlayer.release();  
        mMediaPlayer = null;  
    }  
}  
 
@Override
protected void onDestroy() {
super.onDestroy();
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;
}
}
1.4 SoundPool播放音频文件
 
开发Android软件中我们可能经常需播放多媒体声音文件,一般使用MediaPlayer类但该类占用资源较多,对于游戏等应用可能不是很适合,SoundPool类在SDK的android.media.SoundPool,顾名思义是声音池的意思。主要播放一些较短的声音片段,可以从程序的资源或文件系统加载,相对于MediaPlayer类可以做到使用较少的CPU资源和较短的反应延迟。
 
SoundPool和其他声音播放类相比,其特点是可以自行设置声音的品质、音量、播放比率等参等。并且它可以同时管理多个音频流,每个流都有独自的ID,对某个音频流的管理都是通过ID进行的。
 
SoundPool基本使用方法:
 
创建一个SoundPool对象:new SoundPool(int maxStreams, int streamType, int srcQuality);
从资源或者文件载入音频流:load(Context context, int resId, int priority);
播放声音:play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
关于SoundPool的用法参见Demohttp://download.csdn.net/detail/tianjf0514/4895976
 
 
 
2. 播放视频文件
 
播放视频有两种方法,一种是用VideoView播放,另一种是用Su易做图ceView播放。
 
2.1 VideoView播放方式可以用VideoView.setVideoURI()和VideoView.setVideoPath两种方式播放视频
 
从文件系统(即sdcard)
 
 
 
[java] 
videoView.setVideoURI(Uri.parse(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4"));  
 
videoView.setVideoURI(Uri.parse(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4"));
[java] 
videoView.setVideoPath(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4");  
 
videoView.setVideoPath(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4");
从流媒体(即网络)
 
 
[java]
videoView.setVideoURI(Uri.parse("http://v.pps.tv/play_3445G7.html"));  
 
videoView.setVideoURI(Uri.parse("http://v.pps.tv/play_3445G7.html"));
[java] 
videoView.setVideoPath("http://v.pps.tv/play_3445G7.html");  
 
videoView.setVideoPath("http://v.pps.tv/play_3445G7.html");
用VideoView的方式播放视频很简单,但是视频的位置和大小不受控制,所以要下面来介绍另一种方式
 
2.2 Su易做图ceView播放方式播放视频
 
Su易做图ceView的控制接口Su易做图ceHolder的setFixedSize方法可以设置视频的大小。
 
具体的Su易做图ceView怎么播放视频参考Demohttp://download.csdn.net/detail/tianjf0514/4895976
 
 
 
 
 
 
&nb
补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,