بطاقة مباشرة
يتيح لك هذا الصف إنشاء بطاقات نشطة ونشرها على المخطط الزمني.
للحصول على المزيد من المعلومات حول كيفية إنشاء بطاقات بث مباشر، يُرجى مراجعة دليل مطوّري برامج البطاقات المباشرة.
عمر البطاقة المباشرة
تتطلّب البطاقات المباشرة سياقًا قديمًا لامتلاكها طوال وقت نشرها، لذا يجب إدارتها في الخلفية Service
. ويمكنك بعد ذلك نشر بطاقة منشورة فور بدء الخدمة أو استجابة لأحداث أخرى تراقبها الخدمة. وبالمثل، يجب إلغاء نشر البطاقات عندما تصبح غير ذات صلة أو عندما يتم إتلاف الخدمة.
وعند نشر بطاقة بث مباشر، يمكنك اختيار كيفية تأثير ذلك على المستخدمين. وعند النشر بشكل غير ملحوظ، سيتم إدراج البطاقة في المخطط الزمني بدون أي تأثير مرئي: على المستخدمين التمرير سريعًا إلى البطاقة لرؤيتها. يمكنك أيضًا عرض البطاقة المباشرة تلقائيًا بعد نشرها مباشرةً. وغالبًا ما يكون ذلك مفيدًا عندما تكون واجهة المستخدم الرئيسية لتطبيقك بطاقة مباشرة وليست نشاطًا.
عرض المحتوى على بطاقة مباشرة
يمكن للبطاقة المباشرة عرض المحتوى إما من مورد تنسيق أو عن طريق السماح للشفرة بالعرض مباشرة على سطح الرسم. اختَر الطريقة الأنسب لتطبيقك استنادًا إلى معدّل تحديث المحتوى على البطاقة وما إذا كنت تعرض في الأساس الأدوات أو الرسومات ذات التصميم المرن.
تضخيم تنسيق باستخدام طرق العرض عن بُعد
إذا كان تطبيقك لا يتطلّب سوى الأدوات العادية والتحديثات غير المتكرّرة (بضع ثوانٍ أو أكثر بين عمليات إعادة التحميل)، يمكنك إنشاء بطاقتك بمساعدة الصف RemoteViews
.
يتيح كائن RemoteViews
المخطط الزمني لـ Glass، الذي يتم تشغيله في عملية منفصلة عن
رمز التطبيق، تضخيم التخطيط الذي أنشأته.
LiveCard liveCard; // initialized elsewhere RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_layout); liveCard.setViews(views);
ملاحظة: بعد نشر بطاقة تستخدم RemoteViews
، لن تظهر التغييرات التي تم إجراؤها على طرق العرض من خلال طلب طرق set*
في المخطط الزمني إلا إذا طلبت setViews
صراحةً على البطاقة المنشورة مجددًا لفرض إجراء تعديل.
الرسم مباشرةً على سطح البطاقة المباشرة
إذا كان تطبيقك يتطلب تحديثات أكثر تكرارًا (عدة مرات في الثانية) أو يعرض رسومات أكثر تفصيلاً من تلك التي تتوافق مع الأدوات القياسية، يمكنك تفعيل العرض المباشر وإضافة SurfaceHolder.Callback
إلى سطح البطاقة.
LiveCard liveCard; // initialized elsewhere liveCard.setDirectRenderingEnabled(true); liveCard.getSurfaceHolder().addCallback(callback);
يمكنك بعد ذلك الرسم مباشرةً على السطح داخل سلسلة محادثات في الخلفية أو استجابة لأحداث خارجية (مثل تعديلات أجهزة الاستشعار أو المواقع الجغرافية). استخدِم طريقتَي surfaceCreated
وsurfaceDestroyed
لبدء منطق العرض وإيقافه عند عرض البطاقة أو إخفائها.
لاحظ أنه لا يتم استدعاء طرق معاودة الاتصال لمالك السطح في سلسلة محادثات واجهة المستخدم الرئيسية.
التعامل مع اختيار البطاقة المباشرة
يجب أن تقدّم البطاقة المباشرة إجراءً (PendingIntent
لبدء نشاط أو خدمة أو تنفيذ عملية بث) والتي سيتم تنفيذها عندما ينقر المستخدم لاختيار البطاقة.
ستستخدم عادةً هذا الإجراء لبدء نشاط يعرض قائمة خيارات أو ينقل المستخدم إلى جزء آخر من تطبيقك. يجب توفير خيار يتيح للمستخدم إزالة البطاقة المباشرة من المخطط الزمني على أقلّ تقدير.
LiveCard liveCard; // initialized elsewhere Intent intent = new Intent(context, MyActivity.class); liveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
لن يتم عرض البطاقات المباشرة التي ليس لها إجراء.
فصول متداخلة | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
تعداد | وضع LiveCard.Publish | يحدِّد هذا الإعداد طريقة عرض البطاقة على المستخدم عند نشرها. |
الثوابت | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
سلسلة | EXTRA_FROM_LIVECARD_VOICE | قيمة منطقية إضافية تشير إلى تفعيل Intent باستخدام الصوت من بطاقة مباشرة. |
الشركات المصنِّعة العامة | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
الطرق العامة | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
بطاقة مباشرة | |||||||||||
Surfaceholder | |||||||||||
منطقي | |||||||||||
لاغي |
navigate()
|
||||||||||
لاغي | |||||||||||
بطاقة مباشرة | |||||||||||
بطاقة مباشرة |
setDirectRenderingEnabled(تفعيل منطقي)
|
||||||||||
بطاقة مباشرة |
setRenderer(جهاز عرض GlRenderer)
|
||||||||||
بطاقة مباشرة |
setViews (طرق عرض RemoteViews)
|
||||||||||
بطاقة مباشرة |
setVoiceActionEnabled(تفعيل منطقي)
|
||||||||||
لاغي |
الطرق المكتسبة | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
الثوابت
الشركات المصنِّعة العامة
الطرق العامة
public LiveCard إرفاق (خدمة الخدمة)
أرفق خلفية Service
بحيث يتم نشر الخدمة المحدّدة في المقدمة عند نشر هذه البطاقة.
وستتم إزالة الخدمة تلقائيًا من المقدّمة عند إلغاء نشر هذه البطاقة المباشرة.
المعلَمات
الخدمة | سيتم تعيينه ليتم عرضه في المقدمة |
---|
المرتجعات
- هذا الكائن لتسلسل المكالمات
public Surfaceholder getSurfaceholder ()
عند تفعيل العرض المباشر، يتم منح إذن الوصول إلى Surface
للرسم عليه.
يُرجى العِلم أنّه يجب استخدام السمة SurfaceHolder
التي تم إرجاعها كوسيلة للوصول إلى السطح المُدار. طرق تغيير الشكل ونوع السطح هي عمليات مستقلة.
لاحظ أيضًا أن استدعاءات هذا الكائن لا يتم إجراؤها في سلسلة واجهة المستخدم.
انظر أيضًا
public قيمة منطقية isPublished ()
لعرض true
إذا كانت البطاقة منشورة حاليًا.
public void التنقل ()
لإرسال المستخدم إلى هذه البطاقة في المخطط الزمني.
الرميات
LegalStateException | إذا لم يتم نشر البطاقة |
---|
public void publish (LiveCard.PublishMode)
لنشر هذه البطاقة في المخطط الزمني.
لن يتم عرض البطاقة إلا إذا كانت تحتوي على إجراء، وفي حال تفعيل العرض المباشر أو ضبط عروض عن بُعد.
المعلَمات
الوضع | تحديد كيفية عرض البطاقة للمستخدم |
---|
public LiveCard setAction (PendingIntent intent)
لتغيير الإجراء الذي يتم اتخاذه عند تحديد البطاقة.
المعلَمات
intent | سيتم تنشيطها عند تحديد البطاقة |
---|
المرتجعات
- هذا الكائن لتسلسل المكالمات
public LiveCard setDirectRenderingEnabled (تفعيل منطقي)
لتفعيل العرض المباشر.
في هذا الوضع، يجب عرض محتوى البطاقة مباشرة في Surface
.
ملاحظة: لا يمكن استدعاء هذه الطريقة إلا عند عدم نشر البطاقة، ما يؤدي إلى استثناء.
المعلَمات
تفعيل | لتحديد ما إذا كان يجب تمكين العرض المباشر أم لا |
---|
المرتجعات
- هذا الكائن لتسلسل المكالمات
انظر أيضًا
public LiveCard setRenderer (عارض GlRenderer)
لإضافة عارض مستند إلى OpenGL.
سيتم استخدام العارض للرسم على سطح مطلوب (تلقائيًا) للعرض المباشر.
المرتجعات
- هذا الكائن لتسلسل المكالمات
public LiveCard setViews (مشاهدة المشاهدات عن بُعد)
لتغيير RemoteViews
المستخدمة لعرض واجهة المستخدم لهذه البطاقة.
يجب استدعاء هذه الطريقة أيضًا بعد إجراء أي تغييرات مباشرة على طرق العرض عن بُعد لبطاقة منشورة، وإلا فلن تظهر تلك التغييرات في المخطط الزمني.
ليس لهذه الطريقة أي تأثير في حالة تمكين العرض المباشر.
المعلَمات
مشاهدة | واجهة مستخدم البطاقة |
---|
المرتجعات
- هذا الكائن لتسلسل المكالمات
انظر أيضًا
public LiveCard setVoiceActionEnabled (تفعيل منطقي)
تفعيل إجراء صوتي عند عرض البطاقة في المخطط الزمني.
عند ضبط هذه العبارة، تستمع البطاقة إلى عبارة "OK Glass" عند عرضها على المخطط الزمني، وعندما
تنطق هذه العبارة المشددة، تُنشِّط الهدف الذي تم ضبطه من خلال
طريقة setAction(PendingIntent)
. في حال بدء الهدف من تنفيذ نشاط يستخدم قوائم صوتية سياقية، سيتم فتح النشاط تلقائيًا على عناصر القائمة الأولى (أي كما لو تم قول "OK Glass" داخل النشاط
نفسه). تتيح هذه الميزة تنفيذ قوائم صوتية سياقية على البطاقات المباشرة.
المعلَمات
تفعيل | ما إذا كان يجب تفعيل الإجراء الصوتي |
---|
المرتجعات
- هذا الكائن لتسلسل المكالمات
انظر أيضًا
public void إلغاء النشر ()
إلغاء نشر هذه البطاقة من المخطط الزمني.