package com.wyx.phoneListener;
import java.io.File;
import java.io.IOException;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.Environment;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
/**
* @author wangyx
* �绰¼��ʵ��
*/
public class PhoneService extends Service {
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
//ע��绰״̬�������ص�PhoneListener()
/**
* new PhoneListener():��������ص��ĺ���
* PhoneStateListener.LISTEN_CALL_STATE:������״̬�������״̬ʱ�������ص���
*/
telephonyManager.listen(new PhoneListener(), PhoneStateListener.LISTEN_CALL_STATE);
}
//�ڲ���
private final class PhoneListener extends PhoneStateListener{
private String incomingNumber;
private MediaRecorder mediaRecorder;
private File file;
@Override
public void onCallStateChanged(int state, String incomingNumber) {
// TODO Auto-generated method stub
try {
switch(state){
case TelephonyManager.CALL_STATE_RINGING: //����״̬
this.incomingNumber = incomingNumber;
break;
case TelephonyManager.CALL_STATE_OFFHOOK: //ͨ��״̬
file = new File(Environment.getExternalStorageDirectory(),
incomingNumber+System.currentTimeMillis()+".3gp"); //�����ļ���ע���ļ�����ѽ���Ϻ�
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); //������Դ
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //�������뷽ʽ
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //������ʽ
mediaRecorder.setOutputFile(file.getAbsolutePath()); //�������õ�·��
mediaRecorder.prepare(); //��¼������
mediaRecorder.start(); //��ʼ¼��
break;
case TelephonyManager.CALL_STATE_IDLE: //�һ�״̬
if(mediaRecorder != null){
mediaRecorder.stop(); //ֹͣ¼��
mediaRecorder.release(); //�ͷ�¼����Դ
mediaRecorder = null;
//�ϴ�������
// update(file);
}
break;
}
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.onCallStateChanged(state, incomingNumber);
}
}
}