Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用AudioRecord()录制声音_Android_Audiorecord - Fatal编程技术网

Android 使用AudioRecord()录制声音

Android 使用AudioRecord()录制声音,android,audiorecord,Android,Audiorecord,我想用AudioRecord录制一些音频。为了初始化AudioRecord对象,您必须提供几个参数,例如(速率、频道、编码),并且由于硬件设备支持不同的参数组合,因此我继续检查功能应用程序,如 环形机器人: 及康复助理: 正如类的文档中所提到的,始终有效的配置是rate=44100和channel=channel\u in_MONO 我在初始化AudioRecord对象时使用了相同的参数,但仍然收到一个运行时错误,表示我的对象未初始化。由于RingDroind在我的设备(Nexus 5)上运

我想用AudioRecord录制一些音频。为了初始化AudioRecord对象,您必须提供几个参数,例如(速率、频道、编码),并且由于硬件设备支持不同的参数组合,因此我继续检查功能应用程序,如

环形机器人:

及康复助理:

正如类的文档中所提到的,始终有效的配置是rate=44100和channel=channel\u in_MONO

我在初始化AudioRecord对象时使用了相同的参数,但仍然收到一个运行时错误,表示我的对象未初始化。由于RingDroind在我的设备(Nexus 5)上运行良好,我在创建AudioObject时使用了相同的配置

package com.example.android.visualizeaudio;

import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    int mSampleRate = 44100;

    Button startButton;
    boolean started = false;


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

        startButton = (Button) this.findViewById(R.id.start_button);

    }

    private void RecordAudio() {


        int minBufferSize = AudioRecord.getMinBufferSize(
                mSampleRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
        // make sure minBufferSize can contain at least 1 second of audio (16 bits sample).
        if (minBufferSize < mSampleRate * 2) {
            minBufferSize = mSampleRate * 2;
        }
        AudioRecord audioRecord = new AudioRecord(
                MediaRecorder.AudioSource.MIC,
                mSampleRate,
                AudioFormat.CHANNEL_IN_MONO,
                AudioFormat.ENCODING_PCM_16BIT,
                minBufferSize
        );


        audioRecord.startRecording();

        //Do some stuff here with the recorded data

        audioRecord.stop();
        audioRecord.release();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    public void startRec(View view) {
        if (started) {
            started = false;
            startButton.setText("Start");

        } else {
            started = true;
            startButton.setText("Stop");
            Toast.makeText(this, "Recording started", Toast.LENGTH_LONG);

            RecordAudio();
        }
    }
}
package com.example.android.audio;
导入android.app.Activity;
导入android.media.AudioFormat;
导入android.media.AudioRecord;
导入android.media.MediaRecorder;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.view;
导入android.widget.Button;
导入android.widget.Toast;
公共类MainActivity扩展了活动{
int-mSampleRate=44100;
按钮开始按钮;
布尔值=false;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startButton=(按钮)this.findViewById(R.id.start_按钮);
}
私有void RecordAudio(){
int minBufferSize=AudioRecord.getMinBufferSize(
M采样率、AudioFormat.CHANNEL(单声道、AudioFormat.ENCODING(PCM)(16位);
//确保minBufferSize可以包含至少1秒的音频(16位采样)。
if(minBufferSize
我在调试过程中附加对象检查,以防它提供更多细节


谢谢

切换到SDK目标版本22成功了。对于targetsdk23,我有这些错误。我不知道为什么,但我试图访问的资源似乎被操作系统使用了