مراسلة السيارة

يوفر تطبيق Car Messenger إمكانات المراسلة المصممة للأجهزة المخصصة للسيارات. مثل تطبيقات السيارات الأخرى، يبدأ المستخدمون تشغيل تطبيق Car Messenger من مشغّل التطبيقات.

ما الميزات الجديدة في Car Messenger؟

باستخدام تطبيق Car Messenger الجديد، يمكن للسائقين تنفيذ ما يلي:

  • الحصول على تجربة مراسلة مخصّصة
  • شغِّل تطبيق Car Messenger من مشغّل التطبيقات.
  • تصفُّح الرسائل التي يتم استلامها قبل وأثناء القيادة
  • الاستماع إلى الرسائل والرد عليها
  • تجاهل إشعارات الرسائل
  • بدء محادثات جديدة.

المصطلحات

تم استخدام هذه المصطلحات في هذه الصفحة:

النقر للقراءة (TTR)
تمكن ميزة "انقر للقراءة" للمساعدين الصوتيين من قراءة الرسائل والرد عليها الرسائل النصية نيابةً عن ذلك المستخدِم، عندما يتفاعل المستخدِم مع إشعارات الرسائل

رد مباشر
مماثلة لميزة "انقر للقراءة"، إلا أنّ المساعد الصوتي لا يقرأ وسيصدر فورًا طلبًا للرد على الرسالة.

إرسال مباشر
يتكامل مع مساعد صوتي لإنشاء رسالة جديدة مع جهة اتصال محدّدة أو بدونها

مزايا التطبيقات غير المجمّعة

تقدم التطبيقات غير المجمّعة، مثل Car Messenger، هذه المزايا:

  • تستخدم الطرق العامة فقط (لا تعتمد على النظام الأساسي لواجهات برمجة التطبيقات المخفية)
  • تطوير التطبيقات خارج نظام Android الأساسي
  • تفعيل الإصدارات الأكثر تكرارًا (للميزات الجديدة والمشاكل التي تم إصلاحها)
  • تحديث التطبيقات من خلال Google Play

تعرَّف على مزيد من المعلومات عن التطبيقات غير المجمّعة.

التفاصيل الفنية

يصف هذا القسم بنية Car Messenger. لمزيد من المعلومات، يُرجى مراجعة الدمج مع CarVoiceInteractionSession

البنية المستنِدة إلى الاتصال الهاتفي

عند الإقران عبر البلوتوث، تتم مزامنة البيانات من الاتصال الهاتفي للهاتف. بقاعدة البيانات الهاتفية للسيارة. عند قطع اتصال البلوتوث، يتم حذف البيانات التي تمت مزامنتها من جهاز قاعدة بيانات الاتصال الهاتفي.

تم طرح هذه الميزة في الإصدار 12 من نظام التشغيل Android. تشير رسالة الأشكال البيانية وتشمل المزايا الأساسية ما يلي:

  • يمكن استرداد رسائل المستخدمين المجمّعة من قاعدة بيانات.
  • تتوفّر الرسائل من مساحات التخزين السحابي السابقة.
  • يستخدم بنية وواجهة برمجة تطبيقات مماثلة لتخزين الرسائل القصيرة SMS واسترجاعها على Android. الهواتف.
  • يتم إلغاء تجميعها بالكامل من نظام Android الأساسي.

إليك الخطوات:

تدفق البيانات المستنِد إلى الاتصال الهاتفي الشكل 1. تدفق البيانات المستنِد إلى الاتصال الهاتفي

تم توضيح التدفق بتنسيق نصي:

 1. Phone connects to car.
    |
    --> 2. SMS data transferred from phone's database to car database.
          |
          --> 3. Car Messenger retrieves data from telephony database to display on UI.
                  |
                  --> 4. User interactions prompt the voice assistant.
                  |
          <-- 5. Car Messenger receives reply action from the voice assistant.
          |
    <-- 6. SMS is marked as read in car database.
    |
 7. Reply transmitted to recipients, phone database updated with reply and read status.

إليك ما نفعله بالبيانات:

استخدام بيانات Car Messenger الشكل 2. معالجة بيانات Car Messenger

تم توضيح التدفق بتنسيق نصي:

 1. Phone connects to car.
    |
    --> 2. SMS data transferred from phone's database to car database.
          |
          --> 3. Phone disconnects from car.
                  |
                  --> 4. SMS data deleted from car telephony database.
  • عند الربط، يتم نقل البيانات من الهاتف إلى السيارة باستخدام ميزة Bluetooth MAP.
  • عند قطع الاتصال، يتم حذف بيانات ذلك الهاتف من قاعدة بيانات السيارة.

الحصول على Car Messenger

احصل على أحدث خطة اشتراك من Car Messenger من Google Git.

واجهات برمجة تطبيقات التفاعل الصوتي

