现在的位置: 首页 > 综合 > 正文

Android媒体开发之音乐播放…

2014年02月05日 ⁄ 综合 ⁄ 共 4217字 ⁄ 字号 评论关闭

 
今天来看一个关于音乐播放器的Android开发。MediaPlayer类可以用来播放音频,视屏和流媒体,下面我们说一下音频的播放。Medaiplayer有它的生命周期,这个可以到网上找找看看这里简单的一说,任何MediaPlayer对象都必须先处于准备状态,然后才开始播放。要开始播放MediaPlayer对象都必须调用start()方法。并且我们可以通过isPlaying()方法来检测是否正在播放。MediaPlayer对象在播放时可以进行暂停和停止操作分别用pause()方法和stop()方法,处于暂停状态时,我们可以用start()方法来恢复播放,但是当处于停止状态时则必须先调用pause()方法使其处于准备状态,然后再通过start()方法来开始播放,当然我们也可以重新创建一个MediaPlayer来播放。在MediaPlayer中我们有两大设置文件路径的方法,一种是setDataSource(),另一种就是今天用到的create方法来创建一个指定的资源索引的MediaPlayer对象,下面我们就来做一个简单的音乐播放软件步骤如下:

    1
我们要建立一个Android的工程,这个就不废话了,然后在res文件夹下新建立一个raw文件夹,这里注意必须是这个文件名。因为在早期这个好像是和drawable以及layout
文件夹一样自动生成的,现在做了一些变动。然后把我们要的音乐通过复制粘贴到这个文件夹了,这里我们粘贴一个test.mp3的音乐文件(还应注意我们这个音乐文件不能太大,因为它是直接打包到这个软件里的,太大可能无法播放具体原因不是很清楚,但我试过不能成功播放,太大的我们应该放到存储卡里通过setDataSource()来访问,这里不多说了)。

  
2.在Layout文件夹里布局好三个按钮和一个TextView

   3我们就开始写代码文件了:

   package com.nextMedia;

import java.io.IOException;
import java.nio.channels.IllegalSelectorException;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.*;
public class Activity01 extends Activity {
    private
Button StopButton;
    private
Button StartButton;
    private
Button PauseButton;
    private
TextView mTextView;
    private
boolean bIsReleased = false;
    private
boolean bIsPaused = false;
    private
boolean bIsPlaying = false;
    public
MediaPlayer  mMediaPlayer = new
MediaPlayer();
    public void
onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
       
setContentView(R.layout.main);
       
StopButton = (Button) this.findViewById(R.id.button1);
       
StopButton .setText("停止");
       
StartButton = (Button )this.findViewById(R.id.button2);
       
StartButton.setText("开始");
       
PauseButton = (Button)this.findViewById(R.id.button3);
       
PauseButton.setText("暂停");
       
mTextView = (TextView) this.findViewById(R.id.textView1);
      //播放音乐

       
StartButton.setOnClickListener(new Button.OnClickListener(){

   
   public void
onClick(View v) {
    try
{
     if(!bIsPlaying){

      bIsPlaying
= true;

   // 加载资源中的音乐

     
mMediaPlayer = MediaPlayer.create(Activity01.this,
R.raw.test);
      bIsReleased
= false;

  
// 设置是否循环播放
      mMediaPlayer.setLooping(true);

      try{

    
//播放对象准备就绪
       mMediaPlayer.prepare();

       

      }catch(IllegalStateException
e){
       e.printStackTrace();

      }catch(IOException
e){
       e.printStackTrace();

      }

   
//开始播放
      mMediaPlayer.start();

      mTextView.setText("正在播放");

     }

    }
catch(IllegalStateException e){
     e.printStackTrace();

    }mMediaPlayer.setOnCompletionListener(new

      OnCompletionListener()

    {

     @Override

   
//这里是一个音乐播放完事件的方法,告诉播放器音乐播放完了该干什么,必须有这个函数
     public
void onCompletion(MediaPlayer mp) {

    //把这个对象释放掉

      mMediaPlayer.release();

      

     }

     

    });

//停止音乐
    StopButton.setOnClickListener(new
Button.OnClickListener(){

     

     public
void onClick(View v) {
      if(!bIsReleased){

    //音乐停止

       mMediaPlayer.stop();

   
//释放对象资源
       mMediaPlayer.release();

       bIsReleased
= true;
      }

      bIsPlaying
= false;
      mTextView.setText("当前处于停止状态,请按开始键进行音乐播放");

      

     }

     

    });

   
    

   }
       
 
       
});
       
PauseButton.setOnClickListener(new Button.OnClickListener(){

   
   public void
onClick(View v) {
          
if(mMediaPlayer != null)
          
{
         
  if(bIsReleased ==false)
         
  {
         
   if(bIsPaused ==false)
         
   {

         //音乐暂停

             
mMediaPlayer.pause();
         
    bIsPaused =
true;
         
    bIsPlaying =
true;
         
   
mTextView.setText("已经暂停,请再按一下暂停按钮恢复播放");
         
   }else if(bIsPaused
==true)
         
   {

       
//音乐重新播放
             
mMediaPlayer.start();
         
    bIsPaused =
false;
         
   
mTextView.setText("音乐恢复播放");
         
   }
         
  }
          
}
    

   }
       
 
       
});
   
    }
 public boolean onKeyDown(int keyCode,KeyEvent
event)
 {
  switch(keyCode)
  {
  case
KeyEvent.KEYCODE_BACK:
  {
   if(!bIsReleased){

    mMediaPlayer.stop();

    mMediaPlayer.release();

    bIsReleased
true;
   }
   this.finish();

   return
true;
  }
  }
  return super.onKeyDown(keyCode,
event);
  
 }
   
}

  好了,这个程序完成了,其实回头看看挺简单的就几个方法和函数,但是如果要做一个音乐播放器就不能这样做了,这个方法基本是只用于一个软件本身内部的音乐效果,比如一个游戏的声音特效的控制。最后还是那句话,如果这个程序出现了问题请给我联系,留言或QQ
1056255918
,小编会及时解决,也希望与喜欢Java和Android的童鞋一起交流合作。谢谢 

抱歉!评论已关闭.