English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
استدعاء برنامج التعرف على الصوت باستخدام Intent
شرح
يتم تحقيق التعرف على الصوت في Android من خلال RecognizerIntent، والكود بسيط للغاية، ولكن إذا لم يتم العثور على جهاز التعرف على الصوت، فإنه يرفع استثناء ActivityNotFoundException، لذا يجب علينا إلتقاط هذا الاستثناء. كما أن التعرف على الصوت غير قابل للاختبار في المحاكي، لأن التعرف على الصوت يتطلب الوصول إلى بيانات Google Cloud، لذا إذا لم يكن شبكة الهاتف المحمول مفتوحة، فإنه لا يمكن تحقيق التعرف على الصوت! يجب فتح شبكة الهاتف المحمول بالضرورة، وإذا لم يكن هناك وظيفة التعرف على الصوت في الهاتف، فإنه لا يمكن تشغيل التعرف على الصوت أيضًا!
ملاحظة: يجب تثبيت برنامج التعرف على الصوت قبل الاستخدام. مثل "البحث الصوتي"، يستخدم تقنية التعرف على الصوت من Google، ويمكن للإرادة التعرف على هذا البرنامج.
هذا المثال يأتي من نموذج Android:
development/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java
كود النواة والشرح
package com.example.test; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.speech.RecognizerIntent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends Activity implements OnClickListener { private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button) findViewById(R.id.btn); // زر الاعتراف PackageManager pm = getPackageManager(); List activities = pm.queryIntentActivities(new Intent( RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); // برنامج الاعتراف المحلي // new Intent(RecognizerIntent.ACTION_WEB_SEARCH), 0); // برمجة الاعتراف بالبحث عبر الإنترنت /* * 此处没有使用捕捉异常,而是检测是否有语音识别程序。 * 也可以在startRecognizerActivity()方法中捕捉ActivityNotFoundException异常 */ if (activities.size() != 0) { btn.setOnClickListener(this); } else { // 若检测不到语音识别程序在本机安装,测将扭铵置灰 btn.setEnabled(false); btn.setText("未检测到语音识别设备"); } } public void onClick(View v) { if (v.getId() == R.id.btn) { startRecognizerActivity(); } } // 开始识别 private void startRecognizerActivity() { // 通过Intent传递语音识别的模式,开启语音 Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); // 语言模式和自由模式的语音识别 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); // 提示语音开始 intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "开始语音"); // 开始语音识别 startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); // 调出识别界面 } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // 回调获取从谷歌得到的数据 if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { // 取得语音的字符 ArrayList<String> results = data .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); String resultString = ""; for (int i = 0; i < results.size(); i++) { resultString += results.get(i); } Toast.makeText(this, resultString, Toast.LENGTH_SHORT).show(); } // إعادة توجيه استدعاء التعرف على الصوت، عرض النص المكتشف كToast super.onActivityResult(requestCode, resultCode, data); } }
مبدأه الرئيسي هو إرسال الصوت إلى Google Cloud، ثم معالجة الشبكة، مطابقة البيانات المطلوبة، وإرسالها إلى العميل.
لا تنسى، أضف صلاحية الوصول إلى الشبكة في manifest:
<uses-permission android:name="android.permission.INTERNET" />
تأثير تشغيله بعد ذلك:
هذا هو جمع المعلومات حول تحقيق التعرف على الصوت في Android، سيتم إكمال المزيد من المعلومات ذات الصلة لاحقًا، شكرًا للجميع على دعم هذا الموقع!
البيان: محتوى هذا المقال تم جمعه من الإنترنت، حقوق الطبع والنشر تخص المالك الأصلي، تم جمع المحتوى من قبل المستخدمين على الإنترنت وتم تحميله بشكل مستقل، لا يملك هذا الموقع حقوق الملكية، لم يتم تعديل المحتوى بشكل إنساني، ولا يتحمل هذا الموقع أي مسؤولية قانونية متعلقة بذلك. إذا لاحظت أن هناك محتوى يشتبه في حقوق الطبع والنشر، فالرجاء إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # ب @) للإبلاغ، وقدم الدليل على ذلك، إذا تم التحقق من ذلك، سيتم حذف المحتوى المشبوه فورًا.