تتوفّر أنواع مختلفة من نظارات الصوت ونظارات العرض، ولكل منها إمكانات مختلفة. على سبيل المثال، في حين أنّ جميع النظارات الصوتية والنظارات المزودة بشاشة توفّر تجارب صوتية من خلال الصوت، فإنّ النظارات المزودة بشاشة فقط تتضمّن شاشة يمكن لتطبيقك عرض واجهات المستخدم التي تم إنشاؤها باستخدام Jetpack Compose Glimmer عليها.
لإنشاء تجربة مستخدم سلسة على مجموعة من الأجهزة، خطِّط Activity للنظّارة الذكية للتحقّق من إمكانات الأجهزة المختلفة. ويبسّط هذا الأسلوب عملية التطوير من خلال السماح لك بإنشاء نشاط واحد يتكيّف سلوكه، بدلاً من أنشطة متعدّدة تستهدف أجهزة معيّنة.
فهم دورة حياة الأنشطة المتوقّعة
لا يتم تشغيل النشاط الذي تنشئه لنظارات الصوت والنظارات المزودة بشاشة عرض مباشرةً على الجهاز، بل يتم عرضه على الجهاز من جهاز مضيف (مثل هاتف المستخدم). الأنشطة المخصّصة التي تنشئها لهذا الغرض هي أنشطة متوقّعة. تستند دورة حياة الأنشطة المعروضة على الشاشة إلى دورة حياة الأنشطة العادية، ولكنها تتضمّن أيضًا العديد من الاختلافات الرئيسية التي تتيح إمكانات أنواع مختلفة من النظارات الصوتية والنظارات المزودة بشاشة.
في ما يلي تفصيل للأحداث الرئيسية، مع توضيح للتفاعلات الخاصة بالأنشطة التي يتم عرضها على النظارات الصوتية والنظارات المزودة بشاشة:
onCreate()- يتم استدعاء هذه الطريقة عند إنشاء النشاط المتوقّع.
- يمكنك هنا تهيئة واجهة مستخدم Glimmer في Jetpack Compose ومكوّنات أخرى لتطبيقك.
onStart()- يتم استدعاء هذه الطريقة عند بدء النشاط المعروض ويكون المستخدم على دراية بالتطبيق.
onResume()- يتم استدعاؤه عندما يستعيد النشاط المعروض التركيز. عندما يكون النشاط محل التركيز، يمكن التفاعل معه ويمكنه تلقّي إدخالات من لوحة اللمس أو الأزرار.
- يتم استدعاء هذا الإجراء عند إعادة وضع النظارات على الرأس (ارتداؤها) بعد أن تم خلعها سابقًا.
onPause()- يتم استدعاء هذا الإجراء عندما يفقد النشاط المعروض التركيز، ولكن يظل المستخدم على دراية بتطبيقك. وعندما يكون النشاط خارج نطاق التركيز، لا يمكن التفاعل معه ويتوقف عن تلقّي الإدخال.
onStop()- يتم استدعاء هذه الطريقة عندما يرى النظام أنّ المستخدم لم يعُد على دراية بتطبيقك.
- يتم استدعاء هذه الطريقة عند إزالة النظارات من الرأس (خلعها).
onDestroy()- يتم استدعاء هذه الطريقة عندما يكون النشاط المعروض على وشك أن يتم إيقافه. عند استدعاء هذا الإجراء، يحرر النظام جميع الموارد المرتبطة بالنشاط.
فهم كيفية تأثير حالة العرض في مراحل النشاط المتوقّعة
في Activity عادي، تتغيّر حالة مراحل النشاط عند إيقاف شاشة الجهاز، وعادةً ما تنتقل إلى onPause() أو onStop(). في المقابل، لا تتغيّر مراحل النشاط المعروض على النظارة عند تشغيل شاشة النظارة أو إيقافها. ويعني هذا السلوك أنّ النشاط المعروض على النظارة يستمر في العمل في الحالة Started أو Resumed حتى عندما تكون الشاشة مطفأة، ما يتيح استمرار تجارب الصوت في تطبيقك بدون انقطاع.
تتصرّف تغييرات حالة النشاط الأخرى التي يتم تشغيلها من خلال أحداث مختلفة للنظام والمستخدمين بالطريقة المعتادة.
فهم تأثير مستوى وعي المستخدم في نشاطك المتوقّع
يمكن للمستخدم أن يكون على دراية بنشاطك المتوقّع حتى إذا لم يكن مرئيًا. تشير الوعي إلى جميع الطرق التي يمكن للمستخدم من خلالها استشعار تجارب تطبيقك والتفاعل معها، بما في ذلك ما يلي:
- الاستماع إلى الصوت أو الملاحظات الصوتية أو الإشارات الصوتية الأخرى
- إجراءات التطبيق التي تؤدي إلى تشغيل مؤشر LED للمستخدم، مثل مؤشر الخصوصية إذا كان تطبيقك يصل إلى الكاميرا أو الميكروفون
في الحالات التالية، يكون المستخدم على دراية بأنّ نظارات الصوت والنظارات المزودة بشاشة نشطة وتستجيب، حتى إذا لم يكن ينظر إلى الشاشة:
- تعني حالة
onStart()للأنشطة المتوقّعة أنّ النشاط نشط. - تعني الحالة
onResume()أنّ النشاط تفاعلي ويمكنه تلقّي إدخال من لوحة اللمس أو أنّه يتلقّى عملية إرسال الإدخال الأساسي.
وطالما أنّ المستخدم على دراية بتطبيقك، سيظل نشاطك نشطًا ويعمل في المقدّمة. إذا لم يرصد النظام أي إشارات تفيد بأنّ المستخدم على دراية بالنشاط لفترة قصيرة من الوقت، سيزيل النظام النشاط من المقدّمة وسيؤدي في النهاية إلى تشغيل onStop().
فهم الأنشطة المتوقّعة والسياقات المتوقّعة
تُعامل النظارات الصوتية والنظارات المزودة بشاشة على أنّها أجهزة متصلة توسّع إمكانات هاتف المستخدم. السياق المُسقَط هو Context مدرِك للجهاز يتيح للتطبيقات التفاعل مع الأجهزة المتصلة بنظارات ذكية، مثل أدوات الاستشعار أو الكاميرا أو الميكروفون، بدلاً من الأجهزة المتصلة بالهاتف. أثناء تطوير تجارب للنظارات الصوتية والنظارات المزودة بشاشة، يجب أن يستخدم تطبيقك سياقًا معروضًا للوصول إلى أجهزة النظارات.
يمكن منح سياق متوقّع لتطبيقك تلقائيًا استنادًا إلى سياق نشاط الاتصال:
بالنسبة إلى الأنشطة المسقطة: إذا كان رمز تطبيقك يعمل من داخل نشاطك المسقَط، يكون سياق النشاط الخاص به سياقًا مسقَطًا. في هذا السيناريو، يمكن للمكالمات التي يتم إجراؤها ضمن هذا النشاط الوصول إلى أجهزة النظارات الذكية.
بالنسبة إلى تطبيقات أو خدمات الهاتف: إذا كان جزء من تطبيقك خارج نطاق النشاط المتوقّع (مثل نشاط الهاتف أو الخدمة) يحتاج إلى الوصول إلى أجهزة النظارات، يجب أن يحصل صراحةً على سياق متوقّع. لإجراء ذلك، استخدِم طريقة
createProjectedDeviceContext().
لمزيد من المعلومات، يُرجى الاطّلاع على استخدام سياق معروض للوصول إلى الأجهزة على النظّارات الذكية الصوتية والنظّارات الذكية المزودة بشاشة عرض.
التعرّف على واجهات برمجة التطبيقات التي تراعي الأجهزة
تغيّر بعض واجهات برمجة التطبيقات العادية في Android الأجهزة التي يمكنها الوصول إلى أجزاء الجهاز استنادًا إلى Context للنشاط الذي يتم استدعاؤه. عندما تتلقّى واجهات برمجة التطبيقات هذه سياقًا معروضًا، فإنّها تصل إلى أجهزة النظارات بدلاً من أجهزة الهاتف المضيف:
CameraManager: للوصول إلى الكاميرا على النظاراتSensorManager: لاسترداد بيانات أجهزة الاستشعار (مثل بيانات الجيروسكوب أو مقياس التسارع) من النظاراتAudioManager: لإدارة تدفقات الصوت ومستوى الصوت والتوجيه على النظاراتAudioRecord: لالتقاط الصوت باستخدام ميكروفون النظارات