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

原创 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 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a...

自动接听或者挂断来电

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

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

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

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

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

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

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

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

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

Android 蓝牙开发(八)hfp接听、挂断电话

继续研究hfp相关功能。蓝牙耳机可以控制手机接听、拒接、挂断电话,拨打电话等功能。本文主要分析下起这些操作的大致流程。

Android拨打、接听、挂断电话操作

Android2.3之前的系统可以通过反射机制调用ITelephone的方法来挂断电话,因为Android2.3以后增加了对permission  android.permission.MODIFY_...
  • FX_SKY
  • FX_SKY
  • 2013-02-06 12:09
  • 4255

Android开发教程--自定义接听/挂断电话功能

1、首先在manifest中加入如下的权限                 红色的部分如何报错,则clean一下就好了。             ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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