يوفّر تطبيق Car Messenger إمكانات المراسلة المصمّمة للأجهزة المخصّصة للسيارات. مثل تطبيقات السيارات الأخرى، يبدأ المستخدمون تطبيق Car Messenger من مشغّل التطبيقات.
ما هي الميزات الجديدة في تطبيق Car Messenger؟
باستخدام تطبيق Car Messenger الجديد، يمكن للسائقين إجراء ما يلي:
- الحصول على تجربة مراسلة مخصّصة
- افتح تطبيق Car Messenger من مشغّل التطبيقات.
- تصفُّح الرسائل التي تم استلامها قبل رحلة وخلالها
- الاستماع إلى الرسائل والرد عليها
- تجاهل إشعارات الرسائل
- بدء محادثات جديدة.
المصطلحات
تم استخدام هذه المصطلحات في هذه الصفحة:
مزايا التطبيقات غير المجمّعة
تقدّم التطبيقات غير المجمّعة، مثل Car Messenger، المزايا التالية:
- استخدام الطرق العامة فقط (بدون أي تبعيات للنظام الأساسي على واجهات برمجة التطبيقات المخفية)
- تطوير التطبيقات خارج نظام Android الأساسي
- تفعيل الإصدارات المتكرّرة (للميزات الجديدة والمشاكل التي تم حلّها)
- تحديث التطبيقات من خلال Google Play
مزيد من المعلومات عن التطبيقات غير المجمّعة
التفاصيل الفنية
يوضّح هذا القسم بنية Car Messenger. لمزيد من المعلومات، يُرجى الاطّلاع على الدمج مع CarVoiceInteractionSession.
البنية المستندة إلى خدمات الهاتف
عند الإقران عبر البلوتوث، تتم مزامنة البيانات من قاعدة بيانات تكنولوجيا الهاتف في الهاتف إلى قاعدة بيانات تكنولوجيا الهاتف في السيارة. عند إيقاف الاتصال عبر البلوتوث، يتم حذف البيانات المتزامنة من قاعدة بيانات الاتّصال الهاتفي في السيارة.
تم طرح هذه الميزة في Android 12. تشمل المزايا الأساسية ما يلي:
- يمكن استرداد رسائل المستخدمين المجمّعة من قاعدة بيانات.
- تتوفّر الرسائل من مساحات التخزين السحابي السابقة.
- يستخدم بنية وواجهة برمجة تطبيقات مشابهة لتخزين الرسائل القصيرة واستردادها على هواتف 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.
في ما يلي الإجراءات التي نتّخذها بشأن البيانات:
الشكل 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.
في ما يلي تسلسل الأحداث:
يشغِّل تطبيق Car Messenger "مساعد Google" من خلال الاتصال بالرقم
activity.showAssist(Bundle args)
. تحتوي args على إجراء واجهة برمجة التطبيقات ومَعلماته المطلوبة، التي تحتوي على intent معلّق إذا لزم الأمر.يسترجع "مساعد Google" إدخال المستخدم إذا لزم الأمر، ويُجمِّعه مع الطلب المعلّق.
يُرسِل "مساعد Google" الطلب مرة أخرى إلى Car Messenger.
تحلّ ميزة Car Messenger إجراء واجهة برمجة التطبيقات.
وضع علامة كإجراء واجهة برمجة التطبيقات مقروء
عندما يقرأ "مساعد Google" رسالة، يتم إرسال PendingIntent
إلى Car
Messenger مع الإجراء VOICE_ACTION_READ_NOTIFICATION
أو
VOICE_ACTION_READ_CONVERSATION
لوضع علامة "مقروءة" على الرسالة.
إجراء Direct Reply API
عندما يردّ "مساعد Google" على رسالة، يتم إرسال PendingIntent
إلى Car
Messenger مع الإجراء VOICE_ACTION_REPLY_NOTIFICATION
و
VOICE_ACTION_REPLY_CONVERSATION
للردّ على المحادثة.
إجراء Direct Send SMS API
يتم إرسال حزمة بالإجراء VOICE_ACTION_SEND_SMS
من مراسلة السيارة إلى
المساعد.
نموذج التعليمات البرمجية:
/**
* 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”;
تعرض هذه الصورة إنشاء رسالة عند اختيار مستلِم:
الشكل 3: صفحة "جهات الاتصال" في تطبيق "برنامج الاتصال"
تعرض هذه الصورة إنشاء رسالة بدون اختيار مستلِم باستخدام رسالة جديدة:
الشكل 4. زر "رسالة جديدة" في تطبيق Messenger
دمج إجراء "إرسال رسالة قصيرة مباشرةً"
في ما يلي مثال على تطبيق "أداة الاتصال" الذي يُدمج 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
راجِع الأقسام التالية للاطّلاع على مزيد من المعلومات حول تصحيح أخطاء تطبيق Car Messenger.
تصحيح أخطاء عمليات الاتصال عبر البلوتوث
نفِّذ الأمر
dumpsys
:adb shell dumpsys bluetooth_manager
- ابحث عن
MapClientService
في ناتج الأمر dumpsys.
Profile: MapClientService mCurrentDevice: 99:99 (Pixel XL) name=Mce state=Connected
- ابحث عن
تأكَّد من أنّ الجهاز الصحيح مُدرَج. مثلاً:
الشكل 5. قائمة الأجهزة
إذا لم يتم العثور على أي جهاز، عليك تنفيذ أحد الإجراءات التالية:
- إعادة الاتصال بالبلوتوث
أو
- في إعدادات البلوتوث، تأكَّد من تفعيل الرسالة النصية.
أو
- على الهاتف، تأكَّد من منح إذن الوصول إلى الرسائل.
تصحيح أخطاء قواعد بيانات البلوتوث
تم إنشاء تطبيق Car Messenger استنادًا إلى قاعدة بيانات الهاتف. لتحديد ما إذا كانت تقنية البلوتوث تتمثّل في ملء قاعدة البيانات هذه، يمكنك استخدام الأوامر الواردة في الجدول.
المهمة | الأمر |
---|---|
المحادثة | adb shell content query--uri content://mms-sms/conversations?simple=true |
الرسائل القصيرة فقط | 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 |
الرسائل المُرسَلة عبر الرسائل القصيرة فقط | 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 |
تصحيح أخطاء طلبات البحث الصوتي وCar Messenger
تتم طباعة السجلات تلقائيًا إذا كانت صورة الإصدار هي eng
أو userdebug
.
أو لتفعيل تسجيل الدخول في Car Messenger:
أجرِ عملية البحث عن العلامات ذات الصلة
adb shell setprop log.tag.<TAG> DEBUG
.فعِّل التسجيل في مساعد Google المُحمَّل مُسبَقًا.
بالنسبة إلى الأخطاء التي يمكن إعادة إنتاجها بسهولة، ننصحك باستخدام نقاط التوقف مع استوديو Android.