android录制麦克风到ByteArray而不保存音频文件

android录制麦克风到ByteArray而不保存音频文件,第1张

概述对不起,我的英语不好 :( 我开始我的项目为Android应用程序,这个应用程序记录麦克风,如果我点击开始记录按钮应用程序获取麦克风并将其写在文件上,当我点击停止,文件保存到SD卡. 项目代码: 输出文件 OUTPUT_FILE = Environment.getExternalStorageState() + "/myaudio.3gp"; 开始录制 public void startRecor 对不起,我的英语不好 :(

我开始我的项目为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:SoundChannelvar 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而不保存音频文件所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1131072.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存