Thẻ trực tiếp

Đã thêm vào API cấp XE12
lớp công khai

LiveCard

Với lớp học này, bạn có thể tạo thẻ đang hoạt động và xuất bản những thẻ đó trên dòng thời gian.

Để biết thêm thông tin về cách tạo thẻ trực tiếp, hãy xem Hướng dẫn cho nhà phát triển về Thẻ trực tiếp.

Vòng đời của một thẻ trực tiếp

Thẻ trực tiếp cần có bối cảnh lâu dài để sở hữu thẻ trong toàn bộ thời gian đã xuất bản, do đó bạn nên quản lý chúng ở chế độ nền Service. Sau đó, bạn có thể xuất bản một thẻ trực tiếp ngay khi dịch vụ bắt đầu hoặc để phản hồi các sự kiện khác mà công cụ giám sát dịch vụ. Tương tự, bạn nên huỷ xuất bản thẻ khi chúng không còn phù hợp hoặc khi dịch vụ bị huỷ bỏ.

Khi xuất bản thẻ đã xuất bản, bạn có thể chọn mức độ ảnh hưởng của việc này đến người dùng. Khi xuất bản ngầm, thẻ sẽ được chèn vào dòng thời gian mà không có bất kỳ tác động rõ ràng nào: người dùng phải vuốt để để xem thông tin đó. Bạn cũng có thể để thẻ đang hoạt động tự động hiển thị ngay sau khi thẻ đã xuất bản. Điều này thường hữu ích khi giao diện người dùng chính của ứng dụng là một thẻ trực tiếp chứ không phải là một hoạt động.

Hiển thị nội dung trên thẻ trực tiếp

Thẻ trực tiếp có thể hiển thị nội dung từ tài nguyên bố cục hoặc bằng cách cho phép mã của bạn hiển thị trực tiếp trên bề mặt vẽ. Chọn phương pháp phù hợp nhất với ứng dụng của bạn về tần suất bạn cần cập nhật nội dung trên thẻ và liệu bạn có chủ yếu kết xuất nội dung hay không hoặc đồ hoạ dạng tự do.

Tăng cường bố cục bằng khung hiển thị từ xa

Nếu ứng dụng của bạn chỉ yêu cầu các tiện ích tiêu chuẩn và cập nhật không thường xuyên (khoảng vài giây hoặc lâu hơn giữa các lần làm mới), thì hãy tạo thẻ với sự trợ giúp của lớp RemoteViews. Đối tượng RemoteViews cho phép dòng thời gian của Glass, chạy trong một quy trình riêng biệt với mã xử lý ứng dụng của riêng bạn, tăng cường bố cục mà bạn đã tạo.

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

Lưu ý rằng sau khi xuất bản thẻ sử dụng RemoteViews, các thay đổi đối với chế độ xem bằng cách gọi các phương thức set* sẽ không xuất hiện trên dòng thời gian trừ phi bạn gọi một cách rõ ràng setViews trên thẻ đang hoạt động một lần nữa để buộc cập nhật.

Vẽ trực tiếp trên bề mặt thẻ trực tiếp

Nếu ứng dụng của bạn yêu cầu cập nhật thường xuyên hơn (vài lần mỗi giây) hoặc hiển thị nhiều hơn đồ hoạ chi tiết hơn so với hỗ trợ của tiện ích tiêu chuẩn, cho phép kết xuất trực tiếp và thêm SurfaceHolder.Callback vào giao diện của thẻ.

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

Sau đó, bạn có thể vẽ trực tiếp trên bề mặt bên trong luồng nền hoặc theo phản hồi các sự kiện (ví dụ: thông báo cập nhật về cảm biến hoặc vị trí). Sử dụng surfaceCreated và Phương thức surfaceDestroyed để bắt đầu và dừng logic kết xuất khi thẻ được được hiển thị hoặc bị ẩn.

