监听手机录音

监听手机录音

需求分析:

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

      
知识点: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监听的是手机状态的变化,下面该监听器其它的监听对象<span>监听手机录音</span>
手机状态改变的state三种值:空暇、通话、挂断

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


<span>监听手机录音</span>

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>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119199.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 好的留言本,看看呀!

    好的留言本,看看呀!

    2021年7月23日
  • listView1.Items.Add()与 listView1.Items[i].SubItems.Add()区别

    listView1.Items.Add()与 listView1.Items[i].SubItems.Add()区别listView1.Items是ListViewItem的集合打开资源管理器,看看windows目录,使用Details方式,一个ListViewItem就是一行,比如目录名称,修改时间,类型,大小,这整个一条记录是一个ListViewItem而listView1.Items[i].SubItems是ListViewSubItem的集合比如刚才的目录名称或

    2022年7月26日
  • totalcmd工具的主要功能_windows cmd 命令大全

    totalcmd工具的主要功能_windows cmd 命令大全一、Totalcmd配合7-Zip进行压缩、解压缩下载7z文件。可去官网下载安装版文件,再解压,只提取其中的7z.dll文件和7zG.exe文件再将其放在totalcmd\Utilities\7-Zip目录下。(注Utilities是我自己建的一个文件夹,用来存放一些可直接调用的小工具。)说明:虽说7-Zip有个叫7za.exe的命令行工具,但显示效果不佳…

    2022年10月24日
  • Tomcat之——宕机自动重启和每日定时启动tomcat

    Tomcat之——宕机自动重启和每日定时启动tomcat在项目后期维护中会遇到这样的情况,tomcat在内存溢出的时候就出现死机的情况和遇到长时间不响应,需要人工手动关闭和重启服务,针对这样的突发情况,希望程序能自动处理问题而不需要人工关于,所以才有了目前的需求。一、设置tomcat定时启动1,首先将tomcat注册为服务,先打开tomcat的bin目录下service.bat文件,修改下面的值,这是sevvice的注册名称和显示名称,一般

    2022年7月23日
  • 您的计算机无法访问dota2服务器,提示“已连接至DOTA2游戏协调服务器,正在登陆中”该如何解决?…「建议收藏」

    您的计算机无法访问dota2服务器,提示“已连接至DOTA2游戏协调服务器,正在登陆中”该如何解决?…「建议收藏」《DOTA2》游戏,是一款RPG有些,在国内的玩家有很多,最近有位小伙伴打算在Win10电脑上与朋友一起玩《DOTA2》,却一直提示“已连接至DOTA2游戏协调服务器,正在登陆中”,无法顺利进入该游戏,很是郁闷,所以来问小编该如何解决?今天,小编就带大家一起去了解一下Win10电脑玩《DOTA2》提示“已连接至DOTA2游戏协调服务器,正在登陆中”的解决方案。解决方案一:1、开始按钮在搜索中输入C…

    2022年5月17日
  • 微信小程序真机预览图片图标无法显示怎么办_小程序进去不显示内容

    微信小程序真机预览图片图标无法显示怎么办_小程序进去不显示内容注意点:1.路径问题,路径最好不要超过两个:比如/images 这是一个,../images这是两个2.图片用的是<img/>不是<image/>3.图片名、文件夹名不能为中文,不能有空格4.图片的http地址为小写、图片后缀名为小写…

    2022年8月18日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号