思路:
1:根据java的Localsocket(FIFO)格式的原理 阻塞读入读出接受输出流和获取输出流
2:利用MediaRecorder (java)的录制类进行音频录制(单起线程写文件 -- 【注:如果这里是往网络发包也用这种方式只是把写文件的换成网络编程socket即可】)
注意:
1:当触发停止录制的时候可能写文件的现成还没有写完那么就必须得写成死循环只有当 FileinputStream.alailable()不存在了可读的字节了才停止这个循环确保读取完毕。
2:当全部读取完毕后记得要releaseall所有的localsocket和recorder
好了不废话了直接上代码:
/**
*
*/
package com.ubi.audioecoding;
/**
* @author Administrator
*
*/
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.BreakIterator;
import android.R.integer;
import android.app.Activity;
import android.media.MediaRecorder;
import android.net.LocalServerSocket;
import android.net.LocalSocket;
import android.net.LocalSocketAddress;
import android.os.Environment;
import android.util.Log;
import android.widget.Toast;
public class AmrAudioEncoder {
private static final String TAG = "ArmAudioEncoder";
private static AmrAudioEncoder amrAudioEncoder = null;
private Activity activity;
private MediaRecorder audioRecorder;
private LocalServerSocket lss;
private LocalSocket sender, receiver;
private AmrAudioEncoder() {
}
public static AmrAudioEncoder getArmAudioEncoderInstance() {
if (amrAudioEncoder == null) {
synchronized (AmrAudioEncoder.class) {
if (amrAudioEncoder == null) {
amrAudioEnc