13 Nisan 2012 Cuma

Android İçin Ses Kaydetme Kodu

 
Kodu AudioRecorder.java isimli bir dosyaya koyup kullanmaya başlayabilirsiniz. Kodu aldığım orjinal yerin linki de içinde duruyor yalnız orjinali hata veriyordu. Hatayı düzeltip kamuoyuna saygıyla sunuyorum. (Bunu kullandığım bir uygulama hazırlıyorum şu sıralar, yakında markette olur inşaAllah. )




import java.io.File;
import java.io.IOException;

import android.media.MediaRecorder;
import android.os.Environment;

/**
 * @author <a href="http://www.benmccann.com">Ben McCann</a>
 */
public class AudioRecorder {

  MediaRecorder recorder;
  final String path;

  /**
   * Creates a new audio recording at the given path (relative to root of SD card).
   */
  public AudioRecorder(String path) {
    this.path = sanitizePath(path);
    
    System.out.println("PATHimiz: "+ this.path);
  }

  private String sanitizePath(String path) {
    if (!path.startsWith("/")) {
      path = "/" + path;
    }
    if (!path.contains(".")) {
      path += ".3gp";
    }
    return Environment.getExternalStorageDirectory().getAbsolutePath() + path;
  }

  /**
   * Starts a new recording.
   */
  public void start()  {
      
      try {
      
      recorder = new MediaRecorder();
      
      
    String state = android.os.Environment.getExternalStorageState();
    if(!state.equals(android.os.Environment.MEDIA_MOUNTED))  {
        throw new IOException("SD Card is not mounted.  It is " + state + ".");
    }

    // make sure the directory we plan to store the recording in exists
    File directory = new File(path).getParentFile();
    if (!directory.exists() && !directory.mkdirs()) {
      throw new IOException("Path to file could not be created.");
    }

    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setOutputFile(path);
    recorder.prepare();
    recorder.start();
    
      } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (Exception ex)
        {
            System.out.println("Beklenmedik hata "+ ex);
            ex.printStackTrace();
        }
    
    
    
    
  }

  /**
   * Stops a recording that has been previously started.
   */
  public void stop()   {
      
      try {
      
    recorder.stop();
    recorder.reset();
    recorder.release();
    
        } catch (Exception ex ) {
            System.out.println("HATAMIZ: " + ex );
            ex.printStackTrace();
             
        }
    
  }
}


Örnek bir kullanım:

String KAYIT_KLASORU = "/kayitlar/";

 AudioRecorder kayitci = new AudioRecorder(KAYIT_KLASORU +"dosyaismi");

kayitci.start();  // kayıdı başlatmak istediğiniz yerde çağırınız.


 kayitci.stop(); // kayıdı bitirmek istediğiniz yerde çağırınız. Bundan sonra eğer bir hata oluşmamışsa (cihazda harici kart yoksa mesela hata oluşur)  harici kartta "kayıtlar" klasörü içinde "dosyaismi.3gp" isimli bir ses dosyası oluşur. Her kayıtta bu dosyanın üzerine yazılmaması için dosya ismini dinamik olarak değiştirmeniz gerekiyor tabii ki.

Hiç yorum yok:

Yorum Gönder