تستخدم ميزة Car Messenger واجهات برمجة التطبيقات CarVoiceInteractionSession للدمج مع المساعد. يتم توضيح هذه العناصر في الأقسام التالية.

نموذج كائن PendingIntent

تستخدم واجهات برمجة التطبيقات هذه PendingIntent لإعادة توجيه طلبات المساعد التي تم حلها إلى Car Messenger.

هذا هو تسلسل الأحداث:

  1. يُطلق تطبيق "مساعد Google" على Car Messenger من خلال الاتصال بـ activity.showAssist(Bundle args). تحتوي الوسيطات على إجراء واجهة برمجة التطبيقات ومعلماته المطلوبة، التي تحتوي على النية بالشراء إذا لزم الأمر.

  2. يسترد "مساعد Google" البيانات التي أدخلها المستخدم إذا لزم الأمر، إلى جانب الحزم التي تحتوي على في انتظار المراجعة

  3. يرسل "مساعد Google" الهدف مرة أخرى إلى ميزة Car Messenger.

  4. تحلّ ميزة Car Messenger إجراء واجهة برمجة التطبيقات.

وضع علامة كإجراء واجهة برمجة التطبيقات مقروء

عندما يقرأ "مساعد Google" رسالة، يتم إرسال "PendingIntent" إلى السيارة. مراسلة مع الإجراء VOICE_ACTION_READ_NOTIFICATION أو VOICE_ACTION_READ_CONVERSATION لوضع علامة "مقروءة" على الرسالة.

إجراء واجهة برمجة التطبيقات للردّ المباشر

عند ردّ "مساعد Google" على رسالة، يتم إرسال "PendingIntent" إلى السيارة. مراسلة مع الإجراء VOICE_ACTION_REPLY_NOTIFICATION و VOICE_ACTION_REPLY_CONVERSATION للرد على المحادثة.

إجراء واجهة برمجة التطبيقات للإرسال المباشر للرسائل القصيرة

يتم إرسال حزمة بالإجراء VOICE_ACTION_SEND_SMS من Car Messenger إلى المساعد.

نموذج التعليمات البرمجية:

/**
 *   KEY_PHONE_NUMBER - Recipient’s phone number. If this and the recipients name are not
 *   provided by the application, assistant must do contact disambiguation but is not required
 *   to add the name to the PendingIntent.
 *
 *   KEY_RECIPIENT_NAME - Recipient’s name. If this and the recipient phone number are not
 *   provided by the application, assistant must do contact disambiguation but is not required
 *   to add the name to the PendingIntent.
 *
 *   KEY_RECIPIENT_UID - Recipient’s UID in the ContactProvider database. Optionally provided
 *   by the application. Not required to be sent back by the assistant.
 *
 *   KEY_DEVICE_NAME - Friendly name of the device in which to send the message from. If not
 *   provided by the application, assistant must do device disambiguation but is not required
 *   to add it to PendingIntent. In V1 this is required to be sent by the application.
 *
 *   KEY_DEVICE_ADDRESS - Bluetooth device address of the device in which to send the message
 *   from. If not provided by the application, assistant must do device disambiguation and add
 *   this to the PendingIntent. In V1 this is required to be sent by the application.
 *
 *   KEY_SEND_PENDING_INTENT - @NotNull Will always be provided by the application. The
 *   application must preload the pending intent with any KEYs it provides the assistant that
 *   is also needed to send the message. (I.e if the application passes in the
 *   KEY_PHONE_NUMBER in the Bundle, the assistant can assume the application has already put
 *   this in the PendingIntent and may not re-add it to the PendingIntent).
 *
 */
public static final String KEY_PHONE_NUMBER = “KEY_PHONE_NUMBER”;
public static final String KEY_RECIPIENT_NAME = “KEY_RECIPIENT_NAME”;
public static final String KEY_RECIPIENT_UID = “KEY_RECIPIENT_UID”;
public static final String KEY_DEVICE_NAME = “KEY_DEVICE_NAME”;
public static final String KEY_DEVICE_ADDRESS = “KEY_DEVICE_NAME”;
public static final String KEY_SEND_PENDING_INTENT =”KEY_SEND_PENDING_INTENT”;

تعرض هذه الصورة طريقة إنشاء رسالة عند تحديد مستلم:

صفحة جهات الاتصال في تطبيق Dialer الشكل 3. صفحة جهات الاتصال في تطبيق Dialer.

تعرض هذه الصورة طريقة إنشاء رسالة عند عدم تحديد أي مستلم باستخدام رسالة جديدة:

لم يتم اختيار أي مستلم الشكل 4. زر "رسالة جديدة" في تطبيق "مراسلة"

دمج إجراء "الإرسال المباشر للرسائل القصيرة"

