赵雅智_service电话监听2加接通电话录音
步骤:
- 创建CallStateService继承Service
- 取得电话服务
- 监听电话动作
- 电话监听的对象
- 没有电话时
- 停止刻录
- 重设
- 刻录完成一定要释放资源
- 电话响铃时
- 从麦克风采集声音
- 内容输出格式
- 音频编码方式
- 获取sd卡目录并存入
- 电话接通时
- 开始录制
- 没有电话时
- 电话监听的行为
- 电话监听的对象
- 启动service
- 注册service并添加监听电话状态的权限
- 监听电话状态权限
- sd卡读写权限
- 音频录制权限
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.callstatelistener"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="14"android:targetSdkVersion="19" /><!-- 监听电话状态 --><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!-- 音频录制的权限 --><uses-permission android:name="android.permission.RECORD_AUDIO"/><!-- 向SD卡读写的权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.callstatelistener.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- 注册service --><service android:name="com.example.callstatelistener.CallStateService"></service></application></manifest>
CallStateService.java
package com.example.callstatelistener;import java.io.File;
import java.io.IOException;import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.Environment;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;/*** 监听电话状态service* * @author zhaoyazhi* * 2014-6-17*/
public class CallStateService extends Service {public static final String TAG = "aaa";@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {super.onCreate();// 取得电话服务TelephonyManager telManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);// 电话监听的对象,电话监听的行为telManager.listen(new MyPhoneStateListener(),PhoneStateListener.LISTEN_CALL_STATE);}class MyPhoneStateListener extends PhoneStateListener {private MediaRecorder recorder;/*** int state电话状态。 String incomingNumber电话号码*/@Overridepublic void onCallStateChanged(int state, String incomingNumber) {super.onCallStateChanged(state, incomingNumber);switch (state) {case TelephonyManager.CALL_STATE_IDLE: /* 无任何状态时 */if (recorder != null) {recorder.stop();// 停止刻录recorder.reset(); // 重设recorder.release(); // 刻录完成一定要释放资源}Log.i(TAG, "------------------没有电话来");break;case TelephonyManager.CALL_STATE_RINGING: /* 电话进来时 */Log.i(TAG, "------------------来电话了---并且响铃");recorder = new MediaRecorder();recorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 从麦克风采集声音recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);// 内容输出格式recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);// 音频编码方式// 获取sd卡目录File dir = Environment.getExternalStorageDirectory();recorder.setOutputFile(dir.getPath()+ "/csdn.amr");try {recorder.prepare(); // 预期准备} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}break;case TelephonyManager.CALL_STATE_OFFHOOK: /* 接起电话时 */Log.i(TAG, "------------------通话中");if (recorder != null) {recorder.start(); // 开始刻录}break;default:break;}};}
}
MainActivity.java
- package com.example.callstatelistener;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- public class MainActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //intent 意图
- Intent service = new Intent(MainActivity.this, CallStateService.class);
- //启动service服务
- this.startService(service);
- }
- }
查看sd卡文件
赵雅智_service电话监听2加接通电话录音相关推荐
- 赵雅智:android教学大纲
带下划线为详细内容链接地址.点击后可跳转.希望给大家尽一些微薄之力.眼下还在整理中 教学章节 教学内容 学时安排 备注 1 Android高速入门 2 Android模拟器与常见命令 3 Androi ...
- 通过PhoneStateListener实现Android电话监听
电话监听是比较简单的安卓案例.但却非常经典,因为它涵盖了动态监听.服务绑定.文件保存三大技术操作.作为Android学习的不错案例,今天我就和大家一起来看看安卓通过PhoneStateListener ...
- AndroidStudio系统广播Broadcast电话监听
电话监听录音APP 主要功能 (1)设置要监听的号码:要求使用隐式Intent跳转到手机联系人并选定号码 (2)利用系统广播机制监听该去电电话 (3)启动服务完成录音功能,当结束通话时结束录音(手工结 ...
- android音乐播放器监听器,android 音乐播放器电话监听
正好用到整理下 首先 添加 权限 电话监听 /** * * @author xiaoma * 电话监听器类 */ private class MobliePhoneStateListener exte ...
- 延迟加载图片并监听图片加载完成
要求: 图片延迟加载.未加载完显示加载中.监听图片加载完后,加载中消失. demo: <!DOCTYPE html> <html lang="en"> &l ...
- js - 预加载+监听图片资源加载制作进度条
这两天遇到一个新需求:一个一镜到底的h5动画.因为功能的特殊性,就要求我们提前监听页面的静态图片是否全部加载完毕.即处理预加载. 总结下来,下次这种需求需要提前注意以下几点: 一.图片而不是背景图 本 ...
- vue组件加载完成之后执行方法_vue-cli监听组件加载完成的方法
在使用vue-cli开发项目时遇到过一个问题,要求是页面组件全部加载完成后再执行某个函数,给上代码参考,方法可能有点笨,好在实现了功能. 1.安装vuex npm install vuex --sav ...
- android 电话监听和拦截
一.首先在manifest.xml文件中获取监听电话权限,注册监听电话的Activity 1.添加访问手机电话状态的权限 <uses-permission android:name=" ...
- android 之电话监听
在android中,要监听来电与去电是比较简单的,至少有如下两种方法. 1. Receiver 定义一个Receiver派生类,并指定action:android.intent.action.PHON ...
最新文章
- 皮一皮:大哥!二弟!三弟!
- 自然语言处理NLP-100例 | 第二篇:在线课程评论情感分析-本科毕设实战案例
- 配置事务springmvc3.1 mybatis 3.1 事务不起作用
- 【机器学习】机器学习项目流程
- 开源游戏服务器端框架Firefly正式将GFirefly整合
- C/C++学习之路: 智能指针
- php 系统平均负载,Linux_解析Linux系统的平均负载概念,一、什么是系统平均负载(Load a - phpStudy...
- python深入和扩展_加速方案 — Python扩展模块
- 用友uclient客户端下载手机_影院6080手机版-影院6080手机客户端下载
- Leetcode每日一题:129.sum-root-to-leaf-numbers(求根到叶子节点数字之和)
- 移动端html右滑空白,BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法...
- 【渝粤题库】陕西师范大学400001 思想政治教育原理 作业(专升本)
- code blocks代码性能分析_介绍几款Python性能优化工具
- DIY制作修改替换PPC手机短信背景图片的技巧
- C4D插件X-Particles粒子特效(六)
- 10年老程序员:到底是学前端好还是后端好?
- android高仿ios控制中心,控制中心IOS 13-安卓仿苹果ios控制中心插件
- 爬虫实战之爬取电影天堂全部电影信息
- 3d打印技术改变生活的影响
- 如何把microsoft store里面的软件添加到桌面
热门文章
- uboot启动内核的相关命令详解——boot、bootm
- Stlink无法检测到芯片
- Matlab运用kron()函数计算Kronecker乘法
- 灵图:不能上市就“冬眠”
- 对数线性模型 matlab,非线性规划含有对数函数用什么matlab调用函数的程序
- HTML5 DIV+CSS综合运用
- 输出给定集合的所有真子集的三种方法之比较
- Two thousand twenty one -- March -- twenty one -- Sunday
- 工业智能网关BL110应用之六: 支持PLC,Modbus,BACnet,电表等协议列表
- TT浏览器 v4.7 简体中文版