آموزش RecognizerIntent!!!
سلام دوستان
باز هم با یه آموزش اومدم حالا نمیدونم تا چه حدی جدیده یا قدیمی
اما لازم دونستم که این آموزش رو براتون بذارم شاید بهره ای بردید!!
خب!!
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));
}
}
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .