Eclipse Android konuş yazdır uygulaması yapma dersi

Arif Ceylan/ Aralık 14, 2012/ Android Programlama/ 11 comments

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.

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

Proje özellikleri…

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.

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

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

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.

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;

}

}

}

}

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

🙂 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.

Share this Post

11 Comments

  1. txtYazi.setText(“”);
    text i boş olarak setliyken orada o yazı nasıl geliyor. Ben anlamadım. Bende boş görünüyor o kısım. Bunun geri dönen değerini nasıl alıyoruz

  2. pardon şu kısmı görmemişim txtYazi.setText(text.get(0));
    yalnız genede bir sorum olacak text.get(0) daki text neyin değişkeni acaba yukarda tanımlı olarak görmedim. Bende de hata gösterior.

  3. Lütfen burayı biraz daha detaylı anlatın bulamadım yazılanları…

    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.

    1. Önceki derslere bakarsanız daha anlaşılır olacaktır. Her seferinde aynı şeyleri yazmak istemedim. Butona sağ tıklayıp Edit id veya edit name olması lazım ona tıkladığınızda adını değiştirebilirsiniz. aynı şekilde textviewin de…
      ikincisi de source menüsünde override-implement var. oraya girip dediğim metodu ekleyeceksiniz.

  4. Merhabalar, yazılarınız ve uygulamalarınız için çok teşekkür ederim. Ben androidde piyano yapmaya çalışıyorum. Image Button oluşturup içine ses dosyalarını aktardım fakat butonlara basınca çıkan seslerin kayıt yapılması ve daha sonra bu kaydın çalınması gerekiyor bu konu hakkında yardım edebilir misiniz , iyi çalışmalar

  5. Arif Bey öncelikle bilgilendirmelerinizden dolayı size teşekkür ederim. Uygulamanın 104. satırındaki ArrayListtext = data kısmındaki ArrayListtext te hata alıyorum ayrıca hemen altındaki text.get teki text kısmındada hata alıyorum bu hataları nasıl aşabileceğim konusunda yardımcı olabilirseniz sevinirim. iyi çalışmalar

    1. Aynı hatayı bende almaktayım :\

  6. Güzel bir uygulama olmuş,Çok Teşekkürler=) Emeğinize sağlık=)

  7. Hocam teşekkürler çok güzel uygulama olmuş. Bir şey soracağım. Ses kaydetme açılırken ortada google yazıyor acaba google yazısını kaldırmak için ne yapmalıyım ?

  8. ACABA YAZIYIDA SESE ÇEVİREN Bİ UYGULAMNIZ VARMI

  9. İnanın bana 2 aydır bir konuş yazdır dersi yapamadım

    Hala da yapamadım kodları birebir kopyalasam da incelesemde denilen herşeyi yapsamda hata hata hata !

    101. satır hata veriyor

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*