آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آموزش RecognizerIntent!!!

saeidhic  11 سال پیش  11 سال پیش
+4 0

سلام  دوستان 

باز هم با یه آموزش اومدم حالا نمیدونم تا چه حدی جدیده یا قدیمی 

اما لازم دونستم که این آموزش رو براتون بذارم شاید بهره ای بردید!!

خب!!

RecognizerIntent چیست؟؟؟

اگه بخوام خیلی خلاصه بگم دستورات صوتی ای هست که شما به سرور گوگل ارسال میکنید سرور گوگل آنالیز میکنه و دقیقا عبارتی که گفتید رو برای شما مینویسه یا چاپ میکنه!

البته دست گوگل درد نکنه جدیدا امکان صحبت کردن آفلاین رو هم فراهم کرده! :)

خب من هر روزه دارم با متد ها و کلاس های مختلفی از اندروید کار میکنم و به یه سری اطلاعات مفیدی دست پیدا میکنم که برای شما هم میذارم تا شما هم بهره ای ببرید 

خب هدف چیه الان؟

میخوایم با میکروفون گوشی حرف بزنیم حرف های مارو دقیقا تو یه TextView یا EditText چاپ کنه یا بنویسه :)

خب اول کد های لایه:

 <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="saeid.yazdany.myapp1.MainActivity" >

    <Button
        android:id="@+id/btn_show_toast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Button" />

    <TextView
        android:id="@+id/txt_speech"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

این هم کد های MainActivity براتون توضیحاتشم کامنت کردم تا بهتر متوجه بشید :

import java.util.ArrayList;
import java.util.Locale;

import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {
	// ye code shenasaei baraye intent va switch
	private static final int RESUALT_CODE = 100;
	private Button button;
	private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.txt_speech);
        button = (Button) findViewById(R.id.btn_show_toast);
        button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// method tabdile goftar be matn
				speechToText();
			}
		});
    }

	protected void speechToText() {
		//farakhanie amalgare tabdil goftar be matn google ba dastore zir
		Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
		//farakhanie code language ya zaban va meghdar bytecode voice
		intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
		//farakhanie code zaban va ersale yek parametre mahali be sorat pishfarz
		intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
		//yek neveshte baraye amalgare tabdil goftar be matn google baraye agah kardan karbar az vaziate feli barname 
		intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say Somthings...");
		// blook try catch baraye rafe khata dar emulator
		try{
			startActivityForResult(intent, RESUALT_CODE);
		}
		catch (ActivityNotFoundException e){
			Toast.makeText(getApplicationContext(), "app suspended", Toast.LENGTH_LONG).show();
		}
		
	}
	//methode onActivityResult
	//shayad parametr haye in method vase shoma arg0 , arg 1 , arg 2 bashsan khodetoon baraye khanaei bishtare code be soorate man benevisid
	//manam aval nemidoonestam ina aslan chi hastan!google karadam fahmidam :)
	@Override
	protected void onActivityResult(int requestCode, int resulteCode, Intent data) {
		super.onActivityResult(requestCode, resulteCode, data);
		//switch kardim to hamoon code ke be sorate ye field tarif kardim
		//deghat konid baraye ebarati ke swith ghabool kone be onvane ye case hatman bayat uinque bashe 
		//vase in kar shoma bayad final konid 
		switch(requestCode){
		case RESUALT_CODE:
			if(resulteCode == RESULT_OK && data !=null){
				ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
				textView.setText(results.get(0));
			}
		}
	}
}
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .