package com.suan.weclient.util.voice; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import android.content.Context; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.os.Environment; import android.util.Log; import com.suan.weclient.util.Util; public class VoiceManager { Context mContext; private MediaPlayer mediaPlayer; private AudioPlayListener lastPlayListener; public VoiceManager(Context context) { mContext = context; mediaPlayer = new MediaPlayer(); } public void playVoice(byte[] mData, int playLength, int dataLength, final AudioPlayListener nowAudioPlayListener) { try { mediaPlayer.reset(); if (lastPlayListener != null) { lastPlayListener.onAudioStop(); } lastPlayListener = nowAudioPlayListener; nowAudioPlayListener.onAudioStart(); File audioFile = writeAudio(mData); mediaPlayer.setDataSource(audioFile.getAbsolutePath()); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { } }); mediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub nowAudioPlayListener.onAudioStop(); } }); mediaPlayer.prepare(); mediaPlayer.start(); } catch (Exception exception) { Log.e("play audio error", "" + exception); } } public void stopMusic() { if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); lastPlayListener.onAudioStop(); } } private File writeAudio(byte[] mData) { try { String filePath = Util.getFilePath("temp.mp3"); File file = new File(filePath); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(file)); bos.write(mData); bos.flush(); bos.close(); return file; } catch (Exception exception) { Log.e("write audio errror", "" + exception); } return null; } /* * interface */ public interface AudioPlayListener { public void onAudioStart(); public void onAudioStop(); public void onAudioError(); } }