การ์ดสด

เพิ่มใน API ระดับ XE12 แล้ว
ชั้นเรียนสาธารณะ

LiveCard

ชั้นเรียนนี้ช่วยให้คุณสร้างการ์ดที่ใช้งานอยู่และเผยแพร่ในไทม์ไลน์ได้

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างการ์ดแบบสดได้ที่ คู่มือนักพัฒนาซอฟต์แวร์การ์ดแบบสด

อายุการใช้งานของการ์ดแบบสด

การ์ดที่เผยแพร่อยู่จำเป็นต้องมีบริบทที่ยาวนานในการเป็นเจ้าของการ์ดตลอดระยะเวลาที่เป็น เผยแพร่แล้ว คุณจึงควรจัดการรูปภาพเหล่านี้ในเบื้องหลัง Service จากนั้นคุณจะสามารถ เผยแพร่บัตรแบบสดทันทีที่บริการเริ่มทำงาน หรือเพื่อตอบสนองต่อเหตุการณ์อื่นๆ ที่ จอภาพบริการ ในทำนองเดียวกัน คุณควรเลิกเผยแพร่การ์ดเมื่อการ์ดดังกล่าวไม่เกี่ยวข้องอีกต่อไปแล้วหรือเมื่อ บริการจะถูกทำลาย

เมื่อเผยแพร่การ์ดที่เผยแพร่อยู่ คุณจะเลือกได้ว่าการ์ดจะส่งผลกระทบต่อผู้ใช้อย่างไร เมื่อเผยแพร่แบบเงียบ ระบบจะแทรกการ์ดลงในไทม์ไลน์โดยไม่มีเอฟเฟกต์ที่มองเห็นได้ ซึ่งผู้ใช้ต้องปัดเพื่อ เพื่อดูการ์ด นอกจากนี้ คุณยังสามารถแสดงการ์ดสดโดยอัตโนมัติได้ทันทีหลังการแสดง และเผยแพร่แล้ว วิธีนี้มักจะมีประโยชน์เมื่ออินเทอร์เฟซผู้ใช้หลักของแอปพลิเคชันคือการ์ดแบบสด และไม่ใช่กิจกรรมใดๆ

การแสดงเนื้อหาในการ์ดแบบสด

การ์ดแบบสดสามารถแสดงเนื้อหาจากทรัพยากรที่มีเลย์เอาต์หรือโดยการอนุญาตให้แสดงผลโค้ด ลงบนพื้นผิวภาพวาดโดยตรง เลือกวิธีที่เหมาะกับแอปพลิเคชันของคุณมากที่สุด เกี่ยวกับความถี่ที่คุณต้องอัปเดตเนื้อหาบนการ์ดและ การแสดงผลเป็นหลัก วิดเจ็ต หรือกราฟิก รูปแบบอิสระ

การขยายเลย์เอาต์โดยใช้มุมมองระยะไกล

หากแอปพลิเคชันของคุณต้องการเฉพาะวิดเจ็ตมาตรฐานและการอัปเดตนานๆ ครั้ง (ประมาณ 2-3 วินาที หรือ ระหว่างการรีเฟรชแต่ละครั้ง) จากนั้นจึงสร้างการ์ดโดยรับความช่วยเหลือจากชั้นเรียน 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 เมธอดในการเริ่มและหยุดตรรกะการแสดงผลเมื่อการ์ด ซ่อนหรือซ่อนไว้

โปรดทราบว่าเมธอด Callback ของตัวยึดตำแหน่งจะไม่มีการเรียกใช้ในเทรด UI หลัก

การจัดการการเลือกบัตรแบบเรียลไทม์

การ์ดแบบสดต้องมีการดำเนินการ (PendingIntent เพื่อเริ่มกิจกรรม บริการ หรือทำการเผยแพร่) ที่จะถูกดำเนินการเมื่อผู้ใช้แตะเพื่อเลือกการ์ด โดยปกติคุณจะใช้การทำงานนี้เพื่อเริ่มกิจกรรมที่แสดงเมนูตัวเลือกหรือดำเนินการ ผู้ใช้ในส่วนอื่นของแอปพลิเคชัน อย่างน้อยที่สุด คุณควรระบุตัวเลือก ซึ่งช่วยให้ผู้ใช้นำการ์ดที่เผยแพร่อยู่ออกจากไทม์ไลน์ได้

     LiveCard liveCard; // initialized elsewhere
     Intent intent = new Intent(context, MyActivity.class);
     liveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
 

