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

[Android开发学习04]长时间的音乐播放实现MediaPlayer

长时间的音乐因为体积比较大,放在手机内存中,对资源的占用太大。

MediaPlayer类可以用来播放音频、视频和流媒体,MediaPlayer包含了Audio和Video的播放功能。

在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。

MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的。

 


一.基础知识:


首先来看看MediaPlayer的生命周期:

 

 

\


下边是MediaPlayer提供的常用方法:

 

[java]
方法  说明 
MediaPlayer     构造方法 
create  创建一个要播放的多媒体 
getCurrentPosition  得到当前播放位置 
getDuration     得到文件的时间 
getVideoHeight  得到视频的高度 
getVideoWidth   得到视频的宽度 
isLooping   是否循环播放 
isPlaying   是否正在播放 
pause   暂停 
prepare     准备(同步) 
prepareAsync    准备(异步) 
release     释放MediaPlayer对象 
reset   重置MediaPlayer对象 
seekTo  指定播放的位置(以毫秒为单位的时间) 
setAudioStreamType  设置流媒体的类型 
setDataSource   设置多媒体数据来源 
setDisplay  设置用SurfaceHolder来显示多媒体 
setLooping  设置是否循环播放 
setOnButteringUpdateListener    网络流媒体的缓冲监听 
setOnErrorListener  设置错误信息监听 
setOnVideoSizeChangedListener   视频尺寸监听 
setScreenOnWhilePlaying     设置是否使用SurfaceHolder来保持屏幕显示 
setVolume   设置音量 
start   开始播放 
stop    停止播放  

方法  说明
MediaPlayer  构造方法
create  创建一个要播放的多媒体
getCurrentPosition  得到当前播放位置
getDuration  得到文件的时间
getVideoHeight  得到视频的高度
getVideoWidth  得到视频的宽度
isLooping  是否循环播放
isPlaying  是否正在播放
pause  暂停
prepare  准备(同步)
prepareAsync  准备(异步)
release  释放MediaPlayer对象
reset  重置MediaPlayer对象
seekTo  指定播放的位置(以毫秒为单位的时间)
setAudioStreamType  设置流媒体的类型
setDataSource  设置多媒体数据来源
setDisplay  设置用SurfaceHolder来显示多媒体
setLooping  设置是否循环播放
setOnButteringUpdateListener  网络流媒体的缓冲监听
setOnErrorListener  设置错误信息监听
setOnVideoSizeChangedListener  视频尺寸监听
setScreenOnWhilePlaying  设置是否使用SurfaceHolder来保持屏幕显示
setVolume  设置音量
start  开始播放
stop  停止播放


这个图和这些函数名称,对于我们初学者来说, 没必要太在意, 了解一下基本的名词即可,等到项目中确实遇到交互性问题时,我们再回来仔细探讨。

 


我们只要明白下面几行代码即可(Android中通过MediaPlayer来播放音乐的步骤):


[java]
MediaPlayer mp = new MediaPlayer();//构建MediaPlayer对象  
mp.setDataSource("/sdcard/test.mp3");//设置文件路径  
mp.prepare();//准备  
mp.start();//开始播放  

MediaPlayer mp = new MediaPlayer();//构建MediaPlayer对象
mp.setDataSource("/sdcard/test.mp3");//设置文件路径
mp.prepare();//准备
mp.start();//开始播放
上面四行代码实现了媒体文件的播放,但是如果还想再加入对音量的控制,就要涉及到AudioMananger类。


AudioManager中常用的方法如下:

A. 获取声音管理器:


[java]
AudioManager audioManager = (AudioManager) this.getSystemService(AUDIO_SERVICE); 

AudioManager audioManager = (AudioManager) this.getSystemService(AUDIO_SERVICE);

 

B、设置声音模式:


[java]
//声音模式  
AudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
//静音模式  
AudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
//震动模式  
AudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); 

    //声音模式
    AudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
    //静音模式
    AudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
    //震动模式
    AudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
C、调整声音大小:


[java]
//减少声音音量  
AudioManager.adjustVolume(AudioManager.ADJUST_LOWER,  0); 
//调大声音音量  
AudioManager.adjustVolume(AudioManager.ADJUST_RAISE, 0); 

    //减少声音音量
    AudioManager.adjustVolume(AudioManager.ADJUST_LOWER,  0);
    //调大声音音量
    AudioManager.adjustVolume(AudioManager.ADJUST_RAISE, 0);
D、获取音量大小:


[java]
// 取得当前设备的当前音量  
AudioManager.getStreamVolume(int streamType) 
// 取得当前设备的最大音量  
AudioManager.getStreamMaxVolume(int streamType) 

// 取得当前设备的当前音量
AudioManager.getStreamVolume(int streamType)
// 取得当前设备的最大音量
AudioManager.getStreamMaxVolume(int streamType)
E、其他:


[java]
getMode()获取音频模式 
getRingerMode()获取铃声震动模式 
setRingerMode(int ringerMode) 改变铃声模式  
这里如果使用了和手机震动有关的模式,记得添加权限。android.permission.VIBRATE哦! 

getMode()获取音频模式
getRingerMode()获取铃声震动模式
setRingerMode(int ringerMode) 改变铃声模式
这里如果使用了和手机震动有关的模式,记得添加权限。android.permission.VIBRATE哦!

 

 


二.编程实现:


1. 界面编辑(res\layout\main.xml):

[java]
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <Button  
        android:text="播放音乐"  
        android:id="@+id/ButtonPlay"  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"> 
    </Button>                             <!-- 播放音乐按钮 -->                                    
    <Button  
        android:text="暂停音乐"  
        android:id="@+id/ButtonPause"  
  &

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,