/*** Created by Easzz on 2015/12/6.*/
public class RecorderService extendsService {private MediaRecorder recorder; //录音的一个实例
@OverridepublicIBinder onBind(Intent intent) {return null;
}
@Overridepublic voidonCreate() {super.onCreate();//获得电话管理器
TelephonyManager tm=(TelephonyManager) getSystemService(TELEPHONY_SERVICE);//启动监听.传入一个listener和监听的事件,
tm.listen(newMyListener(),PhoneStateListener.LISTEN_CALL_STATE);
}class MyListener extendsPhoneStateListener{//在电话状态改变的时候调用
@Overridepublic void onCallStateChanged(intstate, String incomingNumber) {super.onCallStateChanged(state, incomingNumber);switch(state){caseTelephonyManager.CALL_STATE_IDLE://空闲状态
if (recorder!=null){
recorder.stop();//停止录音
recorder.release();//释放资源
recorder=null;
}break;caseTelephonyManager.CALL_STATE_RINGING://响铃状态 需要在响铃状态的时候初始化录音服务
if (recorder==null){
recorder=new MediaRecorder();//初始化录音对象
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置录音的输入源(麦克)
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置音频格式(3gp)
createRecorderFile();//创建保存录音的文件夹
recorder.setOutputFile("sdcard/recorder" + "/" + getCurrentTime() + ".3gp"); //设置录音保存的文件
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置音频编码
try{
recorder.prepare();//准备录音
} catch(IOException e) {
e.printStackTrace();
}
}break;caseTelephonyManager.CALL_STATE_OFFHOOK://摘机状态(接听)
if (recorder!=null){
recorder.start();//接听的时候开始录音
}break;
}
}//创建保存录音的目录
private voidcreateRecorderFile() {
String absolutePath=Environment.getExternalStorageDirectory().getAbsolutePath();
String filePath=absolutePath+"/recorder";
File file=newFile(filePath);if (!file.exists()){
file.mkdir();
}
}//获取当前时间,以其为名来保存录音
privateString getCurrentTime(){
SimpleDateFormat format=new SimpleDateFormat("yyyyMMddHHmmss");
Date date=newDate();
String str=format.format(date);returnstr;
}
}
}