ระบบจะไม่แสดงการ์ดแบบสดที่ไม่มีการดำเนินการ

ชั้นเรียนที่ซ้อนกัน
enum LiveCard.PublishMode กำหนดวิธีการแสดงการ์ดแก่ผู้ใช้เมื่อเผยแพร่
ค่าคงที่
String EXTRA_FROM_LIVECARD_VOICE บูลีนเอ็กซ์ตราที่แสดง Intent มีการเปิดใช้งานด้วยเสียงจากการ์ดแบบสด
ผู้รับเหมาก่อสร้าง
LiveCard(บริบท Context, แท็ก String)
วิธีการสาธารณะ
LiveCard
attach(บริการ Service)
SurfaceHolder
boolean
เป็นโมฆะ
เป็นโมฆะ
LiveCard
LiveCard
setDirectRenderingEnabled(เปิดใช้บูลีน)
LiveCard
setRenderer(ตัวแสดงผล GlRenderer)
LiveCard
setViews(มุมมอง RemoteViews)
LiveCard
setVoiceActionEnabled(เปิดใช้บูลีน)
เป็นโมฆะ
เมธอดที่รับมา

ค่าคงที่

เพิ่มใน API ระดับ XE21 แล้ว

สาธารณะ คงที่ รอบชิงชนะเลิศ สตริง EXTRA_FROM_LIVECARD_VOICE

บูลีนเอ็กซ์ตราที่แสดง Intent มีการเปิดใช้งานด้วยเสียงจากการ์ดแบบสด

มูลค่าคงที่: "android.intent.extra.EXTRA_FROM_LIVECARD"

ผู้รับเหมาก่อสร้าง

เพิ่มใน API ระดับ XE16 แล้ว

สาธารณะ LiveCard (บริบทบริบท, แท็ก สตริง)

สร้างการ์ดที่เผยแพร่อยู่ซึ่งมีแท็กที่ระบุ

โปรดทราบว่าการ์ดจะไม่ปรากฏจนกว่าจะมีการเผยแพร่อย่างชัดเจน

พารามิเตอร์
บริบท บริบทของแอปพลิเคชัน
แท็ก แท็กที่ไม่ใช่ค่าว่างสำหรับการ์ด มีไว้เพื่อแก้ไขข้อบกพร่อง

วิธีการสาธารณะ

เพิ่มใน API ระดับ XE16 แล้ว

สาธารณะ LiveCard แนบ (บริการ)

แนบ Service ในเบื้องหลังเพื่อให้เมื่อการ์ดนี้ได้รับ เผยแพร่แล้ว ระบบจะตั้งค่าบริการที่ระบุให้ทำงานในเบื้องหน้า

ระบบจะนำบริการออกจากเบื้องหน้าโดยอัตโนมัติ เลิกเผยแพร่การ์ดที่เผยแพร่อยู่แล้ว

พารามิเตอร์
บริการ จะทํางานใน foregound
การคืนสินค้า
  • ออบเจ็กต์นี้สำหรับเชนการเรียก
เพิ่มใน API ระดับ XE12 แล้ว

สาธารณะ SurfaceHolder getSurfaceHolder ()

เมื่อเปิดใช้การแสดงผลโดยตรง ให้สิทธิ์เข้าถึง Surface ที่จะวาด

โปรดทราบว่า SurfaceHolder ที่ส่งคืนควรนำไปใช้เป็นวิธีเข้าถึง แพลตฟอร์มที่มีการจัดการ วิธีการปรับเปลี่ยนรูปร่างและประเภทของพื้นผิวนั้นไม่มีการดำเนินการ

โปรดทราบว่า Callback สำหรับออบเจ็กต์นี้ไม่ได้เกิดขึ้นในเธรด UI

ดูเพิ่มเติม
เพิ่มใน API ระดับ XE12 แล้ว

สาธารณะ บูลีน isPublished ()

แสดงผล true หากเผยแพร่การ์ดอยู่ในขณะนี้

เพิ่มใน API ระดับ XE16 แล้ว

สาธารณะ เป็นโมฆะ ไปยังที่ต่างๆ ()

ส่งผู้ใช้ไปยังการ์ดนี้ในไทม์ไลน์

การขว้าง
IllegalStateException หากการ์ดไม่ได้รับการเผยแพร่
เพิ่มใน API ระดับ XE12 แล้ว

สาธารณะ เป็นโมฆะ เผยแพร่ (โหมด LiveCard.PublishMode)

