dest.writeString(name);
dest.writeString(phoneNumber);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public Person createFromParcel(Parcel in)
{
return new Person(in);
}
public Person[] newArray(int size)
{
return new Person[size];
}
};
}
PhoneBrocastRecive
package com.huawei.phonerecorder.receiver;
import java.io.File;
public class PhoneBrocastRecive extends BroadcastReceiver {
private static final String TAG = "PhoneBrocastRecive";
private static final String folderPath="/sdcard/phone_record/";
private static MediaRecorder recorder;
private static boolean callOver = false;
private Context context;
private Intent intent;
private static String outNumber;
private static String inNumber;
private DataOpenHelper dataHelper;
private static final int FILE_TOTAL = 5;
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
this.intent = intent;
Log.i("----------->", "开始广播");
//outNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
//inNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
String in = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
String out = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
if(in != null){
inNumber = in;
}
doCall(context, intent);
/*if(outNumber == null && inNumber != null){
doInCall(context, intent);
}else if(outNumber != null){
doOutCall(context, intent);
}*/
/*Log.d("outNumber ----- >", outNumber);
Intent serviceIntent=new Intent(context,PhoneService.class);
context.startService(serviceIntent); */
}
private void doCall(Context context, Intent intent){
String phoneState = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if(phoneState.equals(TelephonyManager.EXTRA_STATE_IDLE)){
if(callOver){
stopRecord();
callOver = false;
inNumber =null;
}
Log.d(TAG, "IDLE");
}else if(phoneState.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){
callOver = true;
startRecord();
Log.d(TAG, "OFFHOOK");
}else if(phoneState.equals(TelephonyManager.EXTRA_STATE_RINGING)){
Log.d(TAG, "RINGING");
}
}
private void doOutCall(Context context, Intent intent){
//String outNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.d(TAG, outNumber);
}
private void doInCall(Context context, Intent intent){
//String inNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.d(TAG, inNumber);
}
private void startRecord(){
Log.d(TAG, "startRecord");
String fileName = generateFileName();
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
Log.d(TAG, fileName);
recorder.setOutputFile(fileName);
try {
recorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
recorder.start();
}
private String generateFileName(){
dataHelper = new DataOpenHelper(context);
if(inNumber != null){
Person person = dataHelper.findPersonByNumber(inNumber);
if(person != null){
File f = new File(folderPath+person.getPhoneNumber() +"/");
if(!f.exists()){
f.mkdir();
}
return f.getAbsolutePath() +"/"+new Date().getTime()+".mp3";
}
}
StringBuffer sb = new StringBuffer();