背景音乐

来源:互联网 发布:linux代码学习 编辑:程序博客网 时间:2024/03/29 02:12

一般添加声音是靠两种方法实现的。一种是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;

 

0 0
原创粉丝点击