Kartu Live

Ditambahkan di API level XE12
kelas publik

Kartu Live

Dengan class ini, Anda dapat membuat kartu aktif dan memublikasikannya di linimasa.

Untuk informasi selengkapnya tentang cara membuat kartu live, lihat panduan developer Kartu live.

Masa aktif kartu live

Kartu live memerlukan konteks yang berjalan lama untuk memilikinya sepanjang waktu dipublikasikan, jadi Anda harus mengelolanya di Service latar belakang. Selanjutnya, Anda dapat memublikasikan kartu live segera setelah layanan dimulai atau sebagai respons terhadap peristiwa lain yang dipantau layanan. Demikian pula, Anda harus membatalkan publikasi kartu setelah kartu tidak lagi relevan atau saat layanan dihancurkan.

Saat memublikasikan kartu aktif, Anda dapat memilih pengaruhnya terhadap pengguna. Saat memublikasikan video secara otomatis, kartu akan dimasukkan ke dalam linimasa tanpa efek yang terlihat: pengguna harus menggeser ke kartu untuk melihatnya. Anda juga dapat menyetel kartu aktif secara otomatis tepat setelah kartu dipublikasikan. Hal ini sering kali berguna jika antarmuka pengguna utama aplikasi Anda adalah kartu aktif dan bukan aktivitas.

Menampilkan konten di kartu live

Kartu live dapat menampilkan konten dari resource tata letak atau dengan mengizinkan kode dirender langsung ke permukaan gambarnya. Pilih metode yang paling sesuai untuk aplikasi Anda berdasarkan seberapa sering Anda perlu mengupdate konten pada kartu dan apakah Anda merender widget atau grafik bentuk bebas secara umum.

Meluaskan tata letak menggunakan tampilan jarak jauh

Jika aplikasi Anda hanya memerlukan widget standar dan update yang jarang (sekitar beberapa detik atau lebih lama antara refresh), maka buat kartu Anda dengan bantuan class RemoteViews. Objek RemoteViews memungkinkan linimasa Glass, yang berjalan dalam proses terpisah dari kode aplikasi Anda sendiri, inflate tata letak yang telah Anda buat.

     LiveCard liveCard; // initialized elsewhere
     RemoteViews views = new RemoteViews(context.getPackageName(),
             R.layout.my_layout);
     liveCard.setViews(views);
 

Perhatikan bahwa setelah kartu yang menggunakan RemoteViews dipublikasikan, perubahan yang dibuat pada tampilan dengan memanggil metode set* tidak akan terlihat di linimasa kecuali jika Anda secara eksplisit memanggil setViews pada kartu live lagi untuk memaksa pembaruan.

Menggambar langsung di permukaan kartu live

Jika aplikasi Anda memerlukan update lebih sering (beberapa kali per detik) atau merender grafis yang lebih rumit daripada yang didukung oleh widget standar, aktifkan rendering langsung dan tambahkan SurfaceHolder.Callback ke platform kartu.

     LiveCard liveCard; // initialized elsewhere
     liveCard.setDirectRenderingEnabled(true);
     liveCard.getSurfaceHolder().addCallback(callback);
 

Anda kemudian dapat menggambar langsung di permukaan dalam thread latar belakang atau sebagai respons terhadap peristiwa eksternal (misalnya, pembaruan sensor atau lokasi). Gunakan metode surfaceCreated dan surfaceDestroyed untuk memulai dan menghentikan logika rendering saat kartu ditampilkan atau disembunyikan.

Perhatikan bahwa metode callback holder platform tidak dipanggil di UI thread utama.

Menangani pemilihan kartu aktif

Kartu live harus menyediakan tindakan (PendingIntent untuk memulai aktivitas, layanan, atau melakukan siaran) yang akan dijalankan saat pengguna mengetuk untuk memilih kartu. Biasanya, Anda akan menggunakan tindakan ini untuk meluncurkan aktivitas yang menampilkan menu opsi atau mengarahkan pengguna ke bagian lain dari aplikasi Anda. Setidaknya, Anda harus menyediakan opsi yang memungkinkan pengguna menghapus kartu aktif dari linimasa.

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

Kartu live yang tidak memiliki tindakan tidak akan ditampilkan.

Class Bertingkat
enum LiveCard.PublishMode Menentukan cara kartu ditampilkan kepada pengguna saat dipublikasikan. 
Konstanta
String EKSTRA_DARI_LIVECARD_VOICE Boolean tambahan yang menunjukkan Intent diaktifkan oleh suara dari kartu aktif.
Konstruktor Publik
LiveCard(Konteks Konteks, tag String)
Metode Publik
Kartu Live
lampirkan(layanan Layanan)
SurfaceHolder
boolean
void
void
Kartu Live
Kartu Live
setDirectRenderingEnabled(pengaktifan boolean)
Kartu Live
Kartu Live
setViews(RemoteViews tampilan)
Kartu Live
setVoiceActionEnabled(pengaktifan boolean)
void
Metode Turunan

Konstanta

Ditambahkan di API level XE21

