监听手机录音

需求分析:

记录通话过程中的录音,并保存到指定路径~

知识点:1.手机开机发出广播,广播接受者收到通知,开启service服务

2.Service工作流程:

1.获取手机管理对象·

2.注冊监听器,对应手机状态

3.依据手机状态(振铃、通话、空暇),创建Mediaplay对象,暂停

这里监听手机状态,加入?权限

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

代码:

TelephonyManager manager=(TelephonyManager) getSystemService(TELEPHONY_SERVICE);//获取电话管理

manager.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);

//用电话管理器注冊一个监听器,监听电话状态

注意:手机状态监听这,能够监听多个状态,LISTEN_CALL_STATE监听的是手机状态的变化,下面该监听器其它的监听对象

手机状态改变的state三种值:空暇、通话、挂断

依据三种状态,处理Mediaplayer,代码

public void onCallStateChanged(int state, String incomingNumber) {
// 电话状态改变时运行该方法

switch (state) {

case TelephonyManager.CALL_STATE_RINGING:

Log.d("Debug","振铃");

num = incomingNumber;
// 振铃时, 记录号码

break;

case TelephonyManager.CALL_STATE_OFFHOOK:

Log.d("Debug","開始录音");

startRecording();
// 摘机时, 開始录音

break;

case TelephonyManager.CALL_STATE_IDLE:

Log.d("Debug","空暇状态");

stopRecording();
// 空暇时, 结束录音

break;

}

}

思考:假设手机没有振铃?


停止录音:

private void stopRecording() {

if (mRecorder != null) {

mRecorder.stop();
// 停止

mRecorder.release();     
// 释放资源

mRecorder = null;
// 垃圾回收

}

}

開始录音:

private void startRecording() {

try {

Log.d("Debug", "startRecording");

mRecorder = new MediaRecorder(); // 创建媒体记录器

mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 设置音频源

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);// 设置输出格式

mRecorder.setOutputFile("/mnt/sdcard/" + num + "_" + System.currentTimeMillis() + ".3gp");                             // 设置输出文件路径

mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);// 设置编码

mRecorder.prepare();
// 准备

mRecorder.start();
// 開始

} catch (Exception e) {

e.printStackTrace();

}
}}}

总结:MediaPlayer操作过程,停止和录音过程~,这里使用到了sdcard所以,必须声明权限。

     <uses-permission android:name="android.permission.RECORD_AUDIO"/>//同意程序进行录音

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> //写入存储卡


清单文件的配置信息:

<receiver  android:name=".PhoneBroacast">

<intent-filter >

<action android:name="android.intent.action.BOOT_COMPLETED"/>

</intent-filter>

</receiver>

<service android:name=".PhoneService">

</service>

监听手机录音

时间: 2024-08-04 21:58:29

监听手机录音的相关文章

监听电话录音

package com.example.calling; import java.io.IOException; import android.app.Service; import android.content.Context; import android.content.Intent; import android.media.MediaRecorder; import android.os.IBinder; import android.telephony.PhoneStateList

JS监听手机返回键

JS监听手机返回键,需要用些前端的"奇技淫巧". 核心代码如下: if (window.history && window.history.pushState) { $(window).on('popstate', function() { var hashLocation = location.hash; var hashSplit = hashLocation.split("#!/"); var hashName = hashSplit[1];

Android之——监听手机开机事件

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47028535 本文中,主要通过监听开机广播来达到监听手机开机状态的操作,在Android中可以通过广播机制来监听一些系统服务和系统级的操作,好了,不多说,直接上代码吧 1.创建广播接收者类BootCompleteReceiver 这个类中的回调方法是手机开机后自动调用,我在这里只是打印出相关日志,具体的业务逻辑大家可以自己根据自己的具体需求去实现. 代码如下: package c

使用ionic开发时用遇到监听手机返回按钮的问题~

当时用的是ionic开发一个app,需求是,当按下手机的返回按钮,在指定的页面双击退出,而在其他页面点击一次返回到上个页面: 其实用ionic自带的服务就可以解决:  //双击退出   $ionicPlatform.registerBackButtonAction(function (e) {   //判断处于哪个页面时双击退出    if($location.path() =='/message' || $location.path() =='/work' || $location.path(

身为前端仔,你竟然不会用fiddler?! (二)——监听手机请求和代理手机的资源

上一次说fiddler的时候,就简单地介绍了一下它的厉害的代理抓包功能.今天就说一下如何用fiddler来监听手机请求和代理手机的资源. 1.首先配置 fiddler允许"远程连接" 菜单栏Tools-->FiddlerOptions-->Connections 选中"Allowremote computers to connect".  是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来. 2.然后ping一下自己电脑的ip 电脑开始菜单

Android获取手机状态和监听手机来电状态

获取手机状态: import android.content.Context; import android.telephony.TelephonyManager; //获得相应的系统服务 TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); /** * 返回电话状态 * * CALL_STATE_IDLE 无任何状态时 * CALL_STATE_OFFHOOK 接起电话时 *

监听 手机back键和顶部的回退

// 回退事件,监听 手机back键和顶部的回退 pushHistory(); window.addEventListener("popstate", function(e) { window.location = '/index.php?m=mobile&c=slimmessage&a=slimsilkbag'; }, false); function pushHistory() { var state = { title: "title", ur

警惕最新安卓系统病毒&quot;微信大盗&quot;监听手机

国庆小长假刚刚结束,将自己出游的所见所闻发上微信,这是许多人的习惯.不过,近日出现了一个名为"微信大盗"的手机病毒,专门针对微信用户,危害极高.不法分子就是利用假期时人们放松警惕与特殊消费习惯行骗.该病毒基于Android系统,将自身伪装后引诱网民下载安装.手机一旦中毒,用户不但将面临隐私信息泄露等风险,还会遭到黑客的定向监听和定位跟踪,进而可能危及人身安全. "微信大盗"将自己伪装成手机安全管家来引诱网民下载,病毒一旦运行,将立刻删除自己的桌面图标,企图"

Android手机使用广播监听手机收到的短信

我们使用的Android手机在收到短信的时候会发出一条系统广播.该条广播中存放着接收到的短信的详细信息.本文将详细介绍如何通过动态注册广播来监听短信. 注册广播有两种方式,一种是动态注册,另一种是静态注册.动态注册,顾名思义就是在程序运行时注册的,需要用到广播的时候就注册,用完即销毁.静态注是在AndroidManifest.xml中注册的,在<application>中使用<receiver>标签注册. 那么如何创建一个监听短信的广播接收器呢,其实只需要新建一个类,让这个类继承B