Benötigen Sie ein einfaches Beispiel für die Audioaufnahme

Ich brauche eine einfache Audioaufnahme und Spielbeispiel mit AudioRecorder in Android. Ich habe mit MediaRecorder versucht, es geht gut

  • Verständnis mixer_paths.xml in android
  • Android OpenAL?
  • Umleiten von Audio / Erstellen von alternativen Soundpfaden in Android
  • Tutorials für OpenSL ES für Android
  • Android> 4.0: Ideen zum Aufnehmen / Erfassen von internem Audio (zB STREAM_MUSIC)?
  • Kann die Anwendung ABI nicht erkennen, wenn man versucht, NDK zu debuggen
  • Wenn zum Abschalten Executorservice in Android-Anwendung
  • RecyclerView java.lang.IndexOutOfBoundsException: Inkonsistenz erkannt. Ungültige Positionsposition bei Wiederaufnahme von hinzugefügtem Fragment
  • Wie mache ich einen USB-Fingerabdruck-Scanner an ein Handy / Tablet-Arbeit erfolgreich?
  • Trigger Back-Button-Funktionalität auf Knopf klicken in Android
  • Android: erhalten Sie Bildmaße, ohne es zu öffnen
  • 2 Solutions collect form web for “Benötigen Sie ein einfaches Beispiel für die Audioaufnahme”

    Du meinst AudioRecord ? Suche zB "AudioRecord.OnRecordPositionUpdateListener" mit Google Code Search. Btw, AudioRecord macht Aufnahmen, spielt nicht.

    Siehe auch:

    • Verbessert die Android Audio Aufnahmequalität?
    • Android AudioRecord Klasse – Prozess Live Mic Audio schnell, rufen Callback-Funktion

    Hier ist der Beispielcode für Audioaufnahmen.

      private Runnable recordRunnable = new Runnable() { @Override public void run() { byte[] audiodata = new byte[mBufferSizeInBytes]; int readsize = 0; Log.d(TAG, "start to record"); // start the audio recording try { mAudioRecord.startRecording(); } catch (IllegalStateException ex) { ex.printStackTrace(); } // in the loop to read data from audio and save it to file. while (mInRecording == true) { readsize = mAudioRecord.read(audiodata, 0, mBufferSizeInBytes); if (AudioRecord.ERROR_INVALID_OPERATION != readsize && mFos != null) { try { mFos.write(audiodata); } catch (IOException e) { e.printStackTrace(); } } } // stop recording try { mAudioRecord.stop(); } catch (IllegalStateException ex) { ex.printStackTrace(); } getActivity().runOnUiThread(new Runnable() { @Override public void run() { mRecordLogTextView.append("\n Audio finishes recording"); } }); // close the file try { if (mFos != null) mFos.close(); } catch (IOException e) { e.printStackTrace(); } } }; 

    Dann brauchst du zwei Tasten (oder man fungiert als unterschiedliche Funktion in der anderen Zeit), um den Plattenfaden zu starten und zu stoppen.

      mRecordStartButton = (Button) rootView .findViewById(R.id.audio_record_start); mRecordStartButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // initialize the audio source int recordChannel = getChoosedSampleChannelForRecord(); int recordFrequency = getChoosedSampleFrequencyForRecord(); int recordBits = getChoosedSampleBitsForRecord(); Log.d(TAG, "recordBits = " + recordBits); mRecordChannel = getChoosedSampleChannelForSave(); mRecordBits = getChoosedSampleBitsForSave(); mRecordFrequency = recordFrequency; // set up the audio source : get the buffer size for audio // record. int minBufferSizeInBytes = AudioRecord.getMinBufferSize( recordFrequency, recordChannel, recordBits); if(AudioRecord.ERROR_BAD_VALUE == minBufferSizeInBytes){ mRecordLogTextView.setText("Configuration Error"); return; } int bufferSizeInBytes = minBufferSizeInBytes * 4; // create AudioRecord object mAudioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, recordFrequency, recordChannel, recordBits, bufferSizeInBytes); // calculate the buffer size used in the file operation. mBufferSizeInBytes = minBufferSizeInBytes * 2; // reset the save file setup String rawFilePath = WaveFileWrapper .getRawFilePath(RAW_PCM_FILE_NAME); try { File file = new File(rawFilePath); if (file.exists()) { file.delete(); } mFos = new FileOutputStream(file); } catch (Exception e) { e.printStackTrace(); } if (mInRecording == false) { mRecordThread = new Thread(recordRunnable); mRecordThread.setName("Demo.AudioRecord"); mRecordThread.start(); mRecordLogTextView.setText(" Audio starts recording"); mInRecording = true; // enable the stop button mRecordStopButton.setEnabled(true); // disable the start button mRecordStartButton.setEnabled(false); } // show the log info String audioInfo = " Audio Information : \n" + " sample rate = " + mRecordFrequency + "\n" + " channel = " + mRecordChannel + "\n" + " sample byte = " + mRecordBits; mRecordLogTextView.setText(audioInfo); } }); mRecordStopButton = (Button) rootView .findViewById(R.id.audio_record_stop); mRecordStopButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mInRecording == false) { Log.d(TAG, "current NOT in Record"); } else { // stop recording if (mRecordThread != null) { Log.d(TAG, "mRecordThread is not null"); mInRecording = false; Log.d(TAG, "set mInRecording to false"); try { mRecordThread.join(TIMEOUT_FOR_RECORD_THREAD_JOIN); Log.d(TAG, "record thread joins here"); } catch (InterruptedException e) { e.printStackTrace(); } mRecordThread = null; // re-enable the start button mRecordStartButton.setEnabled(true); // disable the start button mRecordStopButton.setEnabled(false); } else { Log.d(TAG, "mRecordThread is null"); } } } }); 

    Dann können Sie die pcm-Daten in eine WAV-Datei speichern.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.