Lưu ý rằng các phương thức gọi lại của phần tử giữ nền tảng sẽ không được gọi trên luồng giao diện người dùng chính.

Xử lý lựa chọn thẻ trực tiếp

Thẻ trực tiếp phải cung cấp một hành động (PendingIntent để bắt đầu một hoạt động, hoặc thực hiện truyền tin) sẽ được thực thi khi người dùng nhấn để chọn thẻ. Thông thường, bạn sẽ sử dụng thao tác này để chạy một hoạt động hiển thị trình đơn tuỳ chọn hoặc thực hiện người dùng vào một phần khác của ứng dụng. Ít nhất, bạn nên cung cấp một tuỳ chọn cho phép người dùng xoá thẻ trực tiếp khỏi dòng thời gian.

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

Các thẻ trực tiếp không có tác vụ sẽ không được hiển thị.

Lớp lồng ghép
enum LiveCard.PublishMode Xác định cách thẻ hiển thị cho người dùng khi được xuất bản.
Hằng số
String EXTRA_FROM_LIVECARD_VOICE Giá trị bổ sung Boolean biểu thị Intent đã được kích hoạt bằng giọng nói từ một thẻ trực tiếp.
Công ty xây dựng công cộng
LiveCard(Ngữ cảnh Ngữ cảnh, thẻ Chuỗi)
Phương thức công khai
LiveCard
Đính kèm(Dịch vụ Dịch vụ)
SurfaceHolder
boolean
void
void
LiveCard
setAction(Ý định PendingIntent)
LiveCard
setDirectRenderingEnabled(boolean bật)
LiveCard
setRenderer(trình kết xuất GlRenderer)
LiveCard
setViews(chế độ xem RemoteViews)
LiveCard
setVoiceActionEnabled(boolean bật)
void
Phương thức kế thừa

Hằng số

Đã thêm vào API cấp XE21

công khai tĩnh cuối cùng Chuỗi EXTRA_FROM_LIVECARD_VOICE

Giá trị bổ sung Boolean biểu thị Intent đã được kích hoạt bằng giọng nói từ một thẻ trực tiếp.

Giá trị không đổi: "android.intent.extra.EXTRA_FROM_LIVECARD"

Công ty xây dựng công cộng

Đã thêm vào API cấp XE16

công khai LiveCard (Ngữ cảnh, thẻ Chuỗi)

Tạo một thẻ trực tiếp bằng thẻ đã cho.

Xin lưu ý rằng thẻ không xuất hiện cho đến khi được xuất bản rõ ràng.

Tham số
bối cảnh ngữ cảnh của ứng dụng
thẻ không rỗng cho thẻ; thao tác này dành cho mục đích gỡ lỗi

Phương thức công khai

Đã thêm vào API cấp XE16

công khai LiveCard đính kèm (Dịch vụ dịch vụ)

Hãy đính kèm Service nền để khi thẻ này được được xuất bản, dịch vụ nhất định sẽ được đặt để chạy ở nền trước.

Dịch vụ sẽ tự động bị xoá khỏi nền trước khi thẻ trực tiếp chưa được xuất bản.

Tham số
dịch vụ sẽ được thiết lập để chạy theo ngôn ngữ trước
Giá trị trả về
  • đối tượng này để tạo chuỗi lệnh gọi
Đã thêm vào API cấp XE12

công khai SurfaceHolder getSurfaceHolder ()

Khi tính năng kết xuất trực tiếp được bật, hãy cấp quyền truy cập vào Surface để vẽ.

Lưu ý rằng bạn chỉ nên sử dụng SurfaceHolder được trả về như một phương tiện để truy cập vào nền tảng được quản lý. Các phương thức thay đổi hình dạng và loại bề mặt là không hoạt động.

Ngoài ra, xin lưu ý rằng các lệnh gọi lại cho đối tượng này không được thực hiện trong luồng giao diện người dùng.

Đã thêm vào API cấp XE12

công khai boolean isPublished ()

