首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

复电话后进行录音

2012-09-29 
来电话后进行录音1.建 一个servicepublic class PhoneListenerService extends Service {private static f

来电话后进行录音
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>

热点排行