使用 MediaRecorder 在 Android 中录制语音通话

2023-12-06

我在通话录音时遇到问题 我已拨打服务并致电BroadcastReceiver获取通话状态。在TelephonyManager.EXTRA_STATE_OFFHOOK当接到电话时。我正在使用以下代码来记录通话

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);                               recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
recorder.setOutputFile(audiofile.getAbsolutePath());
try {
     recorder.prepare();
     recorder.start();
} 
catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) { 
e.printStackTrace();
} catch (Exception ex)
{
ex.printStackTrace();
}

该代码工作正常并创建音频文件,但是当我收听音频文件时,我只能听到我发出的声音,不会记录呼叫者的声音。

当我使用

recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);

代替

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

在上面的代码中,它抛出记录器在 recorder.start() 上失败的异常;

那么,如何录制语音通话呢?


一年前我也有同样的疑问AudioSource.VOICE_CALL 不适用于 android 4.0 但适用于 android 2.3

recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); 适用于有限的设备,它只会在不支持语音通话的设备上给出异常,因此捕获异常并重新从麦克风开始录音,这将使您在不支持的设备中保持更安全的状态。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 MediaRecorder 在 Android 中录制语音通话 的相关文章

  • Flutter :已处置的 CameraController,在已处置的 CameraController 上调用了 buildPreview()

    如何正确初始化和处理相机控制器 我在用camera 0 9 4 5 与许多人一起 其他错误 https stackoverflow com questions 70592464 flutter change the path of reco
  • 如何使用 gradle 从 3 个子模块构建 1 个 jar

    I have 安卓工作室3 gradle 4 1 梯度工具3 classpath com android tools build gradle 3 0 1 当我有一个模块并使用 gradle 工具 2 时 我使用了 task makeJar
  • 如何从Firebase Firestore实时更新文档中获取修改后的字段或数据? [复制]

    这个问题在这里已经有答案了 我有多个文档 我的问题是我无法获取修改的特定数据 我正在获取完整的文档 db collection employees whereEqualTo OID OID addSnapshotListener new E
  • Android 图表[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个项目 其中有一些图表 图形 刻度图 烛台图和范围图 但问题是 没有该图表的库 我有烛台图的
  • 拖动时跳转 ImageView。 getX() 和 getY() 值正在跳跃

    我创建了一个用于拖动视图的 onTouchListener 如果我使用的话 图像可以顺利拖动getRawX and getRawY 问题是 当您向下放置第二个指针然后抬起第一个指针时 图像将跳转到第二个指针 此 onTouchListene
  • 在 gradle 中,我应该排除分支下的所有依赖项还是只排除根就足够了?

    我已将以下自定义任务添加到我的build gradlefile 为了打印出依赖项的依赖项 This part is useful for finding conflict resolution s between dependencies
  • 需要 Android webview window.open() 和 window.close() 的信息

    我正在开发一个安卓应用程序 这是我网站的 WebView 该网站包含一个弹出按钮 单击该按钮后 将打开一个新窗口并显示内容 该链接可以来自外部站点 然而 当我实现此操作时 新选项卡正在打开 之后它会弹出以打开浏览器 尽管在 Web 视图中打
  • 从ListView中隐藏行而不占用空间

    我有一个带有关联 ArrayAdapter 的 ListView 它在多个活动中显示其内容 不幸的是 现在有必要 我的 ListView 在其中一项设置中不显示其所有元素 而仅显示 属性 未设置为 true 的元素 我想避免使用两个具有不同
  • Android上如何获取ImageView的Drawable的矩形?

    我想要获取将包裹 ImageView 的 Drawable 的矩形对象 而不是包裹 ImageView 的矩形 我将使用该矩形在 Drawable 周围绘制一些奇特的矩形 我怎样才能得到那个矩形 Rect rect new Rect Ima
  • 如何禁用操作栏上“向上”按钮的翻转?

    背景 我做了一个 应用程序管理器 https play google com store apps details id com lb app manager 替代应用程序 我希望添加 RTL 从右到左 语言的翻译 因为我知道在某些 And
  • React Native Expo StackNavigator 重叠通知栏

    我正在尝试为我的 React Native Expo 应用程序实现导航栏 这里有一个问题 dependencies expo 18 0 3 react 16 0 0 alpha 12 react native 0 45 1 react na
  • 选项卡主机内的 Android Fragment 视图状态 [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Fragment 为 Android 中的每个选项卡单独的返回堆栈 https stackoverflow com questions 6987334 separate back stack f
  • Android蓝牙java.io.IOException:bt套接字已关闭,读取返回:-1

    我正在尝试编写一个代码 仅连接到运行 Android 5 0 KitKat 的设备上的 目前 唯一配对的设备 无论我尝试了多少方法 我仍然会收到此错误 这是我尝试过的最后一个代码 它似乎完成了我看到人们报告为成功的所有事情 有人能指出我做错
  • Android 中的 OpenGL 缩小

    我正在使用 3D 对象并渲染它并通过扩展 GLSurfaceView 实现渲染器来显示它 问题是如何通过捏合和捏合进行缩小 下面是我的班级 package com example objLoader import java nio Byte
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 如何将样式应用于我拥有的所有 TextView? [复制]

    这个问题在这里已经有答案了 可能的重复 设计所有 TextView 或自定义视图 的样式 而不向每个 TextView 添加样式属性 https stackoverflow com questions 6801890 styling all
  • 如何更改操作栏背景和文本颜色

    我正在使用本教程中的导航抽屉 http www androidhive info 2013 11 android sliding menu using navigation drawer http www androidhive info
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • 如何访问我的 Android 程序中的联系人

    我正在制作一个短信应用程序 并且想要访问我的 Android 应用程序中的联系人 我想访问联系人 就像他们在实际联系人列表中一样 选择后 我需要返回到我的活动 在其中我可以向该人发送短信 或者是否可以访问存储联系人的数据库 我的代码如下所示

随机推荐

  • 如何使用 Java 读取 AWS S3 文件?

    我尝试将文件从 AWS S3 读取到我的 java 代码中 File file new File s3n mybucket myfile txt FileInputStream fileInput new FileInputStream f
  • 打字稿表单重置()不起作用

    我正在使用打字稿重置表单 但它不起作用或打字稿编译器 1 0 3 版本 无法识别重置 函数 编译器给出错误 Build Interface HTMLFormElement incorrectly extends interface HTML
  • X11 在 Mac OSX 10.11.6 上的 XCode 中使用 CImg 标头时出现问题

    我将 X11 添加到我的标头搜索路径 库搜索路径中 并且在 XCode 的构建设置和构建阶段中将二进制文件链接到 X11 库 但是我仍然收到下图所示的错误 我 99 999 确定问题是 X11 因为当我禁用显示功能时 警告不存在 关于我下一
  • 使用 selenium(webdriver) 的 Python 程序不能作为单个且无控制台的 exe 文件运行 (pyinstaller)

    以下是我的Python代码 t py from tkinter import messagebox from tkinter import from selenium import webdriver def clicked iedrive
  • System V amd64 如何处理很长的返回值?

    我正在简要研究 amd64 x86 64 架构的 System V ABI 并且很好奇它如何处理超过 128 位的返回值 其中rax and rdx还不够 我在 Ubuntu 18 04 64 位 更一般地说 任何 amd64 POSIX
  • 为 CUDA 实现 32 位 memset 的“正确”方法是什么?

    CUDA有API调用 cudaError t cudaMemset void devPtr int value size t count 它用单字节值填充缓冲区 我想用多字节值填充它 假设 为了简单起见 我想填充devPtr具有 32 位
  • Reactjs:将相同的道具传递给多个组件

    我对 ReactJS 有点陌生 我正在尝试做一些清理工作 我想知道如何使用新 context api 提供的 props 的扩展属性
  • 使用 GNU Parallel 组合两个命令用于 OCR 项目

    我想编写一个运行命令的脚本OCRpdfs 在写入文本文件后删除生成的图像 我想要组合的两个命令如下 该命令创建文件夹 解压pgm从每个PDF并将它们添加到每个文件夹中 time find name pdf parallel j 4 prog
  • 多字节字符串上的 str_replace() 危险吗? [复制]

    这个问题在这里已经有答案了 给定某些多字节字符集 我假设以下内容没有达到预期目的是否正确 string str replace string 特别是 如果输入的字符集中可能包含 0xbf5c 等有效字符 则攻击者可以注入 0xbf22 来获
  • 如何读取jar内的属性文件?

    我在 com abc properties 包下有一个 config properties 文件 我需要从 com abc util 中存在的 java 类之一读取属性文件 这两个文件都存在于 jar 中 我尝试过使用 fs new Fil
  • 可变参数函数和常量

    可变参数函数到底如何处理数字常量 例如考虑以下代码 myfunc 5 0 1 2 3 4 该函数如下所示 void myfunc int count 现在 为了迭代单个参数va arg 我需要知道它们的大小 例如int short char
  • MuPDF Android Pdf 适合屏幕

    我成功为我的 Android 应用程序之一安装 MuPDF 但问题是 渲染时我无法将 PDF 适配到屏幕上 任何人都可以建议我如何实现这一目标 谢谢 编辑ReaderView java中的measureView方法成为 private vo
  • Range.Cells 属性语法

    我对 Range Cells 属性感到困惑 根据 MSN 文档 Range Cells 属性 Excel 语法应该是expression Cells 然而 在下面的示例中 代码并未遵循此语法 但似乎使用Cells作为一个函数 Workshe
  • 如何在 Android 中动态调整补间动画的持续时间/速度

    假设我有一个 Android 应用程序 在该应用程序中我想为 L 形状的球图形制作动画 这需要我定义一个补间动画 在其中创建一个动画 xml 文件 如下所示 并将其应用到其中包含球图形的视图
  • 使用什么方法来保护这个 Android APK:反射?加密?我如何对其进行逆向工程并分析?

    我了解 java 编程的基础知识 但我对逆向工程 APK 很陌生 所以解释会很好 我有一个 APK 文件 但没有 Java 源代码 在线反编译APK后 大部分应用程序隐藏在 资产 gt classes dex dat 我发现的唯一的java
  • JVM 如何处理 RuntimeException(s)

    在创建自定义异常时 如果我们想创建一个checkedException 我们扩展了 Exception 类并为未经检查的异常我们扩展了 RuntimeException 类 我的问题是 当 RuntimeException 和 Except
  • 计算 MySQL 数据库中时间戳在 X 间隔内的行数

    我正在尝试计算数据库表中 X 小时或 X 天内插入的行数 我已经多次尝试 但我不断收到空集响应 我的表中的 start stamp 列的格式如下 2013 08 07 18 18 37 我尝试过很多变体 select from mytabl
  • Bitly 的 Nuget 包以缩短链接

    我需要在 C 中使用 bitly 来缩短链接 有没有这个的 nuget 包 有人可以为我提供代码以便我可以使用它吗 查看https www nuget org packages BitlyAPI 或者您自己调用 bit ly api 该 A
  • ijg 支持 JPEG - 出现访问冲突

    我最近正在尝试更新my game以压缩格式 JPEG 和 PNG 存储图形 虽然我最终选择了另一个图书馆 但我最初的尝试是合并ijg进行JPEG解压缩 然而 我什至无法让最简单的控制台应用程序工作 并且想知道是否有人能够阐明其原因 这是我的
  • 使用 MediaRecorder 在 Android 中录制语音通话

    我在通话录音时遇到问题 我已拨打服务并致电BroadcastReceiver获取通话状态 在TelephonyManager EXTRA STATE OFFHOOK当接到电话时 我正在使用以下代码来记录通话 recorder setAudi