Androidde konuş yazdır uygulaması yapmak gayet kolaydır. Android kütüphaneleri içerisinde, konuşulanı algılamak için api bulunmaktadır. Bize de bu apiyi çalıştırıp dönen sonucu almak düşer. Tabi bunun için de internet bağlantısı gerekiyor. İnternet bağlantısı olmadan uygulamanız bağlantı sorunu hatası verebilir.

Konuşulanı yazdırma apisini kullanmak için android.speech.RecognizerIntent sınıfı import edilir.

Bir butona tıklayarak bu intent tetiklenebilir ve dönen sonuç startActivityForResult metodunda alınabilir.

Şimdi uygulamamıza geçelim. Konusyazdir adlı uygulamamızı oluşturuyoruz.

Bu görselin özgün dosyasına şu anda erişilemiyor.

Bunu çalıştırabilmek için Android 2.1 ve üstü gerekmektedir. 2.2 yi kullanıyorum.

Bu görselin özgün dosyasına şu anda erişilemiyor.

Proje özellikleri...

Bu görselin özgün dosyasına şu anda erişilemiyor.

Düğme içinde bir resim kullanmak istiyorum. Bunun için internetten microfon resmi indirdim. Res klasöründe resimler için bulunan klasörlere kaydımızı yapıyoruz.

Bu görselin özgün dosyasına şu anda erişilemiyor.

Microfon resmini kullanabileceğim button: imageButton dur. İmagebutton ekliyorum, resmi soruyor ve resmi seçiyorum.

Bu görselin özgün dosyasına şu anda erişilemiyor.

Yazıyı göstermesi için de bir textView ekliyoruz.

Bu görselin özgün dosyasına şu anda erişilemiyor.
Bu görselin özgün dosyasına şu anda erişilemiyor.

Butonun adını btnKonus, textviewin adını da txtYazi yapalım.

Activity sınıfının ActivityForResult metodunu da ezeceğiz. bunun için source override-implement methodsu kullanıyoruz ve metodu ekliyoruz.

Bu görselin özgün dosyasına şu anda erişilemiyor.
Bu görselin özgün dosyasına şu anda erişilemiyor.

Kodlar ve açıklamaları;

package com.ceylan.konusyazdir;

import java.util.ArrayList;

import android.app.Activity;

import android.content.ActivityNotFoundException;

import android.content.Intent;

import android.os.Bundle;

import android.speech.RecognizerIntent;

import android.view.View;

import android.widget.ImageButton;

import android.widget.TextView;

import android.widget.Toast;

public class KonusyazdirActivity extends Activity {

    protected static final int RESULT_SPEECH = 1;

    /** Called when the activity is first created. */

    private ImageButton btnKonus;

    private TextView txtYazi;

    //Butonumuzu ve yazı alanımızın referanslarını oluşturuyoruz.

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        btnKonus=(ImageButton)findViewById(R.id.btnKonus);

        txtYazi=(TextView)findViewById(R.id.txtYazi);

        //butonumuzu ve yazı alanımızı tanımladık. şimdi butona tıklayınca gerçekleşecek kodlar...

        btnKonus.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                // TODO Auto-generated method stub

                Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "tr");

                //yapılacak işlemler için gerekli intent tanımlaması ve kodu

                try {

                    startActivityForResult(intent, RESULT_SPEECH);

                    //startActivityForResult metodu ile dönen değeri aldıracağız.

                    txtYazi.setText("");

                } catch (ActivityNotFoundException a) {

                    Toast t = Toast.makeText(getApplicationContext(),

                    "Aygıtınızı bu uygulamayı desteklemiyor",

                    Toast.LENGTH_SHORT);

                    t.show();

                }

            }

        });

    }

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        // TODO Auto-generated method stub

        super.onActivityResult(requestCode, resultCode, data);

        //Burdan sonraki bölümler konuşulanı yazıya aktarmak için...

        switch (requestCode) {

            case RESULT_SPEECH: {

                if (resultCode == RESULT_OK && null != data) {

                    ArrayListtext = data

                    .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

                    txtYazi.setText(text.get(0));

                }

                break;

            }

        }

    }

}
Bu görselin özgün dosyasına şu anda erişilemiyor.

Emulatörde bu uygulamayı desteklemiyor diyebilir. Apk dosyanızı telefonunuza gönderip kurduğunuzda çalıştığını göreceksiniz.

Bu görselin özgün dosyasına şu anda erişilemiyor.

:) Gördüğünüz gibi algıladı ve yazdı. Birazcık yanlış yazdı tekrarlamak istemedim espiri kattı içine. Bazen tabi alakasız şeyler yazdığı da oluyor...

İyi çalışmalar.

Kaynaklar