Kylin麒麟

持之以恒……!

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

          在要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 电话进来(即来电时)

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

阅读更多
个人分类: AndriodPhone 电话
上一篇史上十大失败操作系统:JavaOS和Vista名列其中(1)
下一篇反复拨打电话,电话测试小程序,紧急电话与普通电话分枝判断
想对作者说点什么? 我来说一句

电话状态的监听挂断

2014年10月25日 2.9MB 下载

没有更多推荐了,返回首页

关闭
关闭