首页
学习
活动
专区
工具
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文件中。您可以根据需要修改这个示例代码,以满足您的需求。

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

相关·内容

  • Camtasia Studio2023最新版下载功能详细介绍

    Camtasia Studio2023具有强大的视频播放和视频编辑功能,录制屏幕后,根据时间轴对视频剪辑进行各种标记、媒体库、画中画、画中画、画外音当然,也可以导入现有视频并对其进行编辑操作。编辑完成后,可以将录制的视频输出为最终的视频文件。 MP4、WMV、AVI、M4V、MP3和GIF等多种支持的输出格式,是创建录制画面、视频演示的优秀工具。 MP4格式针对Flash和HTML5播放进行了优化。它能Camtasia Studio2023是一款专门录制屏幕动作的工具,它能在任何颜色模式下轻松地记录 屏幕动作,包括影像、音效、鼠标移动轨迹、解说声音等等,另外,它还具有即时播放和编 辑压缩的功能,可对视频片段进行剪接、添加转场效果。

    02

    麦克风声源定位原理_一种利用麦克风阵列进行声源定位的方法与流程

    20世纪80年代以来,麦克风阵列信号处理技术得到迅猛的发展,并在雷达、声纳及通信中得到广泛的应用。这种阵列信号处理的思想后来应用到语音信号处理中。在国际上将麦克风阵列系统用于语音信号处理的研究源于1970年。1976年,Gabfid将雷达和声纳中的自适应波束形成技术直接应用于简单的声音获取问题。1985年,美国AT&T/Bell实验室的Flanagan采用21个麦克风组成现行阵列,首次用电子控制的方式实现了声源信号的获取,该系统采用简单的波束形成方法,通过计算预先设定位置的能量,找到具有最大能量的方向。同年,Flanagan等人又将二维麦克风阵列应用于大型房间内的声音拾取,以抑制混响和噪声对声源信号的影响。由于当时技术的制约,使得该算法还不能够借助于数字信号处理技术以数字的方式实现,而主要采用了模拟器件实现,1991年,Kellermann借助于数字信号处理技术,用全数字的方式实现了这一算法,进一步改善了算法的性能,降低了硬件成本,提高了系统的灵活性。随后,麦克风阵列系统已经应用于许多场合,包括视频会议、语音识别、说话人识别、汽车环境语音获取、混响环境声音拾取、声源定位和助听装置等。目前,基于麦克风阵列的语音处理技术正成为一个新的研究热点,但相关应用技术还不成熟。

    02
    领券