Android – Recorder

Merhaba arkadaşlar Android kategorisinde ilk yazım ses kayıtçısı (recorder) yapımı ile ilgili olacak. Arayüz’den başlayalım önce;

1.png

Arayüzümüz bu şekilde olacak kullandığım logoları Google’dan aratarak kendinize göre sizde düzenleyebilirsiniz. Öncelikle manifest dosyasına bir kaç izin eklememiz gerekiyor.

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

Bunların ilki telefonda ki mikrofonu kullanarak kayıt etmemize yarayacak.İkincisi ise harici hafızaya kayıt edebilmemizi sağlayacak. Tasarım için xml kodları aşağıdadır ;

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.arslan.recorder.MainActivity">

    <Button
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:id="@+id/kayit"
        android:icon="@drawable/stop"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/play"
        android:onClick="record"
        android:text="@string/record"
        android:textColor="#0" />

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:onClick="dinle"
        android:id="@+id/listen"
        android:background="@drawable/listen"
        android:layout_below="@+id/kayit"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="40dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Dinle"
        android:id="@+id/textView"
        android:layout_below="@+id/listen"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

Asıl main activity kodlarına gelmeden önce son bir şey daha yapmamız gerekiyor.Butonun ne zaman kayıt ne zaman durdurma işlemine geçtiğini anlayabilmek için bir tane xml dosyası açacağız.Bunu mainActivity dosyasının olduğu dizine açabilrsiniz “New-XML-Layout XML File”

<?xml version="1.0" encoding="utf-8"?> 
<resources>     
<string name="app_name">AudioRecord</string>     
<string name="action_settings">Settings</string>     
<string name="record">Kayıt</string>     
<string name="stop">Durdur</string> 
</resources>

Şimdi kodlara gelirsek; İlk önce en baştaki tanımlamalarımızı yapıyoruz.

private Button btn_kayit;
    private MediaRecorder recorder;
    private MediaPlayer mediaPlayer;
    private final String filePath = Environment.getExternalStorageDirectory().getPath() + "/kayit.3gp";

Daha sonra;

        public void record(View view){
        String kayitString = getResources().getString(R.string.record);//oluşturduğumuz string.xml dosyasından kayit için gerekli stringi çektik
        String stopString = getResources().getString(R.string.stop);//aynı şekilde durdurmak için olanı çektik
        if (kayitString.equals(btn_kayit.getText().toString())){//eğer butona basıldığında text'i kayit ise kayit edecek
            startRecording();
            btn_kayit.setText(stopString);
            btn_kayit.setBackgroundResource(R.drawable.stop);//butonun iconu durdur iconu olacak
        }
        else{//değilse durduracak
            stopRecording();
            btn_kayit.setText(kayitString);
            btn_kayit.setBackgroundResource(R.drawable.play);//butonun iconu kaydet ikonu olacak
        }
    }

Aşağıdaki diğer kulaklık şeklinde icona sahip olan butonumuz ise aşağıdaki kodlara sahip olacak.

public void dinle(View view){
        mediaPlayer = new MediaPlayer();//media playeri aldık
        mediaPlayer.setVolume(1.0f, 1.0f);
        try {
            mediaPlayer.setDataSource(filePath);//dosya yolunu belirtmiştik yukarda
            mediaPlayer.prepare();//hazırlıyoruz
            mediaPlayer.start();//başlatıyoruz
            mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

                @Override
                public void onCompletion(MediaPlayer arg0) {
                    mediaPlayer.stop();
                    mediaPlayer.release();
                    mediaPlayer = null;
                }
            });
        }
        catch (Exception e) {
        }
    }

Şimdi arada geçen metodları yazalım;

private void startRecording(){
        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        recorder.setOutputFile(filePath);
        try{
            recorder.prepare();
            recorder.start();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

Durdurmak için olanıda yazalım;

private void stopRecording(){
        if (recorder != null) {
            recorder.stop();
            recorder.reset();
            recorder.release();//recorder'i serbest bırakıyoruz
            recorder = null;
        }
    }

Bu yazımda gelecegiyazanlar.turkcell.com.tr’den yararlandım umarım bir yararı olmuştur. Kodları buradan indirebilirsiniz.
Hepinize başarılar.

Yorum bırakın