第一步:在清单文件中注册一个service name指定继承service的类
第二步:新建一个类继承serivce,重写oncreate onStartCommand ondestory 方法
第三步:在oncreate中通过 得到一个系统服务 TelephonyManager tm = (TelephonyManager) getSystemService(this.TELEPHONY_SERVICE);
tm.listen(new myPhoneStateListener(),PhoneStateListener.LISTEN_CALL_STATE);
private class myPhoneStateListener extends PhoneStateListener {
private MediaRecorder recorder = null;//这里将mediarecorder这个类提示怎么编码,所以下面的代码可以根据提示进行拷贝
@Override
public void onCallStateChanged(int state, String incomingNumber) {
// TODO Auto-generated method stub
super.onCallStateChanged(state, incomingNumber);
try {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:// 闲置状态
if (recorder != null) {
recorder.stop();
recorder.reset(); // You can reuse the object by going
// back to setAudioSource() step
recorder.release(); // Now the object cannot be reused
recorder = null;
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:// 通话状态
if (recorder != null) {
recorder.start(); // Recording is now started
}
break;
case TelephonyManager.CALL_STATE_RINGING:// 响铃状态
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile("/sdcard/" + System.currentTimeMillis() + ".3gp");
recorder.prepare();
break;
default:
break;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
第四步:在activity当中 Intent intent = new Intent(this, otherservice.class); startService(intent);即可, 如果停止服务可以stopService(intenet);