Android提供了对常用音频和视频格式的支持,它所支持的音频格式有MP3(.mp3)、3GPP(.3gp)、Ogg(.ogg)和WAVE(.ave)等,支持的视频格式有3GPP(.3gp)和MPEG-4(.mp4)等。通过AndroidAPI提供的相关方法,在Android中可以实现音频与视频的播放。

下面介绍使用MediaPlayer播放音频

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

1.创建MediaPlayer对象,并装载音频文件

两种方法,都是使用MediaPlayer的静态方法creat()来实现。
a.creat(Context context,int resid)
从资源文件中加载,例如
MediaPlayer player=MediaPlayer.creat(this,R.rwa.d);

b.creat(Context context,Uri uri)
根据指定的URI来装载音频,例如
MediaPlayer player=MediaPlayer.creat("Http://www.musicbox.com/sound/bg.mp3");

使用creat()方法时,已经加载了音频,但是用无参构造方法来创建MediaPlayer对象时,需要单独指定要装载的资源,这可以使用MediaPlayer类的setDataSource()方法来实现。

在使用setDataSource()方法装载音频文件后,实际上MediaPlayer并为真正装载该音频文件,需要调用MediaPlayer的prepare()方法去真正装载音频文件。使用无参构造方法来创建MediaPlayer对象并装载指定的音频文件,可以使用下面的代码:

MediaPlayer player=new MediaPlayer(); try {  player.setDataSource("/sdcard/suger.mp3");//指定要装载的音频文件 } catch (IllegalArgumentException e) {  e.printStackTrace(); } catch (SecurityException e) {  e.printStackTrace(); } catch (IllegalStateException e) {  e.printStackTrace(); } catch (IOException e) {  e.printStackTrace(); }   try {  player.prepare();//预加载音频  } catch (IllegalStateException e) {   e.printStackTrace();  } catch (IOException e) {   e.printStackTrace();  } } 

2.开始或恢复播放

开始播放或恢复已经暂停的音频的播放
player.start();

3.停止播放

可以停止正在播放的音频
player.stop();

4.暂停播放

可以暂停正在播放的音频
player.pause();

下面做一个小实例,实现包括播放、暂停/继续和停止功能的简易音乐播放器
将要播放的音频文件上传到SD卡的Music目录中,这里要播放的音频文件为Whistle.mp3
目录如图

布局文件,包括一个文本信息显示控件和三个按钮(播放、暂停/继续和停止按钮)
res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>                 

MainActivity:

package com.example.test;  import java.io.File;   import android.app.Activity; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView;  public class MainActivity extends Activity{  private MediaPlayer player;//MediaPlayer对象  private boolean isPause=false;//是否暂停  private File file;//要播放的音频文件  private TextView hint;//声明显示提示信息的文本框  private Button play;//播放按钮  private Button pause;//暂停/继续按钮  private Button stop;//停止按钮  @Override  public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);      play=(Button)findViewById(R.id.play);//获取"播放"按钮   play.setOnClickListener(new OnClickListener() {        @Override    public void onClick(View arg0) {     play();//开始播放音乐     if(isPause){      pause.setText("暂停");      isPause=false;//设置暂停标记为false     }          pause.setEnabled(true);//"暂停/继续"按钮可用     stop.setEnabled(true);//"停止"按钮可用     play.setEnabled(false);//"播放"按钮不可用    }   });      pause=(Button)findViewById(R.id.pause);//获取"暂停"按钮   pause.setOnClickListener(new OnClickListener() {        @Override    public void onClick(View v) {     if(player.isPlaying()&&!isPause){      player.pause();//暂停播放      isPause=true;      ((Button)v).setText("继续");      hint.setText("暂停播放音频...");      play.setEnabled(true);//播放按钮可用     }else{      player.start();//继续播放      isPause=false;      ((Button)v).setText("暂停");      hint.setText("继续播放音频...");      play.setEnabled(false);//播放按钮不可用     }    }   });      stop=(Button)findViewById(R.id.stop);//获取"停止"按钮   stop.setOnClickListener(new OnClickListener() {        @Override    public void onClick(View arg0) {     player.stop();     hint.setText("停止播放音频...");     pause.setEnabled(false);//"暂停/继续"按钮不可用     stop.setEnabled(false);//"停止"按钮不可用     play.setEnabled(true);//"播放"按钮可用         }   });      hint=(TextView)findViewById(R.id.hint);//获取显示提示信息的文本框   file=new File(getSDPath()+"/"+"Music/Whistle.mp3");   if(file.exists()){    player=MediaPlayer.create(MainActivity.this,    Uri.parse(file.getAbsolutePath()));//创建MediaPlayer对象   }else{    hint.setText("要播放的音频不存在!");    play.setEnabled(false);    return;   }      //添加完成事件监听器,用于当音乐播放完毕后,重新开始播放因音乐   player.setOnCompletionListener(new OnCompletionListener() {        @Override    public void onCompletion(MediaPlayer arg0) {     play();//重新开始播放         }   });  }   //播放音乐的方法  public void play(){   try {    player.reset();    player.setDataSource(file.getAbsolutePath());//重新设置要播放的音频    player.prepare();//预加载音频    player.start();//开始播放    hint.setText("正在播放音乐...");   } catch (Exception e) {    e.printStackTrace();   }     }    //获取sdcard根目录的方法  public String getSDPath(){   File sdDir = null;   boolean sdCardExist = Environment.getExternalStorageState()         .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在       if(sdCardExist)  //如果SD卡存在,则获取跟目录   {            sdDir = Environment.getExternalStorageDirectory();//获取根目录   }    return sdDir.toString();  }    //Activity销销毁时,停止正在播放的音频,并释放MediaPlayer所占用的资源  @Override  protected void onDestroy() {   if(player.isPlaying()){    player.stop();//停止音频的播放   }   player.release();//释放资源   super.onDestroy();  }   } 

播放效果如图


暂停效果如图


继续效果如图


停止效果如图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多相关文章

  1. 01 Android应用的构成
  2. android 中SoundPool总结
  3. android 音视频直播
  4. Android(安卓)Service的使用方法 音乐播放器实例
  5. 使用Vitamio打造自己的Android万能播放器(1)——准备
  6. 解决 android GIF播放的问题
  7. android 中SoundPool总结
  8. Android应用程序四大组件
  9. Android(安卓)音频框架概述(一)之 AudioTrack

随机推荐

  1. 几个不常用但特别实用的PHP预定义变量
  2. php架构师主要是做什么的
  3. php实现对图片对称加解密(适用身份证加密
  4. php开发环境是什么
  5. PHP源码—implode函数源码分析
  6. PHP基础之输出缓冲区基本概念、原理分析
  7. php工程师主要是干什么的
  8. PHP闭包function() use()中的详细使用方
  9. PHP传递数组格式参数到shell脚本中
  10. php主要是干什么用的