`

【翻译】(86)音频捕捉

 
阅读更多

【翻译】(86)音频捕捉

 

see

http://developer.android.com/guide/topics/media/audio-capture.html

 

原文见

http://developer.android.com/guide/topics/media/audio-capture.html

 

-------------------------------

 

Audio Capture

 

音频捕捉

 

-------------------------------

 

In this document

 

本文目录

 

* Performing Audio Capture 执行音频捕捉

* Code Example 代码示例

 

Key classes

 

关键类

 

MediaRecorder

 

See also

 

另见

 

Android Supported Media Formats Android支持的媒体格式

Data Storage 数据存储

MediaPlayer

 

-------------------------------

 

The Android multimedia framework includes support for capturing and encoding a variety of common audio formats, so that you can easily integrate audio into your applications. You can record audio using the MediaRecorder APIs if supported by the device hardware.

 

Android多媒体框架包含对捕捉和编码各种通用音频格式的支持,使你可以轻易地集成音频进你的应用程序中。你可以使用MediaRecorder的API记录音频,如果它被设备硬件支持。

 

This document shows you how to write an application that captures audio from a device microphone, save the audio and play it back.

 

本文向你展示如何编写一个应用程序,它从一个设备麦克风中捕捉音频,保存音频,以及回放它。

 

-------------------------------

 

Note: The Android Emulator does not have the ability to capture audio, but actual devices are likely to provide these capabilities.

 

注意:Android模拟器没有能力捕捉音频,但实际设备多半提供这些功能。

 

-------------------------------

 

-------------------------------

 

Performing Audio Capture

 

执行音频捕捉

 

Audio capture from the device is a bit more complicated than audio and video playback, but still fairly simple:

 

设备的音频捕捉比音频和视频回放稍微复杂些,但仍然非常简单:

 

1. Create a new instance of android.media.MediaRecorder.

 

1. 创建一个android.media.MediaRecorder的新实例。

 

2. Set the audio source using MediaRecorder.setAudioSource(). You will probably want to use MediaRecorder.AudioSource.MIC.

 

2. 使用MediaRecorder.setAudioSource()设置音频源。你将很可能希望使用MediaRecorder.AudioSource.MIC。

 

3. Set output file format using MediaRecorder.setOutputFormat().

 

3. 使用MediaRecorder.setOutputFormat()设置输出文件格式。

 

4. Set output file name using MediaRecorder.setOutputFile().

 

4. 使用MediaRecorder.setOutputFile()设置输出文件名。

 

5. Set the audio encoder using MediaRecorder.setAudioEncoder().

 

5. 使用MediaRecorder.setAudioEncoder()设置音频编码器。

 

6. Call MediaRecorder.prepare() on the MediaRecorder instance.

 

6. 在MediaRecorder实例上调用MediaRecorder.prepare()。

 

7. To start audio capture, call MediaRecorder.start().

 

7. 为了开始音频捕捉,请调用MediaRecorder.start()。

 

8. To stop audio capture, call MediaRecorder.stop().

 

8. 为了停止音频捕捉,请调用MediaRecorder.stop()。

 

9. When you are done with the MediaRecorder instance, call MediaRecorder.release() on it. Calling MediaRecorder.release() is always recommended to free the resource immediately.

 

9. 当你使用完MediaRecorder实例时,请对它调用MediaRecorder.release()。调用MediaRecorder.release()总是建议的,以立即释放资源。

 

Example: Record audio and play the recorded audio

 

示例:记录音频和播放被记录的音频

 

The example class below illustrates how to set up, start and stop audio capture, and to play the recorded audio file.

 

下面的示例类描述如何配置、启动和停止音频捕捉,以及如何播放被记录的音频文件。

 

-------------------------------

 

/*

 * The application needs to have the permission to write to external storage

 * if the output file is written to the external storage, and also the

 * permission to record audio. These permissions must be set in the

 * application's AndroidManifest.xml file, with something like:

 *

 * 该应用程序需要拥有权限来写入外部存储如果输出文件被写入到外部存储,

 * 还需要记录音频的权限。这些权限必须被设置在应用程序的AndroidManifest.xml

 * 文件中,就像这样:

 * 

 * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 * <uses-permission android:name="android.permission.RECORD_AUDIO" />

 *

 */

package com.android.audiorecordtest;

 

import android.app.Activity;

import android.widget.LinearLayout;

import android.os.Bundle;

import android.os.Environment;

import android.view.ViewGroup;

import android.widget.Button;

import android.view.View;

import android.view.View.OnClickListener;

import android.content.Context;

import android.util.Log;

import android.media.MediaRecorder;

import android.media.MediaPlayer;

 

import java.io.IOException;

 

 

public class AudioRecordTest extends Activity

{

    private static final String LOG_TAG = "AudioRecordTest";

    private static String mFileName = null;

 

    private RecordButton mRecordButton = null;

    private MediaRecorder mRecorder = null;

 

    private PlayButton   mPlayButton = null;

    private MediaPlayer   mPlayer = null;

 

    private void onRecord(boolean start) {

        if (start) {

            startRecording();

        } else {

            stopRecording();

        }

    }

 

    private void onPlay(boolean start) {

        if (start) {

            startPlaying();

        } else {

            stopPlaying();

        }

    }

 

    private void startPlaying() {

        mPlayer = new MediaPlayer();

        try {

            mPlayer.setDataSource(mFileName);

            mPlayer.prepare();

            mPlayer.start();

        } catch (IOException e) {

            Log.e(LOG_TAG, "prepare() failed");

        }

    }

 

    private void stopPlaying() {

        mPlayer.release();

        mPlayer = null;

    }

 

    private void startRecording() {

        mRecorder = new MediaRecorder();

        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

        mRecorder.setOutputFile(mFileName);

        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

 

        try {

            mRecorder.prepare();

        } catch (IOException e) {

            Log.e(LOG_TAG, "prepare() failed");

        }

 

        mRecorder.start();

    }

 

    private void stopRecording() {

        mRecorder.stop();

        mRecorder.release();

        mRecorder = null;

    }

 

    class RecordButton extends Button {

        boolean mStartRecording = true;

 

        OnClickListener clicker = new OnClickListener() {

            public void onClick(View v) {

                onRecord(mStartRecording);

                if (mStartRecording) {

                    setText("Stop recording");

                } else {

                    setText("Start recording");

                }

                mStartRecording = !mStartRecording;

            }

        };

 

        public RecordButton(Context ctx) {

            super(ctx);

            setText("Start recording");

            setOnClickListener(clicker);

        }

    }

 

    class PlayButton extends Button {

        boolean mStartPlaying = true;

 

        OnClickListener clicker = new OnClickListener() {

            public void onClick(View v) {

                onPlay(mStartPlaying);

                if (mStartPlaying) {

                    setText("Stop playing");

                } else {

                    setText("Start playing");

                }

                mStartPlaying = !mStartPlaying;

            }

        };

 

        public PlayButton(Context ctx) {

            super(ctx);

            setText("Start playing");

            setOnClickListener(clicker);

        }

    }

 

    public AudioRecordTest() {

        mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();

        mFileName += "/audiorecordtest.3gp";

    }

 

    @Override

    public void onCreate(Bundle icicle) {

        super.onCreate(icicle);

 

        LinearLayout ll = new LinearLayout(this);

        mRecordButton = new RecordButton(this);

        ll.addView(mRecordButton,

            new LinearLayout.LayoutParams(

                ViewGroup.LayoutParams.WRAP_CONTENT,

                ViewGroup.LayoutParams.WRAP_CONTENT,

                0));

        mPlayButton = new PlayButton(this);

        ll.addView(mPlayButton,

            new LinearLayout.LayoutParams(

                ViewGroup.LayoutParams.WRAP_CONTENT,

                ViewGroup.LayoutParams.WRAP_CONTENT,

                0));

        setContentView(ll);

    }

 

    @Override

    public void onPause() {

        super.onPause();

        if (mRecorder != null) {

            mRecorder.release();

            mRecorder = null;

        }

 

        if (mPlayer != null) {

            mPlayer.release();

            mPlayer = null;

        }

    }

}

 

-------------------------------

 

Except as noted, this content is licensed under Apache 2.0. For details and restrictions, see the Content License.

 

除特别说明外,本文在Apache 2.0下许可。细节和限制请参考内容许可证。

 

Android 4.0 r1 - 16 Apr 2012 17:06

 

-------------------------------

 

Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.

 

此页部分内容,是基于Android开源项目所创建和共享的工作,并且根据知识共享2.5署名许可证描述的条款来使用的修改版。

 

(本人翻译质量欠佳,请以官方最新内容为准,或者参考其它翻译版本:

* ソフトウェア技術ドキュメントを勝手に翻訳

http://www.techdoctranslator.com/android

* Ley's Blog

http://leybreeze.com/blog/

* 农民伯伯

http://www.cnblogs.com/over140/

* Android中文翻译组

http://androidbox.sinaapp.com/


分享到:
评论

相关推荐

    音频术语:音频爱好者、发烧友必备

    - **应用场景**: 影视作品翻译后的配音制作。 #### ADV (Advance) - **定义**: 在音频播放器中指前进或快进功能。 - **应用场景**: 用户可以快速跳过不感兴趣的片段。 #### ADV (Adversum) - **定义**: 抗对或对抗...

    PhoneGap,API帮助文档翻译整理3-Capture(捕捉)

    - **CaptureAudioOptions**:用于配置音频捕捉选项。 - **CaptureImageOptions**:用于配置图片捕捉选项。 - **CaptureVideoOptions**:用于配置视频捕捉选项。 - **CaptureCB**:成功捕捉媒体文件后的回调函数类型...

    2020年9月英语六级真题&解析&听力音频文件-第一套

    注意训练在有限时间内捕捉关键信息的能力,尤其是对于语境的理解和词汇的反应速度。 3. **写作**: 写作部分要求考生根据所给题目或情景写出一篇400词左右的文章。分析真题的写作部分,可以了解当年的出题倾向,如...

    行业分类-设备装置-构造为用于免提音频记录的智能笔.zip

    本资料包主要聚焦于一种特殊的智能笔——构造为用于免提音频记录的智能笔,它结合了传统的书写功能与先进的音频捕捉技术,为用户提供了全新的记录体验。 免提音频记录功能是这款智能笔的核心亮点。在传统的会议、...

    电信设备-实现远程同声翻译的通信系统和方法.zip

    1. 音频采集:高质量的麦克风设备用于捕捉发言人的语音,确保声音清晰无失真。同时,降噪技术的应用可以消除环境噪声,提升翻译质量。 2. 信号传输:采用高速宽带网络进行数据传输,如5G、光纤等,以保证音频信号在...

    7-5+语音翻译的企业应用和研究.pdf

    这得益于编码器-解码器框架的发展,尤其是Transformer模型在语音翻译中的应用,它能更好地捕捉语音的上下文信息并直接生成翻译。端到端模型的优势在于减少了延迟,简化了服务部署,但计算复杂度较高,且需要大量的带...

    FMS3中文翻译

    用户通过装有摄像头和Flash Player的设备可以捕捉并发布实况视频或音频,而服务器则能同时处理大量连接,连接数量取决于服务器性能。每个连接如同大管道,传输大量数据流。客户端和服务器端的应用程序分别由...

    Flash Media Server 3 中文翻译

    - 摄像头/麦克风:客户端可以利用内置摄像头和麦克风捕捉实况视频和音频,并通过服务器广播给其他用户。 FMS3支持并发处理大量连接,最大连接数取决于服务器硬件性能。应用程序实例的概念允许在同一应用程序下创建...

    同声传译系统设计方案.pdf

    本设计方案主要涉及到音频处理、语音识别、机器翻译、网络传输等多个技术领域。 一、音频处理技术: 在同声传译系统中,音频处理技术扮演着非常重要的角色。该技术用于将speaker的语音信号捕捉、处理、传输和播放。...

    2016-2021.6英语六级真题、详解及听力音频.zip

    3. 讲座/报告:关注开场白和结尾,捕捉主要论点,记笔记辅助理解。 四、详解的重要性 详解部分为考生提供了每一道题目的正确答案和解析,帮助考生理解出题者的意图,找出自己的错误原因,从而改正学习方法。同时,...

    电信设备-基于移动终端双耳无线耳机的语音实时翻译方法及系统.zip

    无线音频传输技术确保了翻译结果能够及时、清晰地传达给用户。高保真音频编码如AAC或aptX能保证音质,而低延迟传输技术如 Qualcomm 的 aptX Low Latency 则减少了从识别到播放的时间差,使得翻译尽可能接近实时。 ...

    行业文档-设计装置-英语翻译教学装置.zip

    2. 多样化资源:包括各种文本、音频和视频材料,以丰富学生的翻译实践。 3. 反馈系统:自动评估翻译质量并提供反馈,帮助学生及时调整和改正错误。 4. 词汇和语法支持:提供词汇库和语法规则,辅助学生理解和运用。 ...

    电信设备-实时的语音翻译通信方法、系统及所适用的通讯设备.zip

    通过麦克风捕捉到的音频信号,经过预处理、特征提取、模型匹配等步骤,将声音转化为可理解的文字。目前,深度学习技术如卷积神经网络(CNN)和长短期记忆网络(LSTM)被广泛应用在语音识别中,显著提升了识别准确率...

    Kinect官方文档中文翻译.rar

    **Kinect官方文档中文翻译** 本文档集合了微软Kinect SDK for Windows的中文翻译,旨在为开发者提供关于Kinect技术的全面理解与实践指导。Kinect是一款革命性的体感设备,它通过捕捉人体运动和环境信息,使得用户...

    电信设备-具有自动翻译功能的移动终端.zip

    5. **图像识别与OCR(Optical Character Recognition)**:对于纸质文档或屏幕上的文字,移动终端可以使用摄像头捕捉图像并识别文字,然后进行翻译。OCR技术的进步使得这一过程更为精准和高效。 6. **实时通信集成*...

    电子词典 代码进一步完善 增加“翻译句子”的功能.zip

    5. **神经网络机器翻译**:NMT利用深度学习模型,如长短时记忆网络(LSTM)或Transformer结构,来捕捉句子的全局依赖性,提供更流畅的翻译。近年来,NMT的性能超越了SMT,成为主流的机器翻译方法。 6. **自然语言...

    行业文档-设计装置-一种用于英语翻译学习的录音笔.zip

    《一种用于英语翻译学习的录音笔》正是针对这一需求而研发,它不仅具备了高品质的音频录制和播放能力,还融入了智能翻译技术,为英语学习者提供了一个全新的学习平台。 录音笔的基本功能在于高效、清晰地录制音频。...

    2018-2019四级试卷真题(含详细解析、听力音频)

    真题中的文章不仅提供了丰富的词汇和句型实例,还让考生有机会实践如何在有限的时间内捕捉文章主旨和细节。 “写作”是测试考生逻辑思维和语言组织能力的部分。考生需要根据所给题目或情景写出一篇结构清晰、表达...

    基于中文文本情绪分析自动切换参考音频的 GPT-SoVITS 推理

    基于中文文本情绪分析自动切换参考音频的 GPT-SoVITS 推理 GPT, 通常指的是“Generative Pre-trained Transformer”(生成式预训练转换器),是一个在自然语言处理(NLP)领域非常流行的深度学习模型架构。GPT模型...

    word文档6级音频讲解大纲

    考生需要掌握如何从题目的预测选项中快速识别重点,运用题文对应方法准确捕捉关键信息,同时重视对话开头,这通常是解题的关键所在。 针对短文听力,大纲强调了开头、转折、因果和例句等关键原则,帮助考生快速把握...

Global site tag (gtag.js) - Google Analytics