public class BootBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, PhoneService.class);
context.startService(service);
}
}
public class PhoneService extends Service {
private final String TAG="PhoneService";
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
TelephonyManager manager=(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
manager.listen(phonyListener,PhoneStateListener.LISTEN_CALL_STATE);//监听电话状态
Log.i(TAG,"启动服务");
}
PhoneStateListener phonyListener=new PhoneStateListener(){
private String number;
private MediaRecorder mRecorder;
@Override
public void onCallStateChanged(int state, String incomingNumber) {
// TODO Auto-generated method stub
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE://挂断
if(mRecorder!=null){
Log.i(TAG,"录音完成");
mRecorder.stop();//停止
mRecorder.release();//释放
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK://接起电话
Log.i(TAG,"开始录音");
try{
mRecorder=new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//从麦克风采集声音
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置储存格式
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置编码格式
mRecorder.setOutputFile(Environment.getExternalStorageDirectory()+"/"+number+"_"+System.currentTimeMillis()+".3gp");
mRecorder.prepare();//预备
mRecorder.start();//开始
}catch (Exception e) {
Log.e(TAG,e.toString());
}
break;
case TelephonyManager.CALL_STATE_RINGING://来电显示
number=incomingNumber;
Log.i(TAG,number);
break;
default:
break;
}
}
};
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.phonelisten"
android:versionCode="1"
android:versionName="1.0">
<!-- 读取电话状态权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 音频刻录权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 对外部文件的写入和删除权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 对外部存储设备的写入权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 开机广播 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".BootBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
<service android:name=".PhoneService"></service>
</application>
</manifest>