Android媒体开发之音乐播放…

  今天来看一个关于音乐播放器的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的童鞋一起交流合作。谢谢 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值