تطوير التطبيقات

لتنفيذ تطبيق التفاعل الصوتي (VIA)، عليك إكمال هذه الخطوات:

  1. إنشاء هيكل VIA.
  2. (اختياري) نفِّذ خطوات الإعداد/تسجيل الدخول.
  3. (اختياري) تنفيذ شاشة "الإعدادات".
  4. يُرجى تعريف الأذونات المطلوبة في ملف البيان.
  5. تنفيذ واجهة مستخدم للوحة الصوت
  6. استخدام ميزة "التعرّف على الصوت" (يجب أن تتضمّن واجهة برمجة التطبيقات RecognitionService API)
  7. تنفيذ اللفظ (يمكنك اختياريًا تنفيذ واجهة برمجة التطبيقات TextToSpeech).
  8. تنفيذ الأوامر عرض هذا المحتوى باللغة تنفيذ الأوامر:

توضّح الأقسام التالية كيفية إكمال كل خطوة من الخطوات المذكورة أعلاه.

إنشاء هيكل 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 إذا لم يتم بشكل صحيح تكوينه. وفي مثل هذه الحالات:

  1. إبلاغ المستخدم شفهيًا عن هذا الموقف (على سبيل المثال، "للعمل بشكل صحيح، يُرجى إكمال بضع خطوات ... ").
  2. إذا سمح محرّك البحث في قيود تجربة المستخدم بذلك (راجِع UX_RESTRICTIONS_NO_الإعداد)، اسأل المستخدم ما إذا كان يريد بدء عملية الإعداد ثم افتح شاشة الإعدادات لـ VIA.
  3. بخلاف ذلك (على سبيل المثال، إذا كان المستخدم يقود سيارته)، اترك إشعارًا للمستخدم وأنقر فوق الخيار عندما يكون ذلك آمنًا.

إنشاء شاشات إعداد التفاعل الصوتي

يجب تطوير شاشات الإعداد وتسجيل الدخول كأنشطة عادية. يمكنك الاطّلاع على إرشادات تجربة المستخدم والإرشادات المرئية لتطوير واجهة المستخدم في أدوات المساعدة التي تم تحميلها مسبقًا: إرشادات حول تجربة المستخدم

إرشادات عامة:

  • يجب أن تسمح 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 حق الوصول إلى هذه المعلومات، بإمكان التطبيقات:

إذا لم يتم منح حق الوصول هذا مسبقًا، فيجب أن توجه 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 إلى إدخال الصوت باستخدام:

هذان الثابتان هما @hide ولا يتوفّران إلا للتطبيقات المجمّعة.

إدارة إدخال الصوت والتعرّف على الصوت

يجب تنفيذ الإدخال الصوتي باستخدام فئة MediaRecorder. لمزيد من المعلومات حول كيفية استخدام واجهة برمجة التطبيقات هذه، يُرجى الاطّلاع على MediaRecorder نظرة عامة: من المتوقع أيضًا أن تكون خدمات التفاعل الصوتي RecognitionService. وعمليات تنفيذ الفئات. أي تطبيق في النظام يتطلب التعرف على الصوت يستخدم من الوصول إلى هذه الإمكانية. للتعرف على الصوت والوصول إلى الميكروفون، يمكنك استخدام VIA يجب أن تحتوي على android.permission.RECORD_AUDIO. التطبيقات التي لديها إمكانية الوصول إلى RecognitionService في حال تطبيق هذا الإذن أيضًا.

قبل استخدام نظام Android 10، كان يتم منح إذن الوصول إلى الميكروفون لتطبيق واحد فقط على (باستثناء اكتشاف الكلمة المفتاح، انظر أعلاه). بدءًا من نظام التشغيل Android 10، إمكانية الوصول إلى الميكروفون. لمزيد من المعلومات، راجع مشاركة إدخال الصوت:

الوصول إلى إخراج الصوت

عندما تكون VIA جاهزة لتقديم ردود لفظية، من المهم اتبع هذه المجموعة التالية من الإرشادات: