Android Open Source - AndroidGameDev Android Music






From Project

Back to project page AndroidGameDev.

License

The source code is released under:

Apache License

If you think the Android project AndroidGameDev listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package cc.rafazz.framework.implementation;
/* ww w.  j a  v a 2  s .  c  o m*/
import java.io.IOException;

import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.media.MediaPlayer.OnSeekCompleteListener;
import android.media.MediaPlayer.OnVideoSizeChangedListener;

import cc.rafazz.framework.Music;

public class AndroidMusic implements Music, OnCompletionListener,
    OnSeekCompleteListener, OnPreparedListener, OnVideoSizeChangedListener {
  MediaPlayer mediaPlayer;
  boolean isPrepared = false;

  public AndroidMusic(AssetFileDescriptor assetDescriptor) {
    mediaPlayer = new MediaPlayer();
    try {
      mediaPlayer.setDataSource(assetDescriptor.getFileDescriptor(),
          assetDescriptor.getStartOffset(),
          assetDescriptor.getLength());
      mediaPlayer.prepare();
      isPrepared = true;
      mediaPlayer.setOnCompletionListener(this);
      mediaPlayer.setOnSeekCompleteListener(this);
      mediaPlayer.setOnPreparedListener(this);
      mediaPlayer.setOnVideoSizeChangedListener(this);

    } catch (Exception e) {
      throw new RuntimeException("Couldn't load music");
    }
  }

  @Override
  public void dispose() {
    if (this.mediaPlayer.isPlaying()) {
      this.mediaPlayer.stop();
    }
    this.mediaPlayer.release();
  }

  @Override
  public boolean isLooping() {
    return mediaPlayer.isLooping();
  }

  @Override
  public boolean isPlaying() {
    return this.mediaPlayer.isPlaying();
  }

  @Override
  public boolean isStopped() {
    return !isPrepared;
  }

  @Override
  public void pause() {
    if (this.mediaPlayer.isPlaying())
      mediaPlayer.pause();
  }

  @Override
  public void play() {
    if (this.mediaPlayer.isPlaying())
      return;

    try {
      synchronized (this) {
        if (!isPrepared)
          mediaPlayer.prepare();
        mediaPlayer.start();
      }
    } catch (IllegalStateException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  @Override
  public void setLooping(boolean isLooping) {
    mediaPlayer.setLooping(isLooping);
  }

  @Override
  public void setVolume(float volume) {
    mediaPlayer.setVolume(volume, volume);
  }

  @Override
  public void stop() {
    if (this.mediaPlayer.isPlaying() == true) {
      this.mediaPlayer.stop();

      synchronized (this) {
        isPrepared = false;
      }
    }
  }

  @Override
  public void onCompletion(MediaPlayer player) {
    synchronized (this) {
      isPrepared = false;
    }
  }

  @Override
  public void seekBegin() {
    mediaPlayer.seekTo(0);
  }

  @Override
  public void onPrepared(MediaPlayer player) {
    // TODO Auto-generated method stub
    synchronized (this) {
      isPrepared = true;
    }
  }

  @Override
  public void onSeekComplete(MediaPlayer player) {
    // TODO Auto-generated method stub
  }

  @Override
  public void onVideoSizeChanged(MediaPlayer player, int width, int height) {
    // TODO Auto-generated method stub
  }
}




Java Source Code List

cc.rafazz.framework.Audio.java
cc.rafazz.framework.FileIO.java
cc.rafazz.framework.Game.java
cc.rafazz.framework.Graphics.java
cc.rafazz.framework.Image.java
cc.rafazz.framework.Input.java
cc.rafazz.framework.Music.java
cc.rafazz.framework.Pool.java
cc.rafazz.framework.Screen.java
cc.rafazz.framework.Sound.java
cc.rafazz.framework.implementation.AndroidAudio.java
cc.rafazz.framework.implementation.AndroidFastRenderView.java
cc.rafazz.framework.implementation.AndroidFileIO.java
cc.rafazz.framework.implementation.AndroidGame.java
cc.rafazz.framework.implementation.AndroidGraphics.java
cc.rafazz.framework.implementation.AndroidImage.java
cc.rafazz.framework.implementation.AndroidInput.java
cc.rafazz.framework.implementation.AndroidMusic.java
cc.rafazz.framework.implementation.AndroidSound.java
cc.rafazz.framework.implementation.MultiTouchHandler.java
cc.rafazz.framework.implementation.SingleTouchHandler.java
cc.rafazz.framework.implementation.TouchHandler.java