【Android笔记】MediaPlayer基本使用方式

Android MediaPlayer基本使用方式

使用MediaPlayer播放音频或者视频的最简单样例:

JAVA代码部分:

public class MediaPlayerStudy extends Activity {

private Button bplay,bpause,bstop;

private MediaPlayer mp = new MediaPlayer();

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

bplay = (Button)findViewById(R.id.play);

bpause = (Button)findViewById(R.id.pause);

bstop = (Button)findViewById(R.id.stop);

bplay.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View v) {

try {

mp.setDataSource("/sdcard/test.mp3");

mp.prepare();

mp.start();

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (IllegalStateException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

mp.setOnCompletionListener(new OnCompletionListener(){

@Override

public void onCompletion(MediaPlayer mp) {

mp.release();

}

});

}

});

bpause.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View v) {

if(mp != null){

mp.pause();

}

}

});

bstop.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View v) {

if(mp != null){

mp.stop();

}

}

});

}

@Override

protected void onDestroy() {

if(mp != null)

mp.release();

super.onDestroy();

}

}

布局文件main.xml

<?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">

<TextView android:layout_width="fill_parent"

android:layout_height="wrap_content" android:text="@string/hello" />

<Button android:text="play" android:id="@+id/play"

android:layout_width="wrap_content"

android:layout_height="wrap_content"></Button>

<Button android:text="pause" android:id="@+id/pause"

android:layout_width="wrap_content"

android:layout_height="wrap_content"></Button>

<Button android:text="stop" android:id="@+id/stop"

android:layout_width="wrap_content"

android:layout_height="wrap_content"></Button>

</LinearLayout>

 

程序说明:

这个样例仅仅是描写叙述了MediaPlayer的基本使用步骤和方式,MediaPlayer还有多种使用方式和方法,并不仅仅局限于样例所介绍的一种。详细来看:

1)怎样获得MediaPlayer实例:

能够使用直接new的方式:

MediaPlayer mp = new MediaPlayer();

也能够使用create的方式,如:

MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了

2) 怎样设置要播放的文件:

MediaPlayer要播放的文件主要包含3个来源:

a. 用户在应用中事先自带的resource资源

比如:MediaPlayer.create(this, R.raw.test);

b. 存储在SD卡或其它文件路径下的媒体文件

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

c. 网络上的媒体文件

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

MediaPlayer的setDataSource一共四个方法:

setDataSource (String path)

setDataSource (FileDescriptor fd)

setDataSource (Context context, Uri uri)

setDataSource (FileDescriptor fd, long offset, long length)

3)对播放器的主要控制方法:

Android通过控制播放器的状态的方式来控制媒体文件的播放,当中:

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

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

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

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

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

reset()能够使播放器从Error状态中恢复过来,又一次会到Idle状态。

4)设置播放器的监听器:

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

如: setOnCompletionListener(MediaPlayer.OnCompletionListener listener)、

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

时间: 2024-10-12 14:50:10

【Android笔记】MediaPlayer基本使用方式的相关文章

Android笔记——Android中数据的存储方式(三)

Android系统集成了一个轻量级的数据库:SQLite,所以Android对数据库的支持很好,每个应用都可以方便的使用它.SQLite作为一个嵌入式的数据库引擎,专门适用于资源有限的设备上适量数据存取,现在的主流移动设备像Android.iPhone等都使用SQLite作为复杂数据的存储引擎,并且它是以手机内存为储存的. 那么,实际开发项目中有大量数据需要读写,并且需要面临大量用户的并发储存的情况呢.就不应该把数据存放在手机等移动设备的SQLite数据库里,移动设备的储存能力和计算能力都不足以

Android笔记——Android中数据的存储方式(二)

我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效率.如果学过JavaWeb的朋友,首先可能想到的是数据库.当然了数据库是一个方案,那么是否还有其他的解决方案呢?今天我们在讲下Android笔记——Android中数据的存储方式(一) 提到的除了SharedPreferences和Files(文本文件)以外的其他几种数据储存方式:xml文件.SQL

【Android笔记】MediaPlayer基本用法

Android MediaPlayer基本使用方式 使用MediaPlayer播放音频或者视频的最简单样例: JAVA代码部分: public class MediaPlayerStudy extends Activity { private Button bplay,bpause,bstop; private MediaPlayer mp = new MediaPlayer(); @Override public void onCreate(Bundle savedInstanceState)

Android多媒体-MediaPlayer使用方式

先不多说,直接上代码 public class SimpleMediaPlayerActivity extends Activity { //private static final Uri mMusicUri = Uri.fromFile(new File("/sdcard/sound_file_1.mp3")); private static final Uri mMusicUri = Uri.parse("http://czanxi.azone.artron.net/u

Android笔记之 Web Service 基础

一.Web Service是什么? 就是网络服务,根据W3C的定义,WebServices(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一种自包含.自描述和模块化的应用程序,它可以在网络中被描述.发布和调用,可以将它看作是基于网络的.分布式的模块化组件.  Web Services是建立在通用协议的基础之上的,包括HTTP.SOAP.UDDI.WSDL等.其中Web Service三要素就是SOAP.WSDL和UDDI. SOAP用来描述传递信息的格式, WSDL用来描述如何访

Android笔记 之 旋转木马的音乐效果

一.前言-- 大家一定在百度音乐上在线听过歌,有没有注意到那个旋转唱片-- 就上面那个,当音乐在播放的时候,那个光碟轮子在转,就想旋转木马一般.感觉好好玩啊. 碰巧想起前阵子做音乐播放器,哎,那这个也可以做在手机的音乐播放器上,这样就代替了进度条了. 一想到,就兴奋,于是,首先画圆形,然后放置背景图片,然后使用动画旋转.当音乐播放时,同时 开始播放圆形图片的动画,当音乐暂停时,暂停旋转:当音乐停止播放时,就停止动画,图片回到原点. 二.效果-- 三.源码-- (1)MainActivity <s

Android笔记:利用InputStream和BufferedReader 进行字节流 字符流处理

通过socket获取字节流处理时最初使用的是BufferedReader和PrintWriter  这种方式在解析字符串时是比较方便的 但是在处理字节时不够方便最终还是回归到InputStream和OutputStream方式 不使用缓存直接使用字节流操作,一次传输的字节数据在300字节以内,目前没有测试差距会有多大. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException;

Android笔记:java 中的数组

在与嵌入式设备通讯的过程中使用的socket通讯 获取的字节流,通常转换为字节数组,需要根据协议将字节数组拆分.对于有规律的重复拆分可以使用,由于java中不能像c中直接进行内存操作例如使用struct 内存拷贝可以直接实现,这里考虑的是借用数组拷贝的方式来实现. java数组复制参考 引自百度空间 同时参考 数组拷贝之java.lang.System.arraycopy和java.util.Arrays.copyOf方法 java数组复制的4种方式,java数组拷贝问题 JAVA数组的复制是引

android 笔记

#关系ViewGroup 是从view继承的Layout 是ViewGroup 继承的,布局可以添加元素片段里可以存放布局Activity 可以移除 Fragment,增加片段,通过 getFragmentManager 来管理 Fragment 通过findFragmentById来获得Fragment的元素修改通过 getView() 取得layout 之后修改里面的元素如果 Layout 还没有实例化,通过 LayoutInflater 来操作通过inflate方法可以找到layout文件