public static final String EXTRA_FROM_LIVECARD_VOICE

Boolean tambahan yang menunjukkan Intent diaktifkan oleh suara dari kartu aktif.

Nilai Konstanta: "android.intent.extra.EXTRA_FROM_LIVECARD"

Konstruktor Publik

Ditambahkan di API level XE16

publik LiveCard (konteks Konteks, tag String)

Membuat kartu aktif dengan tag yang diberikan.

Harap diperhatikan bahwa kartu tidak akan muncul sampai kartu tersebut dipublikasikan secara eksplisit.

Parameter
context konteks aplikasi
tag tag non-null untuk kartu; ini untuk tujuan proses debug

Metode Publik

Ditambahkan di API level XE16

publik LiveCard lampirkan (layananLayanan)

Lampirkan Service latar belakang agar kartu ini dipublikasikan, layanan tertentu akan disetel agar berjalan di latar depan.

Layanan akan otomatis dihapus dari latar depan saat kartu live ini dibatalkan publikasinya.

Parameter
layanan akan ditetapkan untuk dijalankan di foregound
Hasil
  • objek ini untuk perantaian panggilan
Ditambahkan di API level XE12

publik SurfaceHolder getSurfaceHolder ()

Jika rendering langsung diaktifkan, akan memberikan akses ke Surface untuk menggambar.

Perhatikan bahwa SurfaceHolder yang ditampilkan harus digunakan hanya sebagai sarana untuk mengakses platform terkelola. Metode untuk mengubah bentuk dan jenis permukaan adalah tanpa pengoperasian.

Perhatikan juga bahwa callback untuk objek ini tidak dibuat di UI thread.

Ditambahkan di API level XE12

publik boolean isPublished ()

Menampilkan true jika kartu sedang dipublikasikan.

Ditambahkan di API level XE16

publik void navigasi ()

Mengarahkan pengguna ke kartu ini di linimasa.

Menampilkan
IllegalStateException jika kartu tidak dipublikasikan
Ditambahkan di API level XE12

publik void publish (Mode Live.PublishMode)

Memublikasikan kartu ini ke linimasa.

Kartu hanya akan ditampilkan jika memiliki tindakan, dan jika rendering langsung diaktifkan atau tampilan jarak jauh telah ditetapkan.

Parameter
mode menentukan cara kartu ditampilkan kepada pengguna
Ditambahkan di API level XE12

publik LiveCard setAction (PendingIntent intent)

Mengubah tindakan yang diambil saat kartu dipilih.

Parameter
maksud akan diaktifkan saat kartu dipilih
Hasil
  • objek ini untuk perantaian panggilan
Ditambahkan di API level XE12

publik LiveCard setDirectRenderingEnabled (boolean aktifkan)

Mengaktifkan rendering langsung.

Dalam mode ini, konten kartu harus dirender langsung ke Surface.

Perlu diperhatikan bahwa metode ini hanya dapat dipanggil jika kartu tidak dipublikasikan dan akan menampilkan pengecualian.

Parameter
aktifkan apakah rendering langsung harus diaktifkan
Hasil
  • objek ini untuk perantaian panggilan
Lihat Juga
Ditambahkan di API level XE16

publik LiveCard setRenderer (RendererRenderer)

Menambahkan perender berbasis OpenGL.

Perender akan digunakan untuk menggambar ke platform yang diminta (secara otomatis) untuk rendering langsung.

Hasil
  • objek ini untuk perantaian panggilan
Ditambahkan di API level XE12

publik LiveCard setViews (RemoteViews tampilan)

Mengubah RemoteViews yang digunakan untuk menampilkan UI kartu ini.

Metode ini juga harus dipanggil setelah melakukan perubahan apa pun secara langsung ke tampilan jarak jauh pada kartu yang dipublikasikan, atau perubahan tersebut tidak akan tercermin pada linimasa.

Metode ini tidak berpengaruh jika rendering langsung diaktifkan.

Parameter
penayangan UI kartu
Hasil
  • objek ini untuk perantaian panggilan
Ditambahkan di API level XE21

publik LiveCard setVoiceActionEnabled (boolean aktifkan)

Mengaktifkan voice action saat kartu ditampilkan di linimasa.

Saat ditetapkan, kartu akan mendeteksi "ok Glass" saat ditampilkan di linimasa dan, jika frasa pelindung ini diucapkan, akan mengaktifkan intent yang telah disetel oleh metode setAction(PendingIntent). Jika intent memulai suatu aktivitas yang mengimplementasikan menu suara kontekstual, aktivitas tersebut akan otomatis terbuka di item menu pertama (yaitu seolah-olah "ok Glass" diucapkan di dalam aktivitas itu sendiri). Fitur ini memungkinkan penerapan menu suara kontekstual pada kartu live.

Parameter
aktifkan apakah voice action harus diaktifkan
Hasil
  • objek ini untuk perantaian panggilan
Ditambahkan di API level XE12

publik void batalkan publikasi ()

Membatalkan publikasi kartu ini dari linimasa.