重要代码:
TelephonyManagertelManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
//通过电话管理器监听通话状态(回调机制)
telManager.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);
listener= new new PhoneStateListener(){
public void onCallStateChanged(int state,String incomingNumber){
switch(state){
caseTelephonyManager.CALL_STATE_IDLE://空闲
caseTelephonyManager.CALL_STATE_OFFHOOK://接起电话
caseTelephonyManager.CALL_STATE_RINGING://振铃
}}};
//录音
recorder= new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//.3gp
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile("/mnt/sdcard/"+ filename);
recorder.prepare();
recorder.start();
recoding= true;
<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
android2.0(API 5)测试通过,2.2不可以.
通过Receiver机制(收到手机启动完成的广播)启动电话录音服务
XxxReceiver extends Receiver{
publicvoid onReceive(){
intent= new Intent(this,XxxxService.class);
startService(intent);
}
}
配置使用权限
<uses-permission
android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
<uses-permission
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.RECORD_AUDIO"/>
注:
电话录音应用程序需要停止卡塔莎录屏软件,否则电脑卡死.