Android来电监听
2013-09-04 19:38
85 查看
本文实现来电自动接听,自动录音,自动回拨功能。
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); TelephonyManager mTelephonyManager =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); mTelephonyManager.listen(new PhoneListener(), PhoneStateListener.LISTEN_CALL_STATE); ITelephony mTelephony = ITelephony.Stub.asInterface(ServiceManager.getService("phone")); } class PhoneListener extends PhoneStateListener { private MediaRecorder mRecorder = null; private boolean flag = false; private String phoneNum = null; @Override public void onCallStateChanged(int state, String incomingNumber) { // TODO Auto-generated method stub switch (state) { case TelephonyManager.CALL_STATE_IDLE: try { if (mRecorder != null) { mRecorder.stop(); // 停止 mRecorder.release();// 释放 mRecorder = null;// 垃圾回收 } if (flag) { mTelephony.call(phoneNum); flag = false; } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } break; case TelephonyManager.CALL_STATE_OFFHOOK: //通话录音 try { mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 此处只实现了录本地MIC输入的声音,若想录入对立通话者的声音 mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mRecorder.setOutputFile("/mnt/sdcard/" + incomingNumber + "_"+ System.currentTimeMillis() + ".3gp"); mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); try { mRecorder.prepare(); } catch (Exception e) { e.printStackTrace(); } mRecorder.start(); Thread.sleep(30 * 1000); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } break; case TelephonyManager.CALL_STATE_RINGING: //来电自动接听 try { phoneNum = incomingNumber; flag = true; if (mTelephony.isRinging()) { mTelephony.silenceRinger(); mTelephony.answerRingingCall(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } break; default: break; } super.onCallStateChanged(state, incomingNumber); } } }
相关文章推荐
- Android 多媒体控制 来电监听-耳机插拔监听-耳机按钮监听-MediaSession-MediaStyle
- 如何实现android中监听来电并生成悬浮窗体提示
- [Android] 使用广播接收器Braodcast Receiver 监听手机来电 去电 挂断的事
- android 2.1 监听电话状态并自动接听来电
- Android监听来电和去电
- android 2.1 监听电话状态并自动接听来电
- android 呼入电话的监听(来电监听)
- android 2.1 监听电话状态并自动接听来电
- Android获取手机状态和监听手机来电状态
- android 电话状态的监听(来电和去电)
- Android监听器实现(二)Broadcast方式对通话状态(来电,拨号,挂机)的精确监听
- android 呼入电话的监听(来电监听)
- android 监听电话去电接通瞬间[非来电]
- 如何实现android中监听来电并生成悬浮窗体提示
- android 电话状态的监听(来电和去电)
- android监听来电并提示
- Android监听系统来电并弹出提示窗口
- 初学Android,手机管理器之监听手机来电(六十三)
- Android 监听来电和去电状态
- 举例说明在android中用PhoneStateListener监听手机电话状态与用发送邮件来通知来电电话的号码