في ما يلي مثال على برنامج Dialer الذي يدمج VOICE_ACTION_SEND_SMS، لتقديم طلب المَعلمات:

    /**
     * Build the {@link Bundle} to pass to assistant to send a sms.
     */
    public Bundle buildDirectSendBundle(String number, String name, String uid,
                                        BluetoothDevice device) {
        Bundle bundle = new Bundle();
        bundle.putString(CarVoiceInteractionSession.KEY_ACTION, VOICE_ACTION_SEND_SMS);
        // start optional parameters
        bundle.putString(CarVoiceInteractionSession.KEY_PHONE_NUMBER, number);
        bundle.putString(CarVoiceInteractionSession.KEY_RECIPIENT_NAME, name);
        bundle.putString(CarVoiceInteractionSession.KEY_RECIPIENT_UID, uid);
        // end optional parameters
        bundle.putString(CarVoiceInteractionSession.KEY_DEVICE_ADDRESS, device.getAddress());
        bundle.putString(CarVoiceInteractionSession.KEY_DEVICE_NAME,
                DialerUtils.getDeviceName(mContext, device));
        Intent intent = new Intent(mContext, MessagingService.class)
                .setAction(ACTION_DIRECT_SEND)
                .setClass(mContext, MessagingService.class);

        int requestCode = ACTION_DIRECT_SEND.hashCode();
        PendingIntent pendingIntent = PendingIntent.getForegroundService(
                mContext, requestCode, intent,
                PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE);

        bundle.putParcelable(KEY_SEND_PENDING_INTENT, pendingIntent);
        return bundle;
    }

تحسينات على ميزتَي "تحويل النص إلى كلام" و"الرد المباشر"

تستخدِم واجهة برمجة التطبيقات المعدّلة الآن فئة Conversation متعدّدة الاستخدامات، السماح بعمليات خارج نطاق الإشعارات وتعزيز الإمكانات في سياق التطبيق. ويحل هذا محل المطلب السابق لاستخدام صف واحد (StatusBarNotification).

تصحيح أخطاء مراسلة السيارة

راجِع الأقسام التالية للاطّلاع على مزيد من المعلومات حول تصحيح أخطاء تطبيق Car Messenger.

تصحيح أخطاء اتصالات البلوتوث

  1. شغِّل الأمر dumpsys:

    adb shell dumpsys bluetooth_manager
    
    • ابحث عن MapClientService في ناتج أمر dumpsys.
     Profile: MapClientService
          mCurrentDevice: 99:99 (Pixel XL) name=Mce state=Connected
    
  2. تأكَّد من إدراج الجهاز الصحيح. مثلاً:

    قائمة الأجهزة الشكل 5. قائمة الأجهزة

  3. إذا لم يتم العثور على أي جهاز، نفِّذ أحد الإجراءات التالية:

    • أعِد الاتصال بالبلوتوث.

    أو

    • في إعدادات البلوتوث، تأكَّد من تفعيل رسالة نصية.

    أو

    • على الهاتف، تأكَّد من منح الوصول إلى الرسائل.

تصحيح أخطاء قواعد بيانات البلوتوث

تم إنشاء Car Messenger على قاعدة بيانات الاتصالات الهاتفية. لتحديد ما إذا كانت تقنية البلوتوث لملء قاعدة البيانات هذه، يمكنك استخدام الأوامر الموجودة في الجدول.

المهمة الأمر
المحادثة adb shell content query--uri content://mms-sms/conversations?simple=true
الرسائل القصيرة SMS فقط adb shell content query--uri content://sms
رسائل الوسائط المتعددة/الرسائل القصيرة SMS adb shell content query--uri content://mms-sms/conversations
رسائل الوسائط المتعددة فقط adb shell content query--uri content://mms
بريد رسائل الوسائط المتعددة الوارد فقط adb shell content query--uri content://mms/conversations/inbox
الرسائل المرسلة عبر الرسائل القصيرة SMS فقط adb shell content query--uri content://sms/sent
صندوق بريد الرسائل القصيرة SMS فقط adb shell content query--uri content://sms/conversations/inbox
رسالة الوسائط المتعددة الجزء 1
(استبدال 1 بمعرّف رسالة الوسائط المتعددة)
adb shell content query--uri content://mms/part/1

تصحيح أخطاء ميزة "مراسلة السيارة" وطلبات البحث عن "المساعد الصوتي"

تتم طباعة السجلّات تلقائيًا إذا كانت صورة الإصدار eng أو userdebug. أو لتفعيل تسجيل الدخول في Car Messenger:

  1. تشغيل العلامات ذات الصلة adb shell setprop log.tag.<TAG> DEBUG

  2. فعِّل ميزة تسجيل الدخول إلى مساعد Google الذي تم تحميله مسبقًا.

  3. بالنسبة إلى الأخطاء القابلة للتكرار بشكل كبير، ننصحك باستخدام نقاط التوقف مع Android الاستوديو.