เผยแพร่การ์ดนี้ในไทม์ไลน์

การ์ดจะแสดงเมื่อมีการดำเนินการ และเปิดใช้การแสดงผลโดยตรง หรือ ตั้งค่ามุมมองระยะไกลแล้ว

พารามิเตอร์
โหมด กำหนดวิธีการแสดงการ์ดแก่ผู้ใช้
เพิ่มใน API ระดับ XE12 แล้ว

สาธารณะ LiveCard setAction (PendingIntent Intent)

เปลี่ยนการดำเนินการเมื่อเลือกการ์ด

พารามิเตอร์
Intent จะเริ่มทำงานเมื่อเลือกการ์ด
การคืนสินค้า
  • ออบเจ็กต์นี้สำหรับเชนการเรียก
เพิ่มใน API ระดับ XE12 แล้ว

สาธารณะ LiveCard setDirectRenderingEnabled (เปิดใช้บูลีน)

เปิดใช้งานการแสดงผลโดยตรง

ในโหมดนี้ เนื้อหาการ์ดจะต้องแสดงผลใน Surface โดยตรง

โปรดทราบว่าจะเรียกใช้วิธีการนี้ได้ต่อเมื่อบัตรไม่ได้เผยแพร่อยู่เท่านั้น และจะไม่มีการเผยแพร่ ส่งข้อยกเว้น

พารามิเตอร์
เปิดใช้ ควรเปิดใช้การแสดงผลโดยตรงหรือไม่
การคืนสินค้า
  • ออบเจ็กต์นี้สำหรับเชนการเรียก
ดูเพิ่มเติม
เพิ่มใน API ระดับ XE16 แล้ว

สาธารณะ LiveCard setRenderer (GlRenderer)

เพิ่มตัวแสดงผลที่ใช้ OpenGL

โหมดแสดงภาพจะถูกใช้ในการวาดบนพื้นผิวที่ขอ (โดยอัตโนมัติ) สำหรับพื้นผิวโดยตรง ในการแสดงภาพ

การคืนสินค้า
  • ออบเจ็กต์นี้สำหรับเชนการเรียก
เพิ่มใน API ระดับ XE12 แล้ว

สาธารณะ LiveCard setViews (RemoteViews การดู)

เปลี่ยน RemoteViews ที่ใช้เพื่อแสดง UI ของการ์ดนี้

ควรเรียกเมธอดนี้หลังจากทำการเปลี่ยนแปลงโดยตรงกับมุมมองระยะไกลของ การ์ดที่เผยแพร่แล้ว หรือการเปลี่ยนแปลงเหล่านั้นจะไม่แสดงในไทม์ไลน์

วิธีนี้ไม่มีผลหากเปิดใช้การแสดงผลโดยตรง

พารามิเตอร์
การดู UI ของการ์ด
การคืนสินค้า
  • ออบเจ็กต์นี้สำหรับเชนการเรียก
ดูเพิ่มเติม
เพิ่มใน API ระดับ XE21 แล้ว

สาธารณะ LiveCard setVoiceActionEnabled (เปิดใช้บูลีน)

เปิดใช้การสั่งงานด้วยเสียงเมื่อการ์ดแสดงในไทม์ไลน์

เมื่อตั้งค่าแล้ว การ์ดจะคอยตรวจจับว่า "Ok Glass" เมื่อแสดงในไทม์ไลน์ เมื่อมีการพูดวลีป้องกันนี้ จะเรียกให้ความตั้งใจที่ตั้งไว้โดย setAction(PendingIntent) วิธี หาก Intent เริ่มต้น ที่ใช้เมนูเสียงตามบริบท กิจกรรมดังกล่าวจะ เปิดรายการในเมนูแรก (เช่น มีการพูดคำว่า "Ok Glass" ในกิจกรรม เอง) ฟีเจอร์นี้ช่วยให้สามารถใช้เมนูเสียงตามบริบทในการ์ดแบบสด

พารามิเตอร์
เปิดใช้ ควรเปิดใช้การสั่งงานด้วยเสียงไหม
การคืนสินค้า
  • ออบเจ็กต์นี้สำหรับเชนการเรียก
ดูเพิ่มเติม
เพิ่มใน API ระดับ XE12 แล้ว

สาธารณะ เป็นโมฆะ เลิกเผยแพร่ ()

ยกเลิกการเผยแพร่การ์ดนี้จากไทม์ไลน์