Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android录制麦克风到ByteArray而不保存音频文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
对不起,我的英语不好 :(

我开始我的项目为Android应用程序,这个应用程序记录麦克风,如果我点击开始记录按钮应用程序获取麦克风并将其写在文件上,当我点击停止,文件保存到SD卡.

项目代码

输出文件

OUTPUT_FILE = Environment.getExternalStorageState() + "/myaudio.3gp";

开始录制

public void startRecord() throws IOException{
    if (recorder != null)
    {
        recorder.release();
    }
    File outFile = new File(OUTPUT_FILE);
    if (outFile.exists())
    {
        outFile.delete();
    }

    recorder = new MediaRecorder();
    recorder.setAudiosource(MediaRecorder.Audiosource.MIC);
    recorder.setOutputFormat(MediaRecorder.outputFormat.THREE_GPp);
    recorder.setOutputFormat(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setOutputFile(OUTPUT_FILE);
    recorder.prepare();
    recorder.start();
}

停止录音

public void stopRec(){
    recorder.stop();
}

PlaySound录制的文件

public void playRecFile() throws IOException{
    mediaPlayer = new MediaPlayer();
    mediaPlayer.setDatasource(OUTPUT_FILE);
    mediaPlayer.prepare();
    mediaPlayer.start();

}

我想获取录制的声音,并将其放入变量ByteArray并播放,然后将音频文件保存到SD卡

我有一个像我想要的项目,但是它是用actionscript 3编写的

import flash.media.*;
import flash.events.*;
import flash.utils.byteArray;

var ch:SoundChAnnel
var mic:Microphone = Microphone.getMicrophone();

mic.addEventListener(SampleDataEvent.SAMPLE_DATA,micSampleDataHandler);
mic.addEventListener(ActivityEvent.ACTIVITY,onAct);

function onAct(evt:ActivityEvent):void
{
    trace(evt.activaTing,mic.activityLevel);
    if (!evt.activaTing)
    {
        if (soundBytes.length)
        {
            timerHandler();
        }
    }
}

var soundBytes:ByteArray = new ByteArray();
var soundO:ByteArray = new ByteArray();

function micSampleDataHandler(event:SampleDataEvent):void
{
    trace(event.data.length,event.data.bytesAvailable,soundBytes.length);
    while (event.data.bytesAvailablE)
    {
        var sample:number = event.data.readFloat();
        soundBytes.writeFloat(samplE);
    }
}

function timerHandler():void
{
    mic.removeEventListener(SampleDataEvent.SAMPLE_DATA,micSampleDataHandler);
    soundBytes.position = 0;
    soundO.writeBytes(soundBytes);
    soundO.position = 0;
    soundBytes.position = 0;
    soundBytes.length=0;

    var sound:Sound= new Sound();
    sound.addEventListener(SampleDataEvent.SAMPLE_DATA,playBACkSampleHandler);
    ch=sound.play();
    ch.addEventListener(Event.soUND_COMPLETE,onSC)
    trace("OUTPUT",soundO.bytesAvailablE);

}
function onSC(evt:Event):void
{
    trace("SOUND_COMPLETE");
}
function playBACkSampleHandler(event:SampleDataEvent):void
{
    trace("SAMPLE_DATA: ",soundO.bytesAvailablE)
    for (var i:int = 0; i < 8192; i++)
    {
        if (soundO.bytesAvailable < 4)
        {
         break;
        }
        var sample:number = soundO.readFloat();
        event.data.writeFloat(samplE);
        event.data.writeFloat(samplE);      
    }
    if (soundO.bytesAvailable < 4 && soundO.position!==0)
    {
        mic.addEventListener(SampleDataEvent.SAMPLE_DATA,micSampleDataHandler);
        soundO.position=0
        soundO.length = 0;

        trace("END
    }
}

解决方法

我想获取录制的声音,然后将音频文件保存到SD卡

使用AudioRecord类将麦克风中的音频抓取到阵列中,然后将其输入AudioTrack.

大佬总结

以上是大佬教程为你收集整理的android录制麦克风到ByteArray而不保存音频文件全部内容,希望文章能够帮你解决android录制麦克风到ByteArray而不保存音频文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。