`
nanjingjiangbiao_T
  • 浏览: 2594143 次
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Android开发--多媒体应用开发(一)--MediaPlayer的使用介绍

 
阅读更多

MediaPlayer用于播放音频文件,它的使用非常简单,使用这个类播放音频文件有两种方法,下面就这两种方法分别进行介绍。

一,使用构造函数

可以使用直接new的方式:

MediaPlayermp =newMediaPlayer();

也可以使用create的方式,如:

MediaPlayer mp = MediaPlayer.create(this, R.raw.test)

此时就完成了mp的初始化

二,使用setDataSource

存储在SD卡或其他文件路径下的媒体文件

例如:mp.setDataSource("/sdcard/test.mp3");

网络上的媒体文件

例如:mp.setDataSource("http://www.citynorth.cn/music/confucius.mp3");

MediaPlayersetDataSource一共四个方法:

setDataSource (String path)

setDataSource (FileDescriptor fd)

setDataSource (Context context, Uri uri)

setDataSource (FileDescriptor fd, long offset, long length)

这样也能完成mp的创建


下面对MediaPlayer的执行过程进行介绍:

prepare()prepareAsync()提供了同步和异步两种方式设置播放器进入prepare状态,需要注意的是,如果MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。

start()是真正启动文件播放的方法,

pause()stop()比较简单,起到暂停和停止播放的作用,

seekTo()是定位方法,可以让播放器从指定的位置开始播放,需要注意的是该方法是个异步方法,也就是说该方法返回时并不意味着定位完成,尤其是播放的网络文件,真正定位完成时会触发OnSeekComplete.onSeekComplete(),如果需要是可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。

release()可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。

reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。


设置播放器的监听器:

MediaPlayer提供了一些设置不同监听器的方法来更好地对播放器的工作状态进行监听,以期及时处理各种情况,

如:setOnCompletionListener(MediaPlayer.OnCompletionListenerlistener)

setOnErrorListener(MediaPlayer.OnErrorListenerlistener),设置播放器时需要考虑到播放器可能出现的情况设置好监听和处理逻辑,以保持播放器的健壮性。


下面实现的这个例子即利用MediaPlayer播放音频文件,并实现音量的控制和显示,音频文件的播放,暂停,继续喝停止功能,下图是程序运行时的截图:


一下是具体的实现源代码:

public class MediaPlayer_Activity extends Activity {
	private Button button1;
	private Button button2;
	private Button button3;
	private TextView textView;
	private TextView textView2;
	private SeekBar seekBar;
	private MediaPlayer mePlayer;
	public boolean isPause=false;
	

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_media_player_);
		button1=(Button)findViewById(R.id.button_start);
		button2=(Button)findViewById(R.id.button_pause);
		button3=(Button)findViewById(R.id.button_end);
		textView=(TextView)findViewById(R.id.textview_display);
		textView2=(TextView)findViewById(R.id.textview_volume);
		seekBar=(SeekBar)findViewById(R.id.seekbar);
		button1.setOnClickListener(new MyButton());
		button2.setOnClickListener(new MyButton());
		button3.setOnClickListener(new MyButton());
		button2.setEnabled(false);
		button3.setEnabled(false);
		
		//获取音频管理类的对象
		final AudioManager audioManager=(AudioManager)MediaPlayer_Activity.this.
				getSystemService(Context.AUDIO_SERVICE);
		//设置当前调整音量只是针对媒体音乐
		MediaPlayer_Activity.this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
		//设置拖动条的最大值---是系统的最大值
		seekBar.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
		//获取当前的音量
		int progress=audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
		seekBar.setProgress(progress);
		textView2.setText("当前音量:"+progress);
		//为拖动条添加监听器
		seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
			
			@Override
			public void onStopTrackingTouch(SeekBar arg0) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onStartTrackingTouch(SeekBar arg0) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
				// TODO Auto-generated method stub
				textView2.setText("当前音量:"+arg1);
				audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1,
						AudioManager.FLAG_PLAY_SOUND);
			}
		});
		mePlayer=MediaPlayer.create(MediaPlayer_Activity.this, R.raw.caiyunzhinan);
		mePlayer.setOnCompletionListener(new OnCompletionListener() {
			
			@Override
			public void onCompletion(MediaPlayer mp) {
				// TODO Auto-generated method stub
				Start();
			}
		});
	}
	class MyButton implements OnClickListener{

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			switch (v.getId()) {
			case R.id.button_start:
				Start();
				break;
			case R.id.button_pause:
				Pause();
				break;
			case R.id.button_end:
				End();
				break;

			default:
				break;
			}
		}

	}
	public void Start() {
		mePlayer.start();
		button1.setEnabled(false);
		button2.setEnabled(true);
		button3.setEnabled(true);
		textView.setText("开始播放音乐。。。");
		if(isPause){
			button2.setText("Continue");
			isPause=false;
		}
	}
	public void Pause() {
		if (mePlayer.isPlaying()&&!isPause) {
			mePlayer.pause();
			isPause=true;
			button2.setText("Continue");
			textView.setText("暂停播放音乐。。。");
			button1.setEnabled(true);
		}
		else {
			mePlayer.start();
			button2.setText("Pause");
			textView.setText("播放音乐中。。。");
			isPause=false;
			button1.setEnabled(false);
		}
	}
	public void End() {
		mePlayer.stop();
		button1.setEnabled(true);
		button2.setEnabled(false);
		button3.setEnabled(false);
		textView.setText("音乐停止播放。。。");
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_media_player_, menu);
		return true;
	}

}



分享到:
评论

相关推荐

    Android MediaPlayer Playback---多媒体开发应用程序接口

    Android MediaPlayer Playback---多媒体开发应用程序接口

    Android应用开发揭秘pdf高清版

    最重要的是还全面介绍了如何利用原生的C,C++(NDK)和Python、Lua等脚本语言(AndroidScriptingEnvironment)来开发Android应用,《Android应用开发揭秘》实战性强,书中的每个知识点都有配精心设计的示例,尤为...

    android开发揭秘PDF

    第10章 Android应用开发 实例 10.1 情境模式 10.2 文件管理器 10.3 通讯录 10.4 音乐播放器 10.5 天气预报 10.6 个人地图 10.7 Widget日历 10.8 小结 第11 章Android游戏开发实例 11.1 手机游戏开发简介 11.2 游戏...

    《Android应用开发揭秘》附带光盘代码.

    《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言  第一部分 准备篇  第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 ...

    Android应用开发揭秘(pdf )

     如何使用Open Core、MediaPlayer、MediaRecorder方便快速地开发出包含音频和视频等流媒体的丰富多媒体应用?  如何利用Android 2.0新增的蓝牙特性开发包含蓝牙功能的应用?又如何使用蓝牙APL来完善应用的网络功能...

    《Android应用开发揭秘》源码

     杨丰盛,Android应用开发先驱,对Android有深入研究,实战经验极其丰富。精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会...

    Android开发与应用——张荣,原书配套课件

    第9章 多媒体应用 9.1 音频与视频的播放 9.1.1 MediaPlayer 9.1.2 SoundPool 9.1.3 VideoView 9.1.4 SurfaceView 9.2 摄像头的使用 9.2.1 摄像头意图Intent 9.2.2 Camera类 9.3 小结 练习 实验一...

    android yuandaima

    Android MediaPlayer Playback---多媒体开发应用程序接口

    Android开发案例驱动教程 配套代码

    《Android开发案例驱动教程》 配套代码。 注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式...

    《Android应用开发揭秘》源码.rar

     ·如何使用open core、mediaplayer、mediarecorder方便快速地开发出包含音频和视频等流媒体的丰富多媒体应用?  ·如何利用android 2.0中新增的蓝牙特性开发包含蓝牙功能的应用?又如何使用蓝牙api来完善应用的...

    Android多媒体应用使用MediaPlayer播放音频

    下面介绍使用MediaPlayer播放音频 在Android中,提供了MediaPlayer类来播放音频。使用MediaPlayer类播放音频比较简单,只需要创建该类的对象,并为其指定要播放的音频文件,然后调用该类的start()方法即可,下面...

    android多媒体音乐(MediaPlayer)播放器制作代码

    本文实例为大家分享了android多媒体音乐播放器的具体实现代码,供大家参考,具体内容如下 首先,在AndroidManifest.xml中配置权限  <!-- 读取手机中的音乐 --> <uses android:name=android.permission.READ...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    Android开发之MediaPlayer多媒体(音频,视频)播放工具类

    本文实例讲述了Android开发之MediaPlayer多媒体(音频,视频)播放工具类。分享给大家供大家参考,具体如下: package com.android.imooc.chat; import java.io.IOException; import android.media.AudioManager; ...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

Global site tag (gtag.js) - Google Analytics