首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Android上使用麦克风

在Android上使用麦克风,您可以使用Android的AudioRecord类。以下是一个简单的示例代码:

代码语言:java
复制
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Button;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.io.FileOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    private static final int SAMPLE_RATE = 44100;
    private static final int CHANNEL_CONFIG = AudioFormat.CHANNEL_IN_MONO;
    private static final int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
    private static final int BUFFER_SIZE = AudioRecord.getMinBufferSize(SAMPLE_RATE, CHANNEL_CONFIG, AUDIO_FORMAT);

    private AudioRecord audioRecord;
    private Button startButton;
    private Button stopButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        startButton = findViewById(R.id.start_button);
        stopButton = findViewById(R.id.stop_button);

        startButton.setOnClickListener(v -> startRecording());
        stopButton.setOnClickListener(v -> stopRecording());

        audioRecord = new AudioRecord.Builder()
                .setAudioSource(MediaRecorder.AudioSource.MIC)
                .setAudioFormat(new AudioFormat.Builder()
                        .setEncoding(AUDIO_FORMAT)
                        .setSampleRate(SAMPLE_RATE)
                        .setChannelMask(CHANNEL_CONFIG)
                        .build())
                .setBufferSizeInBytes(BUFFER_SIZE)
                .build();

        if (audioRecord.getState() != AudioRecord.STATE_INITIALIZED) {
            Toast.makeText(this, "AudioRecord initialization failed", Toast.LENGTH_SHORT).show();
            finish();
        }
    }

    private void startRecording() {
        audioRecord.startRecording();
        Toast.makeText(this, "Recording started", Toast.LENGTH_SHORT).show();

        new Thread(() -> {
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(Environment.getExternalStorageDirectory() + "/record.pcm");
                byte[] buffer = new byte[BUFFER_SIZE];
                int bytesRead;
                while (audioRecord.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING) {
                    bytesRead = audioRecord.read(buffer, 0, BUFFER_SIZE);
                    fos.write(buffer, 0, bytesRead);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (fos != null) {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }

    private void stopRecording() {
        audioRecord.stop();
        Toast.makeText(this, "Recording stopped", Toast.LENGTH_SHORT).show();
    }
}

这个示例代码将使用Android的AudioRecord类来捕获麦克风输入,并将其保存到一个PCM文件中。您可以根据需要修改这个示例代码,以满足您的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在Ubuntu构建Android ROM

介绍 Android是当今世界最流行的操作系统。数以百计的不同设备制造商选择将其安装在他们的设备,因为它是免费的开源的,并且围绕它构建了大量的应用程序和服务生态系统。...通过如何在Ubuntu系统安装Git安装Git。 第一步 - 开始screen会话 您将在本教程中执行的某些命令可能会运行数小时。如果在命令运行时PC和服务器之间的SSH连接中断,它们将被突然终止。...第六步 - 开始构建 AOSP代码树包含一个名为envsetup.sh的脚本,该脚本具有多个与构建相关的辅助函,mm,mma和mmm充当make命令的快捷方式,其他函数lunch设置了重要的环境变量...使用nproc命令查看您拥有的CPU数量: nproc 该命令返回CPUS的数量: 8 然后,您可以将此数字与make一起使用以指定并行执行: make -j8 即使有8个CPU,只要服务器没有其他CPU...emulator -no-window -noaudio > /dev/null 2>&1 & 要检查模拟器是否能够成功启动,请等待一分钟,然后使用Android调试工具adb在模拟器打开shell。

2.4K00

何在ios成功android tv?​

使用appuploader服务同步:如果期望制作好证书后在其他电脑同样可以下载到这个证书,或者和你同事同步此证书,则需要勾选使用appuploader服务同步。...Apple邮箱会接收到许多通知消息,IPA上传,账号发生变化,被停用,都会有消息提示。​...9.架版本需要使用正式的证书(apple distribution),开发测试用开发证书(apple development)​一般都要创建两个证书一个用于开发,一个用于架,如果有支付内容,还必需要...选择使用的证书,如果忘记是哪个 了可以选择全部证书。...至此,iOS app架app store流程就结束了。​四、上传证书编译打包​使用其他平台的,欢迎加入架交流群,众多大神为你解答。

27930

何在Debian使用Cachet

它具有干净的界面,旨提供自适应系统,因此它可以在所有设备运行。在本教程中,我们将在Debian设置一个带Cachet的状态页面。...参照如何在Debian 8安装和使用Composer安装Composer; 参照如何在Ubuntu系统安装Git安装Git SMTP服务器,因此Cachet可以向用户发送事件的电子邮件,并向在Cachet...第3步 - 下载Cachet Cachet的源代码托管在GitHub。这使得使用Git轻松下载。 接下来的几个步骤要使用cachet用户,所以切换到它。...注意:如果你正在使用其他数据库(MySQL或PostgreSQL),则可以检查所有可能的数据库驱动程序名称的Cachet数据库选项。...结论 你已经使用SQLite支持的SSL设置了Cachet,并知道如何使用Git维护它。你可以选择其他数据库,MySQL或PostgreSQL。

2.2K30

Android何在root设备开启ViewServer详解

前言 关于什么是Hierarchy Viewer,请查看官方文档:http://developer.android.com/tools/debugging/debugging-ui.html。...Hierarchy Viewer 工具提供了一个可视化界面显示布局的层次结构,让我们可以进行调试,从而优化界面布局结构,它需要手机开启 ViewServer 配合使用 但是在真机上并不能使用Android...的官方文档中提到:出于安全考虑,Hierarchy Viewer只能连接Android开发版手机或者模拟器 在代码中是在 WindowManagerService.java 类中做的限制,如下 private...风险比较大,今天偶然返现一个工具 mprop 这个工具可以修改内存中一些属性的值,但是在手机重启后需要重新修改,不过这都是小事 依照工具内给定的步骤修改了 ro.debuggable 的值为 1 ,然后使用下面的命令

1K20

何在 Linux 使用 Apt 命令

它将经常使用的apt-get和apt-cache工具聚合在一起,并给一些选项设置默认值。 apt被设计为非交互操作使用。...更喜欢在当前 Shell 脚本中使用apt-get和apt-cache,因为它们兼容不同的版本,并且有更多的选项和特性。 大部分apt 命令需要以有 sudo 权限的用户身份运行。...一、升级软件包索引(apt update) APT 软件包索引是一个基础数据库,它根据你系统的可用软件源,存储了所有可以安装的软件包记录。 想要升级软件包,运行下面的命令。...不管哪一个有依赖包的新的软件包被安装在系统,被依赖的软件包也会一起安装在系统。如果这个软件包被移除了,它的依赖软件包还被保留在系统。残留的软件包不再被使用,并且可以被移除了。...想要列出所有可用的软件包,使用下面的命令: sudo apt list 这个命令将会打印出一系列软件包,包括信息版本号,软件包架构。

2.5K30

何在Mac轻松使用SVN

大家都知道,在Mac或Linux环境下使用git比较方便,但有时候根剧项目要求又不得不使用SVN,在windows系统上面有我们最为熟悉的小乌龟(TortoiseSVN,下载链接:https://tortoisesvn.net.../downloads.zh.html)在mac系统上面则很少svn的工具,本文就带大家对比Git,介绍如何在Mac轻松使用命令行进行操作SVN,同时提升开发人员的格调。...subversion 2、验证是否安装成功 svn --version 出现以下内容表示安装成功 3.拉取仓库文件 通过svn checkout命令检出资源, svn checkout 可以使用缩写...com.git (fetch) 格式: svn checkout http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码 3.添加文件 使用...svn add命令添加前要求文件已存在,添加新文件只是告诉SVN,并没有真实提交,需要使用commit提交。

2.7K10

何在Mac正确使用分屏功能

下面小编就为大家介绍一下如何在Mac使用Split View功能 。无论您是想更有效地完成某些工作还是浏览网页时更轻松地执行多任务,在Split View中构建的macOS都是一项非常有用的功能。...在Mac如何使用分屏: 1.单击并按住窗口左上角的全屏按钮。 2.当您看到屏幕的一半变成蓝色时,将窗口拖到左侧或右侧,然后松开应用程序 3.选择您要填写屏幕另一半的第二个窗口,单击它。...4.要退出分屏模式,请按esc键(或触摸栏的按钮)或将鼠标移动到屏幕顶部并单击全屏按钮 。...5.您会注意到,在Split View中使用的第二个应用程序仍将处于全屏模式,也按照相同的步骤将该窗口返回到之前的大小。...小编觉得在Mac使用Split View分屏功能真得很方便,你们觉得呢?

5.1K30

何在 Mac 愉快的使用 Docker

一、目标任务首先要明确的是, 作为了一个每天在 Linux Server rm -rf 的人来说, 如果想在 Mac 使用 Docker, 最舒服的也是兼容所有 docker cli 命令行操作即可...; 至于图形化的界面完全不需要, 我们并不指望图形化界面能比敲命令快到哪里去, 也不指望图形化界面变为主力; 所以本篇文章的核心目标:在 Mac 使用完整的 docker cli 命令, 包括对基本的...Lima 方案直接看第五节.三、虚拟机方案目前在 M1 , 唯一可用或者说堪用的虚拟机当属 Parallels Desktop, 至于其他的 VBox、VMware 目前还不成熟; 如果纯 qemu...其本质利用 docker context 功能, 然后通过将虚拟机中的 sock 文件挂载到宿主机, 并配置 docker context 来实现无缝使用 docker 命令.5.5、虚拟机调整某些情况下...(对应会使用上面目标架构的镜像)arch: "aarch64"Copy六、总结目前整体来看, Docker Desktop 在 mac 基本是很难用的, Colima 现在还不太成熟, 适合轻度使用

3.4K30

何在移动设备使用堡垒机

近年来随着平板设备的普及,很多时候技术人员有从移动设备登录堡垒机的需求,本文就是以中远麒麟堡垒机为例,说明如何通过安卓或IOS设备访问堡垒机进行运维操作。...堡垒机一般应用的协议是SSH和RDP,因此在使用堡垒机之前,我们需要在安卓或IOS设备安装SSH/RDP工具,当然也可以使用堡垒机的H5模式,但是经过测试,H5模式远远不如应用程序模式方便易用。...经过测试,目前最好用的二款工具为:SSH(juicessh)、RDP为MS官方的(MicrosoftRemoteDesktop),这二款产品没有广告,并且使用上较方便,安装后,即可使用堡垒机进行运维。...一.堡垒机上的设置 堡垒机上的设置和过去一样,中远麒麟堡垒机上面和其它堡垒机上差不多,建立堡垒机WEB登录账号、添加设备资产、添加权限信息即可 1.1使用admin登录中远麒麟堡垒机页面 1登录.jpg...administrator) 3添加设备.jpg 42添加设备账号.jpg 1.4设置堡垒机账号登录权限 直接在上个创建资产账号页面拉到最下面,勾上第二步建立的堡垒机账号即可 5授权.jpg 二.ssh使用说明

2K20
领券