لتنفيذ تطبيق التفاعل الصوتي (VIA)، عليك إكمال هذه الخطوات:
- إنشاء هيكل VIA.
- (اختياري) نفِّذ خطوات الإعداد/تسجيل الدخول.
- (اختياري) تنفيذ شاشة "الإعدادات".
- يُرجى تعريف الأذونات المطلوبة في ملف البيان.
- تنفيذ واجهة مستخدم للوحة الصوت
- استخدام ميزة "التعرّف على الصوت" (يجب أن تتضمّن واجهة برمجة التطبيقات RecognitionService API)
- تنفيذ اللفظ (يمكنك اختياريًا تنفيذ واجهة برمجة التطبيقات TextToSpeech).
- تنفيذ الأوامر عرض هذا المحتوى باللغة تنفيذ الأوامر:
توضّح الأقسام التالية كيفية إكمال كل خطوة من الخطوات المذكورة أعلاه.
إنشاء هيكل VIA العظمي
ملفات البيانات
يتم التعرّف على التطبيق باعتباره تطبيقًا مزودًا بتفاعل صوتي في الحالات التالية: مضمّنة في البيان:
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myvoicecontrol"> ... <application ... > <service android:name=".MyInteractionService" android:label="@string/app_name" android:permission="android.permission.BIND_VOICE_INTERACTION" android:process=":interactor"> <meta-data android:name="android.voice_interaction" android:resource="@xml/interaction_service" /> <intent-filter> <action android:name= "android.service.voice.VoiceInteractionService" /> </intent-filter> </service> </application> </manifest>
في هذا المثال:
- يجب أن تعرض VIA خدمة تمتد إلى
VoiceInteractionService
، مع فلتر أهداف للإجراءVoiceInteractionService.SERVICE_INTERFACE ("android.service.voice.VoiceInteractionService")
. - يجب أن تحصل هذه الخدمة على إذن توقيع النظام
BIND_VOICE_INTERACTION
. - يجب أن تتضمّن هذه الخدمة ملف بيانات وصفية لـ
android.voice_interaction
. على ما يلي:res/xml/interaction_service.xml
<voice-interaction-service xmlns:android="http://schemas.android.com/apk/res/android" android:sessionService= "com.example.MyInteractionSessionService" android:recognitionService= "com.example.MyRecognitionService" android:settingsActivity= "com.example.MySettingsActivity" android:supportsAssist="true" android:supportsLaunchVoiceAssistFromKeyguard="true" android:supportsLocalInteraction="true" />
للحصول على تفاصيل حول كل حقل، يمكنك الاطّلاع على R.styleable#VoiceInteractionService
.
ونظرًا لأن جميع VIA هي أيضًا خدمات للتعرف على الصوت، فيجب عليك أيضًا
عليك تضمين ما يلي في البيان:
AndroidManifest.xml
<manifest ...> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <application ...> ... <service android:name=".RecognitionService" ...> <intent-filter> <action android:name="android.speech.RecognitionService" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <meta-data android:name="android.speech" android:resource="@xml/recognition_service" /> </service> </application> </manifest>
تتطلب أيضًا خدمات التعرف على الصوت توفير البيانات الوصفية التالية:
res/xml/recognition_service.xml
<recognition-service xmlns:android="http://schemas.android.com/apk/res/android" android:settingsActivity="com.example.MyRecognizerSettingsActivity" />
VoiceInteractionService وVoiceInteractionSessionService وVoiceInteractionSession
يوضِّح الرسم البياني التالي دورة حياة كلّ من هذه الكيانات:
الشكل 1. دورات الحياة
كما ذكرنا سابقًا، VoiceInteractionService
هي نقطة الدخول.
إلى VIA. المسؤوليات الرئيسية لهذه الخدمة هي:
- تهيئة أي عمليات يجب الاستمرار في تشغيلها طالما VIA هذه هو الاتصال النشط. على سبيل المثال، رصد الكلمة المفتاح.
- الإبلاغ عن الإجراءات الصوتية المتوافقة (راجِع ميزة "النقر للقراءة" في "مساعد Google")
- بدء جلسات التفاعل الصوتي من شاشة القفل (قفل المفاتيح)
في أبسط صوره، سيبدو تنفيذ VoiceInteractionService النحو التالي:
public class MyVoiceInteractionService extends VoiceInteractionService { private static final List<String> SUPPORTED_VOICE_ACTIONS = Arrays.asList( CarVoiceInteractionSession.VOICE_ACTION_READ_NOTIFICATION, CarVoiceInteractionSession.VOICE_ACTION_REPLY_NOTIFICATION, CarVoiceInteractionSession.VOICE_ACTION_HANDLE_EXCEPTION ); @Override public void onReady() { super.onReady(); // TODO: Setup hotword detector } @NonNull @Override public Set<String> onGetSupportedVoiceActions( @NonNull Set<String> voiceActions) { Set<String> result = new HashSet<>(voiceActions); result.retainAll(SUPPORTED_VOICE_ACTIONS); return result; } ... }
تتم معالجة VoiceInteractionService#onGetSupportedVoiceActions()
.
مطلوب التعامل معها
ميزة "النقر للقراءة" في "مساعد Google":
يستخدم النظام VoiceInteractionSessionService لإنشاء
التفاعل مع VoiceInteractionSession. لديها مسئولية واحدة فقط،
لبدء جلسات جديدة عند طلبها
public class MyVoiceInteractionSessionService extends VoiceInteractionSessionService { @Override public VoiceInteractionSession onNewSession(Bundle args) { return new MyVoiceInteractionSession(this); } }
أخيرًا، تُعد VoiceInteractionSession المكان الذي يستغرق فيه معظم العمل
الانتهاء منه. يمكن إعادة استخدام مثيل جلسة واحدة لإكمال عدة
وتفاعلات المستخدم. في نظام التشغيل AAOS، يتوفّر CarVoiceInteractionSession
مساعد،
والمساعدة في تنفيذ بعض الوظائف الفريدة للسيارات.
public class MyVoiceInteractionSession extends CarVoiceInteractionSession { public InteractionSession(Context context) { super(context); } @Override protected void onShow(String action, Bundle args, int showFlags) { closeSystemDialogs(); // TODO: Unhide UI and update UI state // TODO: Start processing audio input } ... }
تتضمن الدالة VoiceInteractionSession
مجموعة كبيرة من طرق معاودة الاتصال التي
الموضحة في الأقسام التالية. اطّلِع على مستندات "VoiceInteractionSession
" للاطّلاع على قائمة كاملة.
تنفيذ خطوات الإعداد/تسجيل الدخول
يمكن أن تتم عملية الإعداد وتسجيل الدخول في الحالات التالية:
- أثناء إعداد الجهاز (معالج الإعداد).
- أثناء تبديل خدمة التفاعل الصوتي (الإعدادات).
- عند التشغيل لأول مرة عند تحديد التطبيق.
للحصول على تفاصيل عن تجربة المستخدم المقترَحة والإرشادات المرئية، يُرجى الاطّلاع على أدوات المساعدة التي تم تحميلها مسبقًا: إرشادات حول تجربة المستخدم
الإعداد أثناء تبديل الخدمة الصوتية
يستطيع المستخدم دائمًا اختيار VIA إذا لم يتم بشكل صحيح تكوينه. يمكن أن يحدث هذا للأسباب التالية:
- تخطّى المستخدم معالِج الإعداد بالكامل أو تخطّى المستخدم الصوت. خطوة تهيئة التفاعل.
- اختار المستخدم VIA مختلفة عن التي تم ضبطها أثناء الجهاز. الإعداد.
وفي جميع الأحوال، تتوفر عدة طرق لتشجيع المستخدم على استخدام السمة VoiceInteractionService
.
لإكمال عملية الإعداد:
- تذكير بالإشعار.
- الرد الصوتي التلقائي عندما يحاول المستخدم استخدامه.
ملاحظة: لا يُنصح بشدة بتقديم خطوات إعداد VIA بدون طلب صريح من المستخدم. وهذا يعني أنه يجب تجنّب VIA عرض محتوى على وحدة المعالجة المركزية (HU) أثناء تشغيل الجهاز أو نتيجة لتبديل المستخدم أو فتح القفل.
تذكير بالإشعار
يُعد تذكير الإشعار طريقة غير تطفلية للإشارة إلى الحاجة إلى الإعداد، وتزويد المستخدمين بإمكانية الانتقال إلى إعدادات المساعد التدفق.
الشكل 2. تذكير بالإشعار
إليك كيفية عمل هذا التدفق:
الشكل 3. مسار تذكير الإشعار
رد صوتي
ويعتبر هذا الإجراء أبسط الطرق لتنفيذه، حيث يبدأ النطق في
استدعاء VoiceInteractionSession#onShow()
، يشرح للمستخدم
إلى القيام بذلك، ثم سؤالهم (إذا كان الإعداد مسموحًا به في ظل حالة تقييد تجربة المستخدم)
إذا كانوا يريدون بدء عملية الإعداد إذا تعذّر إجراء الإعداد في الوقت الحالي، يُرجى توضيح ذلك.
موقفه أيضًا.
الإعداد عند الاستخدام لأول مرة
بإمكان المستخدم دائمًا تشغيل VIA إذا لم يتم بشكل صحيح تكوينه. وفي مثل هذه الحالات:
- إبلاغ المستخدم شفهيًا عن هذا الموقف (على سبيل المثال، "للعمل بشكل صحيح، يُرجى إكمال بضع خطوات ... ").
- إذا سمح محرّك البحث في قيود تجربة المستخدم بذلك (راجِع UX_RESTRICTIONS_NO_الإعداد)، اسأل المستخدم ما إذا كان يريد بدء عملية الإعداد ثم افتح شاشة الإعدادات لـ VIA.
- بخلاف ذلك (على سبيل المثال، إذا كان المستخدم يقود سيارته)، اترك إشعارًا للمستخدم وأنقر فوق الخيار عندما يكون ذلك آمنًا.
إنشاء شاشات إعداد التفاعل الصوتي
يجب تطوير شاشات الإعداد وتسجيل الدخول كأنشطة عادية. يمكنك الاطّلاع على إرشادات تجربة المستخدم والإرشادات المرئية لتطوير واجهة المستخدم في أدوات المساعدة التي تم تحميلها مسبقًا: إرشادات حول تجربة المستخدم
إرشادات عامة:
- يجب أن تسمح VIA للمستخدمين بمقاطعة الإعداد واستئنافه في أي وقت.
- يجب عدم السماح بالإعداد في حال سريان قيد
UX_RESTRICTIONS_NO_SETUP
. للحصول على التفاصيل، يمكنك مراجعة الإرشادات المتعلّقة بإلهاء السائق - يجب أن تتطابق شاشات الإعداد مع نظام التصميم لكل مركبة. الشاشة العامة التخطيط والأيقونات والألوان والجوانب الأخرى أن تكون متسقة مع بقية واجهة المستخدم. عرض التخصيص لمزيد من التفاصيل.
تنفيذ شاشة الإعدادات
الشكل 4. دمج الإعدادات
شاشات الإعدادات هي أنشطة Android عادية. في حالة التنفيذ، يمكن أن تكون نقطة الدخول
أن يكون معرّفًا في res/xml/interaction_service.xml
كجزء من VIA
البيانات (راجع
البيانات:
يُعدّ قسم "الإعدادات" مكانًا جيدًا لمواصلة عملية الإعداد وتسجيل الدخول (في حال عدم إكمال عملية الإعداد).
) أو قدِّم خيار تسجيل الخروج أو تبديل المستخدم إذا لزم الأمر. مشابهة لعملية الإعداد
الشاشات الموضحة أعلاه، يجب أن:
- توفير خيار الخروج مرة أخرى إلى الشاشة السابقة في حزمة الشاشة (على سبيل المثال، "إعدادات السيارة").
- لا يُسمح بها أثناء القيادة. لمعرفة التفاصيل، يُرجى الاطّلاع على إرشادات تشتيت انتباه السائق.
- قم بمطابقة كل نظام تصميم مركبة. للحصول على التفاصيل، يمكنك مراجعة التخصيص:
يُرجى تعريف الأذونات المطلوبة في ملف البيان.
يمكن تقسيم الأذونات المطلوبة بموجب VIA إلى ثلاث فئات:
- أذونات توقيع النظام: هذه هي الأذونات. يتم منحه فقط لحِزم APK المثبَّتة مسبقًا والموقَّعة من النظام. لا يمكن للمستخدمين منح هذه الأذونات، فالمصنّعين الأصليون للأجهزة هم فقط من يمكنهم منحهم هذه الأذونات عند إنشاء صور النظام. لمزيد من المعلومات حول الحصول على أذونات التوقيع، يُرجى الاطّلاع على منح الأذونات المميّزة للنظام.
- أذونات خطيرة. هذه هي الأذونات التي يجب على المستخدم لمنحها باستخدام مربع الحوار PermissionsController. يمكن للمصنّعين الأصليين للأجهزة أن يمنحوا مسبقًا بعضًا الأذونات في خدمة VoiceInteractionService التلقائية. ولكن نظرًا لأن هذا الإعداد الافتراضي من جهاز إلى آخر، يجب أن تتمكن التطبيقات من طلب هذه الأذونات عند الحاجة إليها.
- الأذونات الأخرى. هذه كلها أذونات أخرى ولا تتطلب تدخل المستخدم. يتم منح هذه الأذونات تلقائيًا النظام.
بناءً على ما سبق، يركّز القسم التالي على تقديم طلب خطيرة. يجب عدم طلب الأذونات إلا عندما يكون المستخدم في شاشات تسجيل الدخول أو شاشة الإعدادات.
إذا لم يكن لدى التطبيق الأذونات اللازمة للعمل، المسار الموصى به هو استخدام النطق الصوتي لشرح الموقف وإشعار لتقديم عنصر وظيفي يمكن للمستخدم استخدامه العودة إلى شاشات إعدادات VIA. لمعرفة التفاصيل، يُرجى الاطّلاع على 1. تذكير بالإشعارات.
طلب الأذونات كجزء من شاشة الإعدادات
يتم طلب الأذونات الخطيرة باستخدام طريقة ActivityCompat#requestPermission()
العادية (أو ما يعادلها). للحصول على تفاصيل حول كيفية طلب الأذونات، يمكنك الاطّلاع على
طلب أذونات التطبيق
الشكل 5. طلب الأذونات
إذن أداة استماع الإشعارات
لتنفيذ تدفق TTR، يجب تعيين VIA على أنها أداة معالجة الإشعارات. هذا ليس إذنًا في حد ذاته، ولكنه بدلاً من ذلك الذي يسمح للنظام بإرسال إشعارات إلى جهات التسجيل المستمعين. لمعرفة ما إذا كان قد تم منح VIA حق الوصول إلى هذه المعلومات، بإمكان التطبيقات:
- (اختياري) التحقُّق من توفُّر أدوات معالجة الإشعارات مسبقًا من خلال استخدام
CarAssistUtils#assistantIsNotificationListener()
يمكن إجراء ذلك أثناء عملية الإعداد مثلاً. - (إلزامي) اتّخاذ الإجراءات اللازمة للتعامل مع "
CarVoiceInteractionSession#onShow()
"VOICE_ACTION_HANDLE_EXCEPTION
والاستثناءEXCEPTION_NOTIFICATION_LISTENER_PERMISSIONS_MISSING
.
إذا لم يتم منح حق الوصول هذا مسبقًا، فيجب أن توجه VIA المستخدم إلى قسم "الوصول إلى الإشعارات" في "إعدادات السيارة"، باستخدام مجموعة من النطق والإشعارات. يمكن استخدام الكود التالي لفتح القسم المناسب من تطبيق الإعدادات:
private void requestNotificationListenerAccess() { Intent intent = new Intent(Settings .ACTION_NOTIFICATION_LISTENER_SETTINGS); intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName()); startActivity(intent); }
تنفيذ واجهة مستخدم للوحة الصوت
عندما تتلقّى "VoiceInteractionSession
" معاودة الاتصال بالرقم onShow()
،
يمكنه تقديم واجهة مستخدم للوحة الصوت. للحصول على إرشادات حول العناصر المرئية وتجربة المستخدم حول تطبيق اللوحة الصوتية، يُرجى الاطّلاع على
أدوات المساعدة التي تم تحميلها مسبقًا: إرشادات حول تجربة المستخدم
الشكل 6. عرض لوحة الصوت
هناك خياران لكيفية تنفيذ واجهة المستخدم هذه:
- إلغاء "
VoiceInteractionSession#onCreateContentView()
" - بدء نشاط باستخدام "
VoiceInteractionSession#startAssistantActivity()
"
استخدام onCreateContentView()
هذه هي الطريقة التلقائية لمشاركة عرض لوحة صوت. VoiceInteractionSession
تنشئ الفئة الأساسية نافذة وتدير دورة حياتها طالما كان الصوت
وهي جلسة نشطة. يجب أن تلغي التطبيقات سياسة VoiceInteractionSession#onCreateContentView()
وعرض طريقة عرض مرفقة بتلك النافذة فور انتهاء الجلسة
إنشاء. ومن المفترض أن يكون هذا العرض غير مرئي في البداية. عندما يبدأ تفاعل صوتي،
يجب أن يكون هذا العرض مرئيًا على VoiceInteractionSession#onShow()
ثم يكون غير مرئي مرة أخرى في VoiceInteractionSession#onHide()
.
public class MyVoiceInteractionSession extends CarVoiceInteractionSession { private View mVoicePlate; … @Override public View onCreateContentView() { mVoicePlate = inflater.inflate(R.layout.voice_plate, null); … } @Override protected void onShow(String action, Bundle args, int showFlags) { // TODO: Update UI state to "listening" mVoicePlate.setVisibility(View.VISIBLE); } @Override public void onHide() { mVoicePlate.setVisibility(View.GONE); } … }
عند استخدام هذه الطريقة، قد تحتاج إلى ضبط VoiceInteractionSession#onComputeInsets()
من أجل أخذ المناطق الغامضة في واجهة المستخدم لديك.
استخدام startassistantActivity()
في هذه الحالة، يفوّض "VoiceInteractionSession
" معالجة الصوت.
واجهة مستخدم لوحة الجهاز إلى نشاط منتظم. عند استخدام هذا الخيار، تُعرَض VoiceInteractionSession
تنفيذ الإجراء إلى إيقاف إنشاء نافذة المحتوى التلقائية (راجِع استخدام onCreateContentView()) على onPrepareShow()
معاودة الاتصال. في VoiceInteractionSession#onShow()
، ستبدأ الجلسة الصوت.
نشاط لوحة الجهاز باستخدام VoiceInteractionSession#startAssistantActivity()
. هذا النمط
تبدأ واجهة المستخدم بإعدادات النافذة وعلامات النشاط المناسبة.
public class MyVoiceInteractionSession extends CarVoiceInteractionSession { … @Override public void onPrepareShow(Bundle args, int showFlags) { super.onPrepareShow(args, showFlags); setUiEnabled(false); } @Override protected void onShow(String action, Bundle args, int showFlags) { closeSystemDialogs(); Intent intent = new Intent(getContext(), VoicePlateActivity.class); intent.putExtra(VoicePlateActivity.EXTRA_ACTION, action); intent.putExtra(VoicePlateActivity.EXTRA_ARGS, args); startAssistantActivity(intent); } … }
للحفاظ على اتصال بين هذا النشاط
VoiceInteractionSession
، قد يتم ربط مجموعة من الأهداف الداخلية أو ربط الخدمة
مطلوبة. على سبيل المثال، عند استدعاء VoiceInteractionSession#onHide()
،
أن يتمكن المستخدم من تمرير هذا الطلب إلى النشاط.
ملاحظة مهمة: في السيارات، يتم إدخال تعليقات توضيحية فقط.
الأنشطة أو الأنشطة المدرجة في "القائمة المسموح بها" لتجربة المستخدم أثناء
القيادة. ينطبق هذا على الأنشطة التي بدأت
VoiceInteractionSession#startAssistantActivity()
أيضًا. تذكر أن
يمكنك إضافة تعليقات توضيحية إلى نشاطك باستخدام "<meta-data
android:name="distractionOptimized" android:value="true"/>
" أو تضمين هذا
النشاط في المفتاح systemActivityWhitelist
من /packages/services/Car/service/res/values/config.xml
الملف. لمزيد من المعلومات، يُرجى الاطّلاع على السائق.
إرشادات حول تشتيت الانتباه:
استخدام ميزة التعرف على الصوت
في هذا القسم، ستتعرف على كيفية تنفيذ التعرف على الصوت من خلال ميزة والتعرف على الكلمات المفتاح. الكلمة المفتاح هي كلمة تشغيل تُستخدم لبدء طلب بحث جديد. أو الإجراء عن طريق الصوت. على سبيل المثال، يمكنك قول "OK Google" أو "Ok Google".
اكتشاف الكلمة المفتاح لبروتوكول DSP
يوفر Android إمكانية الوصول إلى أداة رصد الكلمات المفتاح قيد التشغيل دائمًا على مستوى وسيط عرض الطلب (DSP) من خلال
متوسّط AlwaysOnHotwordDetector
.
للكشف عن الكلمة المفتاح عند انخفاض وحدة المعالجة المركزية. يعد استخدام هذه الوظيفة
مقسمًا إلى جزأين:
- نسخة مثيل لـ
AlwaysOnHotwordDetector
. - تسجيل نموذج صوتي لرصد الكلمة المفتاح
يمكن أن يؤدي تنفيذ VoiceInteractionService إلى إنشاء أداة رصد الكلمات المفتاح باستخدام
VoiceInteractionService#createAlwaysOnHotwordDetector()
,
إدخال عبارة رئيسية واللغة التي يريد استخدامها للكشف. وبالتالي،
يتلقّى التطبيق onAvailabilityChanged()
مع إحدى القيم المحتملة التالية:
STATE_HARDWARE_UNAVAILABLE
لا تتوفر إمكانية وسيط عرض الطلب (DSP) على الخاص بك. وفي هذه الحالة، يتم استخدام الكشف عن الكلمة المفتاح للبرنامج.STATE_HARDWARE_UNSUPPORTED
لا يتوفر دعم DSP بشكل عام، ولكنه لا يتيح DSP استخدام عبارة رئيسية ولغة محلية معيَّنة. يمكن للتطبيق أن يختار استخدام اكتشاف الكلمة المفتاح الخاصة بالبرامج:STATE_HARDWARE_ENROLLED
ميزة "رصد الكلمات الساخنة" جاهزة ويمكن بدؤها من خلال لاستدعاء طريقةstartRecognition()
.STATE_HARDWARE_UNENROLLED
النموذج الصوتي للعبارة الأساسية المطلوبة ليس ولكن يمكن التسجيل فيها.
يمكن تسجيل النماذج الصوتية لرصد الكلمة المفتاح باستخدام IVoiceInteractionManagerService#updateKeyphraseSoundModel()
.
يمكن تسجيل عدة نماذج في النظام في وقت محدد، ولكن يمكن تسجيل نموذج واحد فقط.
مرتبط بنموذج AlwaysOnHotwordDetector
.
قد لا يتوفر رصد الكلمة المفتاح لبروتوكول DSP في جميع الأجهزة. مطورو VIA
يجب التحقّق من إمكانات الأجهزة باستخدام getDspModuleProperties()
.
. لنموذج الرمز البرمجي الذي يظهر
لمعرفة كيفية تسجيل النماذج الصوتية، يُرجى الاطّلاع على "VoiceEnrollment/src/com/android/test/voiceenrollment/EnrollmentUtil.java
".
يُرجى مراجعة الالتقاط المتزامن بخصوص
التعرف على الكلمة المفتاح بشكل متزامن.
اكتشاف الكلمة المفتاح الخاصة بالبرامج
وكما هو موضح أعلاه، قد لا يتوفر الكشف عن الكلمة المفتاح لبروتوكول DSP في جميع الأجهزة (على سبيل المثال، لا يوفّر محاكي Android محاكاة DSP). وفي هذه الحالة، فإن التعرف على الصوت في البرامج هو البديل الوحيد. لتجنب التدخل في إلى أي تطبيقات قد تحتاج إلى الوصول إلى الميكروفون، يجب أن تصل VIA إلى إدخال الصوت باستخدام:
- يجب أن يستخدم تسجيل الصوت MediaRecorder.AudioSource.HOTWORD.
- الحصول على إذن
android.Manifest.permission.CAPTURE_AUDIO_HOTWORD
هذان الثابتان هما @hide
ولا يتوفّران إلا للتطبيقات المجمّعة.
إدارة إدخال الصوت والتعرّف على الصوت
يجب تنفيذ الإدخال الصوتي باستخدام فئة MediaRecorder.
لمزيد من المعلومات حول كيفية استخدام واجهة برمجة التطبيقات هذه، يُرجى الاطّلاع على MediaRecorder
نظرة عامة: من المتوقع أيضًا أن تكون خدمات التفاعل الصوتي RecognitionService
.
وعمليات تنفيذ الفئات. أي تطبيق في النظام يتطلب التعرف على الصوت يستخدم
من الوصول إلى هذه الإمكانية. للتعرف على الصوت والوصول إلى الميكروفون، يمكنك استخدام VIA
يجب أن تحتوي على android.permission.RECORD_AUDIO
.
التطبيقات التي لديها إمكانية الوصول إلى RecognitionService
في حال تطبيق هذا الإذن أيضًا.
قبل استخدام نظام Android 10، كان يتم منح إذن الوصول إلى الميكروفون لتطبيق واحد فقط على (باستثناء اكتشاف الكلمة المفتاح، انظر أعلاه). بدءًا من نظام التشغيل Android 10، إمكانية الوصول إلى الميكروفون. لمزيد من المعلومات، راجع مشاركة إدخال الصوت:
الوصول إلى إخراج الصوت
عندما تكون VIA جاهزة لتقديم ردود لفظية، من المهم اتبع هذه المجموعة التالية من الإرشادات:
- عند طلب التركيز الصوتي أو إدارة إخراج الصوت،
يجب استخدام
AudioAttributes#USAGE_ASSISTANT
وAudioAttributes#CONTENT_TYPE_SPEECH
كسمتَين صوتيتَين. - أثناء التعرّف على الكلام، يجب طلب التركيز على الصوت باستخدام "
AudioManage#AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE
". يُرجى العلم أنّ بعض تطبيقات الوسائط قد لا تتفاعل بشكل صحيح مع طلبات الوسائط. (يمكنك الاطّلاع على Fulfilling Media Commands) أثناء تشغيل صوته. تتم إزالة التركيز.