您的位置:首页 > 其它

背景音乐

2015-07-04 11:43 176 查看
一般添加声音是靠两种方法实现的。一种是MediaPlayer,一种是SoundPool。这两种方法的区别是MediaPlayer可以存储较大的音频文件,载入稍慢,不支持同时播放。而SoundPool只能存储较小的音频文件,载入较快,支持同时播放。这样就很显然了,MediaPlayer用来实现背景音乐,而SoundPool用来实现音效。

package my.Game.audio;

import java.io.IOException;

import com.threed.jpct.Logger;

import android.app.Activity;

import android.content.res.AssetFileDescriptor;

import android.media.AudioManager;

import android.media.MediaPlayer;


public class MyMusic {

 protected static MediaPlayer mediaPlayer;

 protected static boolean mustResume = false;

 private static Activity act;

 

 public MyMusic(Activity act){

  mediaPlayer = new MediaPlayer();

  MyMusic.act=act;

 }

 

 public static void prepareMediaPlayer(String file) {

  if(mediaPlayer == null) {

   mediaPlayer = new MediaPlayer();

  }

  

  AssetFileDescriptor afd = null;

  try {

   afd = act.getAssets().openFd("sound/"+file+".ogg");

  } catch (Exception e) {

   e.printStackTrace();

   Logger.log("Tried creating Music with missing asset ... " + file);

   System.exit(0);

   return;

  }

  try {

   mediaPlayer.reset();

   mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());

   mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

   afd.close();

  } catch (IOException e) {

   e.printStackTrace();

   Logger.log("Error setting data source in Music.play, IO exception");

   System.exit(0);

   return;

  } catch (IllegalStateException e) {

   e.printStackTrace();

   Logger.log("Error setting data source in Music.play, fail ...");

   return;

  }

  try {

   mediaPlayer.prepare(); 

  } catch (Exception e) {

   e.printStackTrace();

   Logger.log("Error preparing MediaPlayer");

   System.exit(0);

   return;

  }

 }

 

 

 public static void play(boolean loop) {

  

  if(mediaPlayer == null) {

   Logger.log("error:MediaPlayer hasn't prepared.");

   return;

  }

  mediaPlayer.setLooping(loop);

  mediaPlayer.start();

 }

 

 

 public static void stop() {

  if(mediaPlayer == null) {

   Logger.log("error:No mediaPlayer is playing.");

   return;

  }

  mediaPlayer.stop();

 }

 

 

 public static void pause() {

  if(mediaPlayer == null) {

   Logger.log("error:No mediaPlayer is playing.");

   return;


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  控件 界面 音乐