利用服务实现电话监听-来电-接听-挂断,进行录音

原创 2012年03月29日 11:01:28

          在要oncreate 中实行:          

public void onCreate() {
  super.onCreate();
  Log.i("TAG", "服务启动了");

  // 对电话的来电状态进行监听
  TelephonyManager telManager = (TelephonyManager) this
    .getSystemService(Context.TELEPHONY_SERVICE);
  // 注册一个监听器对电话状态进行监听
  telManager.listen(new MyPhoneStateListener(),
    PhoneStateListener.LISTEN_CALL_STATE);
 }

    

       实现MyPhoneStateListener :

 

private class MyPhoneStateListener extends PhoneStateListener {
		MediaRecorder recorder;
		File audioFile;
		String phoneNumber;

		public void onCallStateChanged(int state, String incomingNumber) {
			switch (state) {
			case TelephonyManager.CALL_STATE_IDLE: /* 无任何状态时 */
				if (recorder != null) {
					recorder.stop();// 停止刻录
					recorder.reset();// 重设
					recorder.release();// 刻录完成一定要释放资源
				}
				break;
			case TelephonyManager.CALL_STATE_OFFHOOK: /* 接起电话时 */

				try {
					recorder = new MediaRecorder();
					recorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 设置音频采集原
					recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);// 内容输出格式
					recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); // 音频编码方式

					// recorder.setOutputFile("/sdcard/myvoice.amr");
					audioFile = new File(
							Environment.getExternalStorageDirectory(),
							phoneNumber + "_" + System.currentTimeMillis()
									+ ".3gp");
					recorder.setOutputFile(audioFile.getAbsolutePath());
					Log.i("TAG", audioFile.getAbsolutePath());

					recorder.prepare(); // 预期准备
					recorder.start();

				} catch (IllegalStateException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}

				break;
			case TelephonyManager.CALL_STATE_RINGING: /* 电话进来时 */
				phoneNumber = incomingNumber;
				break;
			default:
				break;
			}
			super.onCallStateChanged(state, incomingNumber);
		}
	}


        通过上续两个对应的步骤即可以实现通过server对电话的监听工作,在CALL_STATE_IDLE无状态(即空闲状态),CALL_STATE_OFFHOOK 接通电话(即挂起),CALL_STATE_RINGING 电话进来(即来电时)

我们可以在每个状态中执行我们想要达到目的。

Android 实现自动接听和挂断电话功能

[代码] [Java]代码 添加权限 main.xml

Android自动接听和挂断电话实现原理

转自:http://bbs.51cto.com/thread-1078059-1.html 一  前言 这两天要研究类似白名单黑名单以及手势自动接听的一些功能,所以呢,自然而然的涉及到怎么自动...

Android N 来电界面_接听_挂断_短信回复

本流程图基于MTK平台 Android 7.0,普通来电,本流程只作为沟通学习使用 本篇博客主要介绍在 AnswerFragment 上处理用户的三个操作,分别是 Answer(接听)、Decl...

自动接听或者挂断来电

自动接听或者挂断来电 电话状态监听

Android N 来电界面_接听_挂断_短信回复

本流程图基于MTK平台 Android N,普通来电,本流程只作为沟通学习使用本篇博客主要介绍在 AnswerFragment 上处理用户的三个操作,分别是 Answer(接听)、Decline(拒接...

android 来电自动接听和自动挂断(2.3以上)

转自http://stephen830.iteye.com/blog/1181786 android 来电自动接听和自动挂断     注意:android2.3版本不支持下面的自动接听方法...

android 来电自动接听和自动挂断

转自:http://stephen830.iteye.com/blog/1181786 android 来电自动接听和自动挂断     注意:android2.3版本不支持下面的自动接听方...
  • yinrm
  • yinrm
  • 2012年05月01日 16:55
  • 1311

android 来电自动接听和自动挂断

转自:http://stephen830.iteye.com/blog/1181786 //---------------------------------------------...

android电话相关功能整合(读取通话记录、自动拨号、自动挂断、自动接听)

最近在做的一个crm项目要求实现实时上传通话记录和自动拨打电话功能,研究了一下电话相关的一系列功能,趁着今天不忙在此总结下,做个备忘。 一、读取通话记录:         1、首先andr...

Android 电话自动接听和挂断详解

1、通过aidl及反射实现挂断电话 具体分三步: (1)ITelephony.aidl ,必须新建com.android.internal.telephony包并放入ITelephony.aidl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用服务实现电话监听-来电-接听-挂断,进行录音
举报原因:
原因补充:

(最多只允许输入30个字)