读书人

复电话后进行录音

发布时间: 2012-09-29 10:30:01 作者: rapoo

来电话后进行录音
1.建 一个service
public class PhoneListenerService extends Service {

private static final String SDPATH = Environment.getExternalStorageDirectory() + "/";
private static final String TAG = "PhoneListenerService";

@Override
public IBinder onBind(Intent intent) {
return null;
}


@Override
public void onCreate() {
super.onCreate();

TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);

PhoneStateListener stateListener = new PhoneStateListener() {
private MediaRecorder recorder;
private String incomingNumber;
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch(state) {
case TelephonyManager.CALL_STATE_IDLE ://无电话
if(recorder != null){
this.incomingNumber = null;
recorder.stop();
recorder.release();
}

break;
case TelephonyManager.CALL_STATE_OFFHOOK : //接电话
Log.i(TAG, "start record");
try {
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
SimpleDateFormat format = new SimpleDateFormat("yymmddhhmms");
//保存的文件名
String filename = this.incomingNumber + "_" + format.format(new Date()) + ".3gp";
//文件保存位置
recorder.setOutputFile(SDPATH + filename);
recorder.prepare();
recorder.start();
} catch (Exception e) {
Log.e(TAG, e.toString());
}
break;
case TelephonyManager.CALL_STATE_RINGING : //来电话
Log.i(TAG, "new ring");
this.incomingNumber = incomingNumber;
recorder = new MediaRecorder();
break;
}

super.onCallStateChanged(state, incomingNumber);
}
};

//监听电话
Log.i(TAG, "start listener");
telephonyManager.listen(stateListener, PhoneStateListener.LISTEN_CALL_STATE);
}

}
2.建一个广播,在开机时调用

public class BootBroadcastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
System.out.println("broadcast");
Intent service = new Intent(context, PhoneListenerService.class);
context.startService(service);
}

}
3.xml文件中写
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.halleluja.phone"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<service android:name=".PhoneListenerService"/>
<receiver android:name=".BootBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="7" />

<!-- 录音权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!-- 电话状态权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!-- 启动权限 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<!-- sdcard文件创建删除权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- sdcard写权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>

读书人网 >移动开发

热点推荐