Android 使用mediaplayer播放res/raw文件夹中的音乐的实例

Android 使用mediaplayer播放res/raw文件夹中的音乐的实例

(1)在res文件夹中新建一个文件夹重命名为raw,并且将要播放的音乐放到raw文件夹里面

(2)修改layout目录下的xml布局文件,添加3个按钮空间和一个文本控件,用于提示当前播放状态和 播放暂停 停止等功能。具体代码如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/hint" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="单击播放开始播放音乐" /> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="播放" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="暂停" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="停止" /> </LinearLayout> </LinearLayout>

(3)打开MainActivity 在该类中,定义所需的成员变量,具体代码如下

private MediaPlayer mp;//mediaPlayer对象 private Button play,pause,stop;//播放 暂停/继续 停止 按钮 private TextView hint;//显示当前播放状态 private boolean isPause=false;//是否暂停

(4)在onCreate()方法中,获取播放 暂停/继续 停止 按钮 提示当前状态的文本框,并为mediaplayer对象创建播放的对象,具体代码如下。

play=(Button) findViewById(R.id.button1); pause=(Button) findViewById(R.id.button2); stop=(Button) findViewById(R.id.button3); hint=(TextView) findViewById(R.id.hint); hint.setTextSize(20); mp=MediaPlayer.create(MainActivity.this, R.raw.sound);//创建mediaplayer对象

(5)编写用于播放音乐的无返回值的play()方法。在该方法中首先调用mediaplayer对象的reset()方法重置mediaplayer对象,然后重新为其设置要播放的音频文件。最后调用start()方法开始播放音频

private void play(){ try{ mp.reset(); mp=MediaPlayer.create(MainActivity.this, R.raw.sound);//重新设置要播放的音频 mp.start();//开始播放 hint.setText("正在播放音频..."); play.setEnabled(false); pause.setEnabled(true); stop.setEnabled(true); }catch(Exception e){ e.printStackTrace();//输出异常信息 } }

(6)为mediaplayer对象添加完成时间监听器,用于当音乐播放完毕后重新开始播放音乐

mp.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer arg0) { // TODO Auto-generated method stub play();//重新开始播放 } });

(7)为播放按钮添加单击事件监听器

play.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub play(); if(isPause){ pause.setText("暂停"); isPause=false; } } });

(8)为暂停按钮添加单击事件监听器

pause.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(mp.isPlaying()&&!isPause){ mp.pause(); isPause=true; pause.setText("继续"); hint.setText("暂停播放音频..."); play.setEnabled(true); }else{ mp.start(); pause.setText("暂停"); hint.setText("继续播放音频..."); isPause=false; play.setEnabled(false); } } });

(9)为停止按钮添加单击事件监听器

stop.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub mp.stop(); hint.setText("停止播放音频..."); pause.setEnabled(false); stop.setEnabled(false); play.setEnabled(true); } });

(10)一定要记得这个。重写Activity的onDestroy()方法,用于在当前Activity销毁时,停止正在播放的音频,并释放mediaplayer所占用的资源,否则你每打开一次就会播放一次,并且上次播放的不会停止 你可以试试的,我解释不清楚

protected void onDestroy() { // TODO Auto-generated method stub if(mp.isPlaying()){ mp.stop(); } mp.release();//释放资源 super.onDestroy(); }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2024-11-02 16:36:14

Android 使用mediaplayer播放res/raw文件夹中的音乐的实例的相关文章

文件读取-Android jni c++ 如何读取jni文件夹下的文件?

问题描述 Android jni c++ 如何读取jni文件夹下的文件? 在一个jni工程中,jni文件夹的结构如下: jni |--Android.mk |--Application.mk |--filer.h |--file.cpp |--res.txt file.cpp里边的代码如下: #include ""filer.h""#include <fstream>#include <string>using namespace std;j

android-Android:res/xml文件夹内的xml文件在运行时可以修改吗?

问题描述 Android:res/xml文件夹内的xml文件在运行时可以修改吗? 我想在程序运行时,修改该Xml文件android:requirdDeviveUnlock的值为true. 但是,系统提供的getResources().getXml()方法返回的是XmlResourceParser类型,只能用于解析,没法修改该值. 解决方案 http://stackoverflow.com/questions/7162285/how-to-edit-xml-in-android-and-save

raw 文件-创建了raw文件夹,但是引用不了里面的资源!!

问题描述 创建了raw文件夹,但是引用不了里面的资源!! ![ 为什么会这样,导入包也没错呀!! 解决方案 http://blog.csdn.net/zhangxinrun/article/details/8918314 解决方案二: raw文件夹应该是建在res下的,请尝试一下 解决方案三: res下可以这样调用,其他目录的需要写方法获取 解决方案四: 应该发在res目录下,如果还没有就clean 一下工程 解决方案五: 把它放到res目录下,才能被安卓映射到R.java文件中,才可以用资源i

我的音乐文件夹中无法播放所有音乐怎么办

  问:在"我的音乐"文件夹中,单击"全部播放"选项后,无法播放一些音乐文件,请问这是为什么? 答:如果音乐文件位于向下10层的子文件夹中,可能会导致该现象的发生.解决的方法是将音乐文件移到10层以内的子文件夹中.

Android获取assets文件夹中的数据并写入SD卡示例_Android

本文示例主要实现了Android获取assets文件夹中的数据并将其写入到SD卡中,该程序实现的步骤主要为:首先读取assets文件夹中的数据库,再将其写入到SD存储卡中. 完整示例代码如下: import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import android.content.Context; /*将assets文件

android怎么从服务器的一个存放图片的文件夹中下载其中所有的图片,已知文件夹的url

问题描述 android怎么从服务器的一个存放图片的文件夹中下载其中所有的图片,已知文件夹的url android怎么从服务器的一个存放图片的文件夹中下载其中所有的图片,已知文件夹的url 解决方案 只要这个url和图片信息(比如名字)能组成有效的url就行了,然后再返回一个图片的名字列表,遍历下载就行了 解决方案二: QT下实现将图片从一个文件拷贝到另一个文件夹把存储在数据库的图片导入到一个文件夹 解决方案三: 考慮安裝一下 ""抓圖神器"" 這個APP應該就可以

delphi怎样让mediaplayer播放一个.wav文件只播放两次?

问题描述 delphi怎样让mediaplayer播放一个.wav文件只播放两次? delphi怎样让mediaplayer播放一个.wav文件只播放两次?急求

android模拟器的sdcard中的文件存放在本机的哪个文件夹中?

问题描述 在eclipse中运行一个android模拟器,向模拟器的sdcard中写入了一个文件,这个文件可以在DDMS中看到,并且能导出来,但是这个文件具体存放在我本机电脑的哪个文件夹中?为什么我搜索不到?按理说肯定有一块区域是存放这个文件的呀? 解决方案 在eclipse中打开avd manager,选中你创建的avd,点击右边的details按钮会打开一个avd详细信息对话框,其中有一个path路径,那个就是avd的创建路径,sdcard是个虚拟的卡,应该包含在avd文件里,我的理解是这样

Android获取assets文件夹中的数据并写入SD卡示例

本文示例主要实现了Android获取assets文件夹中的数据并将其写入到SD卡中,该程序实现的步骤主要为:首先读取assets文件夹中的数据库,再将其写入到SD存储卡中. 完整示例代码如下: import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import android.content.Context; /*将assets文件