Trả về true nếu thẻ đang được xuất bản.

Đã thêm vào API cấp XE16

công khai trống điều hướng ()

Chuyển người dùng đến thẻ này trong dòng thời gian.

Gửi
IllegalStateException nếu thẻ không được xuất bản
Đã thêm vào API cấp XE12

công khai trống xuất bản (Chế độ LiveCard.PublishMode)

Xuất bản thẻ này lên dòng thời gian.

Thẻ sẽ chỉ hiển thị nếu có một thao tác, và nếu tính năng kết xuất trực tiếp được bật hoặc đã đặt chế độ xem từ xa.

Tham số
chế độ xác định cách thẻ hiển thị với người dùng
Đã thêm vào API cấp XE12

công khai LiveCard setAction (PendingIntent ý định)

Thay đổi hành động được thực hiện khi thẻ được chọn.

Tham số
cơ chế sẽ được kích hoạt khi thẻ được chọn
Giá trị trả về
  • đối tượng này để tạo chuỗi lệnh gọi
Đã thêm vào API cấp XE12

công khai LiveCard setDirectRenderingEnabled (bật boolean)

Bật kết xuất trực tiếp.

Ở chế độ này, nội dung thẻ sẽ phải được kết xuất trực tiếp vào Surface.

Lưu ý rằng phương thức này chỉ có thể được gọi khi thẻ không được xuất bản và phương thức này sẽ khác gửi một trường hợp ngoại lệ.

Tham số
bật có nên bật tính năng kết xuất trực tiếp hay không
Giá trị trả về
  • đối tượng này để tạo chuỗi lệnh gọi
Xem thêm
Đã thêm vào API cấp XE16

công khai LiveCard setRenderer (GlRenderer trình kết xuất đồ hoạ)

Thêm trình kết xuất đồ hoạ dựa trên OpenGL.

Trình kết xuất đồ hoạ sẽ được dùng để vẽ lên một bề mặt được yêu cầu (tự động) để trực tiếp kết xuất hình ảnh.

Giá trị trả về
  • đối tượng này để tạo chuỗi lệnh gọi
Đã thêm vào API cấp XE12

công khai LiveCard setViews (RemoteViews lượt xem)

Thay đổi RemoteViews dùng để hiển thị giao diện người dùng của thẻ này.

Phương thức này cũng nên được gọi sau khi thực hiện bất kỳ thay đổi nào trực tiếp đối với các khung hiển thị từ xa của thẻ đã xuất bản hoặc những thay đổi đó sẽ không được phản ánh trên dòng thời gian.

Phương thức này không có hiệu lực nếu bạn bật tính năng kết xuất trực tiếp.

Tham số
views giao diện người dùng của thẻ
Giá trị trả về
  • đối tượng này để tạo chuỗi lệnh gọi
Đã thêm vào API cấp XE21

công khai LiveCard setVoiceActionEnabled (bật boolean)

Bật tác vụ thoại khi thẻ được hiển thị trên dòng thời gian.

Khi được đặt, thẻ sẽ nghe cụm từ "ok Glass" khi được hiển thị trên dòng thời gian và khi cụm từ bảo vệ này được nói, sẽ kích hoạt ý định đã được đặt bởi setAction(PendingIntent). Nếu ý định bắt đầu một hoạt động triển khai trình đơn giọng nói theo ngữ cảnh, thì hoạt động đó sẽ tự động mở trên các mục đầu tiên trong trình đơn (ví dụ: như thể bạn nói "ok ly" bên trong hoạt động ). Tính năng này cho phép triển khai trình đơn giọng nói theo ngữ cảnh trên các thẻ trực tiếp.

Tham số
bật có nên bật thao tác bằng giọng nói không
Giá trị trả về
  • đối tượng này để tạo chuỗi lệnh gọi
Đã thêm vào API cấp XE12

công khai trống huỷ xuất bản ()

Huỷ xuất bản thẻ này khỏi tiến trình.