android Mikrofon in ByteArray aufnehmen, ohne Audiodatei zu speichern

Entschuldigung für mein schlechtes Englisch :(

Ich starte mein Projekt für die Android-Anwendung, diese App Mikrofon aufnehmen, wenn ich auf die Schaltfläche zum Starten der Aufnahme klicke, bekomme die App Mikrofon und schreibe es auf eine Datei und wenn ich auf Stop klicke, wird eine Datei auf SD-Karte gespeichert.

Projektnummer :

Die Ausgabedatei

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

Starte die Aufnahme

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();
}

Höre auf, aufzunehmen

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

PlaySound-Aufnahmedatei

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

}

Ich möchte die aufgenommene Stimme in ein variables ByteArray kopieren und abspielen, ohne die Audiodatei auf der SD-Karte zu speichern

Ich habe ein Projekt wie das, was ich will, aber es ist in Actionscript 3 geschrieben

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
    }
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage