Android cihazlarımızda mevcut olan kolaylıklardan biri de telefona vereceğimiz sesli komutlar ile bir çok aktiviteyi gerçekleştirebilmemizdir. Sesli komutlar ile rehberdeki birini arama, müzik çaldırma, alarmı kurma, istediğiniz bir sitenin açılmasını sağlama vs. bir çok işlevi gerçekletirebilirsiniz.

Android-Voice-Recognition (1)

Ben bu uygulamamda istediğim kelimeyi söylediği taktirde ekranda basit bir Toast mesajı gösterilmesini sağlayacağım. Toast mesajı yerine daha farklı bir çok şey yapabilirsiniz.

Telefona sesli komutlar verdiğimizde sesimiz tam olarak anlaşılmayabilir bu yüzden bir tahmin listesi oluşturacağız ve bunu ListView içerisinde göstereceğiz. ListView dışında bir de konuş butonu koyalım.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical"
   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=".MainActivity" >

  <ListView
   android:id="@+id/listView1"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_weight="1" >
  </ListView>
  
 <Button
   android:id="@+id/konus"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:text="@string/konus" />

</LinearLayout>

Main Activity'ye geçiyoruz burada ListView ve Konuş butonu tanımlamalarını yapıyoruz ve butona tıklandığında yapacağı işlevi yazıyoruz. Ben sesi yazıya çevirme işlemini gerçekleştirmek için "Dinle" adında bir fonksiyon tanımlıyorum butona tıklandğında "Dinle" fonksiyonunun başlamasını istiyorum.

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 tahmin_listesi = (ListView) findViewById(R.id.listView1);
 konus = (Button) findViewById(R.id.konus);
 konus.setOnClickListener(new View.OnClickListener() {

 @Override
 public void onClick(View arg0) {
 Dinle();
 }
 });
 }

Dinle fonksiyonu için Recognizer intenti kullanacağım. RecognizerIntent.ACTION_RECOGNIZE_SPEECH sesi tanıma işlevini gerçekleştirecek. Kullanıcıdan bir şeyler söylemesini bekleyecek, söyledikten sonrada çeviri tahminlerini sonuçlar adında bir diziyi atayacağız dizi içerisindeki tahminleri de ListView'de göstereceğim. StartActivityForResult yapısı bir requestCode ister bunun için check adında bir değişken tanımladım.

 private void Dinle() {
      Intent dinle = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
      dinle.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
      RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
      dinle.putExtra(RecognizerIntent.EXTRA_PROMPT, "Dinliyorum..");
      startActivityForResult(dinle, check);
 }

Şimdide sonuçlar dizisindeki tahminleri ListView'e bağlayalım ve eğer merhaba denmişse Merhaba Dostum şeklinde bir Toast mesajı versin.

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);

 if (requestCode == check && resultCode == RESULT_OK) {
 sonuclar = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
 tahmin_listesi.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1, sonuclar));

 }

 
 for (int i = 0; i < sonuclar.size(); i++) {
 if (sonuclar.get(i).toLowerCase().equals("merhaba")) {
 
 
 Toast.makeText(getApplicationContext(), "Merhaba Dostum", Toast.LENGTH_SHORT).show();
 break;
 }
 }

 }

Projenin tamamını indirmek için tıklayın.

Ekran Görüntüleri..

2014-08-03-12-08-15                   2014-08-03-12-08-22

Bu yazı yorumlara kapalı.