package com.sixin.speex;
import java.io.File;
import android.annotation.TargetApi;
import android.content.Context;
import android.media.AudioManager;
public class SpeexTool {
//¼��
public static SpeexRecorder recorderInstance = null;
// Speex��������
public static SpeexPlayer mSpeexPlayer = null;
/**
* ��ʼ¼��
*
* @param name ��Ƶ���·��
*/
public static void start(String name) {
// speex¼��
if (recorderInstance != null) {
recorderInstance.setRecording(false);
recorderInstance = null;
}
if (recorderInstance == null) {
recorderInstance = new SpeexRecorder(name);
Thread th = new Thread(recorderInstance);
th.start();
}
recorderInstance.setRecording(true);
}
/**
* ֹͣ¼�������Ƿ�ɾ���ļ�
*
* @param del
* @param filename
*/
public static void stop(boolean del, final String filename) {
// speex¼��
stop();
if (del) {
new Thread((new Runnable() {
@Override
public void run() {
if (filename != null && filename.length() > 0) {
File file = new File(filename);
if (file.exists()) {
file.delete();
}
}
}
})).start();
}
}
/**
* ֹͣ¼��
*
*/
public static void stop() {
// speex¼��
if (recorderInstance != null) {
recorderInstance.setRecording(false);
recorderInstance = null;
}
}
/**
* ��������
*
* @param name
* @param chatmsgid
*/
public static void playMusic(Context context, String name) {
try {
// �����speex¼��
if (name != null && name.endsWith(".spx")) {
if (mSpeexPlayer != null && mSpeexPlayer.isPlay) {
stopMusic(context);
} else {
muteAudioFocus(context, true);
mSpeexPlayer = new SpeexPlayer(name, new OnSpeexCompletionListener() {
@Override
public void onError(Exception ex) {
System.out.println("���Ŵ���");
}
@Override
public void onCompletion(SpeexDecoder speexdecoder) {
System.out.println("�������");
}
});
mSpeexPlayer.startPlay();
}
} else {
System.out.println("��Ƶ�ļ���ʽ����ȷ");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* ֹͣ��������
*/
public static void stopMusic(Context context) {
// ֹͣ����¼��
if (mSpeexPlayer != null && mSpeexPlayer.isPlay) {
mSpeexPlayer.stopPlay();
mSpeexPlayer = null;
muteAudioFocus(context, false);
}
}
@TargetApi(8)
public static boolean muteAudioFocus(Context context, boolean bMute) {
if (context == null) {
return false;
}
if (!isBeforeFroyo()) {
// 2.1���µİ汾��֧�������API��requestAudioFocus��abandonAudioFocus
System.out.println("ANDROID_LAB Android 2.1 and below can not stop music");
return false;
}
boolean bool = false;
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if (bMute) {
int result = am.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
bool = result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED;
} else {
int result = am.abandonAudioFocus(null);
bool = result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED;
}
System.out.println("ANDROID_LAB pauseMusic bMute=" + bMute + " result=" + bool);
return bool;
}
public static boolean isBeforeFroyo() {
int sdkVersion = 0;
try {
sdkVersion = Integer.valueOf(android.os.Build.VERSION.SDK);
} catch (NumberFormatException e) {
sdkVersion = 0;
}
if (sdkVersion <= 8) {
return true;
}
return true;
}
}