package com.ztspeech.simutalk2.trans.speak; import android.content.Context; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; public class AudioClip implements OnCompletionListener { @Override protected void finalize() throws Throwable { // TODO Auto-generated method stub release(); super.finalize(); } private MediaPlayer mPlayer = null; private Context mContext = null; private int mResid = 0; private boolean mPlaying =false; private IOnCompletionListener mOnCompletionListener = null; public interface IOnCompletionListener{ public void audioClipCompletion(); } public void setOnCompletionListener(IOnCompletionListener listener){ this.mOnCompletionListener = listener; } public AudioClip(Context context, int resid){ mContext = context; mResid = resid; createPlayer(); } public boolean play(){ if( mPlayer == null){ return false; } if(mPlaying == true){ return false; } try { mPlayer.start(); mPlaying = true; return true; } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; } private boolean createPlayer(){ release(); mPlayer = MediaPlayer.create(mContext, mResid); if( mPlayer != null){ try { //mPalyer.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); //} catch (IOException e) { // TODO Auto-generated catch block // e.printStackTrace(); } mPlayer.setOnCompletionListener(this); return true; } return false; } public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub mPlaying = false; if(mOnCompletionListener != null){ mOnCompletionListener.audioClipCompletion(); } } public void release() { // TODO Auto-generated method stub if( mPlayer != null){ mPlayer.release(); mPlayer = null; } } }