2016-05-11 7 views
0

Ich versuche, eine App zu schreiben, die aus dem Mikrofon liest und wo ich in der gleichen App die Ergebnisse/Puffer selbst in meine eigene Datei (in einem separaten Thread) schreiben. Glaub mir, ich habe gegoogelt, bis meine Finger taub waren. Aber ich habe ein Problem mit dem ganzen "Rückruf" -Teil.Suchen Sie ein Beispiel mit AudioRecord

Ob onPeriodicNotification oder onMarkerReached, ich kann es einfach nicht richtig machen. Ich suche niemanden, der es für mich schreibt, aber wenn ich nur die richtige Shell online finden könnte, könnte ich es selbst machen.

Also wenn jemand ein gutes Beispiel kennt, bitte.

Antwort

-1

einen einfachen Sound Manager, in denen Sie Ton aufnehmen kann:

public class SoundManager { 

private static final String TAG = SoundManager.class.getSimpleName(); 
public boolean isRecording = false; 
private MediaRecorder recorder; 
private String audioFileName = "sound"; 

private Context mContext; 
private String storePath; 

public SoundManager(Context context) { 
    this.mContext = context; 
} 

public void onRecord(boolean toStart) { 
    if (toStart) { 
     try { 
      startRecording(); 
      isRecording = true; 
     } catch (IOException e) { 
      Log.d("Tag", e.toString()); 
     } 
    } else { 
     stopRecording(); 
    } 
} 

private void startRecording() throws IOException { 
    stopRecording(); 
    audioFileName = UUID.randomUUID().toString(); 
    storePath = new File(mContext.getExternalFilesDir(null), "/images/"+ audioFileName+".3gp").getAbsolutePath(); 
    recorder = new MediaRecorder(); 
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
    recorder.setOutputFile(storePath); 

    recorder.prepare(); 
    recorder.start(); 
} 

private void stopRecording() { 
    if (isRecording && recorder != null) { 
     try { 
      recorder.stop(); 
      recorder.release(); 
     } catch (RuntimeException e) { 
      recorder.release(); 
      Log.d(TAG, e.toString()); 
     } 

     recorder = null; 
     isRecording = false; 
    } 
} 

public File getAudioOutputPath() { 
    return new File(storePath); 
} 

}

Verwendung:

  1. Start Record: soundManager.onRecord(true);
  2. Stop Record: soundManager.onRecord(false);
  3. erhalten Schallweg Datei: soundManager.getAudioOutputPath();

Audio hinzufügen Erlaubnis in Ihrem Manifest:

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

`

+0

ich es zu schätzen wissen, aber was will ich in der Lage sein, zu tun, greift aus dem Puffer der Audio und schreibe es selbst in eine Datei, daher versuche ich AudioRecord zu lernen, das die Callback-Routinen dafür hat. Ich kann sie einfach nicht herausfinden, war also auf der Suche nach einem Beispiel für den Code online, von dem ich dann lernen würde und von dort zu bauen. –

+0

Entschuldigung, das zu hören. Können Sie mir sagen, warum Sie den Puffer während der Aufnahme benötigen? Wenn Sie etwas sehen müssen, dann habe ich eine Möglichkeit, das zu tun. – Sayem

+0

Ich suche nur, um selbst schreiben zu können. Ob es in Echtzeit bricht oder in Echtzeit analysiert. Alles, was ich google, zeigte auf die AudioRecord-Klasse. Gerade zu Beginn des Lernens suchte es nach einem Online-Beispiel. –

Verwandte Themen