Thẻ trực tiếp

Đã thêm trong API cấp độ XE12
lớp học công khai

Thẻ trực tiếp

Lớp học này cho phép bạn tạo các thẻ đang hoạt động và xuất bản chúng 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 dành cho nhà phát triển về Thẻ trực tiếp.

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

Thẻ trực tiếp cần ngữ cảnh lâu dài để sở hữu chúng trong toàn bộ thời gian xuất bản, vì vậy bạn nên quản lý chúng trong chế độ nền Service. Sau đó, bạn có thể xuất bản thẻ trực tiếp ngay khi dịch vụ bắt đầu hoặc để phản hồi lại các sự kiện khác mà dịch vụ theo dõi. Tương tự như vậy, bạn không 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ỷ.

Khi xuất bản một thẻ trực tiếp, bạn có thể chọn mức độ ảnh hưởng của thẻ này đến người dùng. Khi xuất bản ở chế độ im lặng, thẻ sẽ được chèn vào dòng thời gian mà không có bất kỳ hiệu ứng hiển thị nào: người dùng phải vuốt vào thẻ để xem thẻ đó. Bạn cũng có thể để thẻ trực tiếp tự động hiển thị ngay sau khi thẻ được 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à thẻ trực tiếp chứ không phải 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ừ mộ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ẽ của thẻ. Chọn phương thức phù hợp nhất cho ứng dụng của bạn dựa trên tần suất bạn cần cập nhật nội dung trên thẻ và nếu bạn chủ yếu hiển thị các tiện ích hoặc đồ họa dạng tự do.

Tăng cường bố cục bằng cách sử dụng chế độ xem 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ác bản cập nhật không thường xuyên (khoảng vài giây trở lên giữa các lần làm mới), hãy tạo thẻ với sự trợ giúp của lớp RemoteViews. Đối tượng RemoteViews cho phép tiến trình Glass, chạy trong một quy trình riêng biệt với mã ứng dụng của riêng bạn, làm tăng cường một 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);
 

Xin lưu ý rằng sau khi một thẻ sử dụng RemoteViews được xuất bản, những thay đổi đối với chế độ xem bằng cách gọi phương thức set* sẽ không hiển thị trên dòng thời gian trừ phi bạn gọi lại setViews một cách rõ ràng trên thẻ đang hoạt động để 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 yêu cầu cập nhật thường xuyên hơn (vài lần mỗi giây) hoặc kết xuất đồ hoạ phức tạp hơn hỗ trợ tiện ích chuẩn, hãy bật tính năng kết xuất trực tiếp và thêm SurfaceHolder.Callback vào nền tảng 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 một chuỗi nền hoặc để phản hồi các sự kiện bên ngoài (ví dụ: thông tin cập nhật về cảm biến hoặc vị trí). Sử dụng các phương thức surfaceCreatedsurfaceDestroyed để bắt đầu và dừng logic kết xuất của bạn khi thẻ hiển thị hoặc bị ẩn.

Xin lưu ý rằng phương thức gọi lại của chủ sở hữu nền tảng 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ẻ đang hoạt động phải cung cấp một hành động (PendingIntent để bắt đầu một hoạt động, dịch vụ hoặc thực hiện một hoạt động truyền phát) 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 đưa người dùng đến một phần khác trong ứ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ẻ đang hoạt động 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));
 

Những thẻ trực tiếp không có thao tác nào sẽ không xuất hiện.

Các lớp lồng ghép
enum LiveCard.PublishMode Xác định cách người dùng nhìn thấy thẻ khi xuất bản. 
Các hằng số
Chuỗi extra_FROM_LIVECARD_speech Boolean bổ sung biểu thị một 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
Phương thức công khai
Thẻ trực tiếp
đính kèm(Dịch vụ Dịch vụ)
SurfaceHolder
boolean
void
void
Thẻ trực tiếp
setAction(Ý định PendingIntent)
Thẻ trực tiếp
setDirectRenderingEnabled(bật boolean)
Thẻ trực tiếp
setRenderer(trình kết xuất GlRenderer)
Thẻ trực tiếp
Thẻ trực tiếp
setVoiceActionEnabled(bật boolean)
void
Các phương thức kế thừa

Các hằng số

Đã thêm trong API cấp độ XE21

public static finally Chuỗi EXTRA_FROM_LIVECARD_VOICE

Boolean bổ sung biểu thị một 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 trong API cấp độ XE16

public LiveCard (Bối cảnh Ngữ cảnh, Thẻ)

Tạo một thẻ đang hoạt động có thẻ đã cho.

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

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

Phương thức công khai

Đã thêm trong API cấp độ XE16

public LiveCard đính kèm (Dịch vụ)

Đính kèm một nền Service để khi thẻ này được xuất bản, dịch vụ cụ thể sẽ được thiết lập để chạy ở nền trước.

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

Các tham số
dịch vụ sẽ được thiết lập để chạy trong trước
Trả về
  • đối tượng này để tạo chuỗi cuộc gọi
Đã thêm trong API cấp độ XE12

public SurfaceHolder getSurfaceHolder ()

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

Lưu ý rằng bạn nên sử dụng SurfaceHolder được trả về đơn giản như một phương tiện để truy cập vào nền tảng được quản lý. Các phương pháp 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 trong API cấp độ XE12

public boolean được xuất bản ()

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

Đã thêm trong API cấp độ XE16

public khoảng trống điều hướng ()

Chuyển người dùng đến thẻ này trong tiến trình.

Gửi
Trường hợp ngoại lệ không hợp lệ nếu thẻ không được xuất bản
Đã thêm trong API cấp độ XE12

public khoảng trống phát hành (chế độ LiveCard.PublishMode)

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

Thẻ này sẽ chỉ xuất hiện nếu đã có thao tác và đã bật tính năng kết xuất trực tiếp hoặc đã thiết lập chế độ xem từ xa.

Các tham số
chế độ xác định cách người dùng nhìn thấy thẻ
Đã thêm trong API cấp độ XE12

public LiveCard setAction (Ý định đang chờ xử lý)

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

Các tham số
cơ chế sẽ được kích hoạt khi thẻ được chọn
Trả về
  • đối tượng này để tạo chuỗi cuộc gọi
Đã thêm trong API cấp độ XE12

public LiveCard setDirectRenderingEnabled (boolean bật)

Bật tính năng kết xuất trực tiếp.

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

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

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

public LiveCard setRenderer (Trình kết xuất RenderRenderer)

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

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

Trả về
  • đối tượng này để tạo chuỗi cuộc gọi
Đã thêm trong API cấp độ XE12

public LiveCard setViews (RemoteViews views)

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

Bạn cũng nên gọi phương thức này sau khi thay đổi trực tiếp chế độ xem từ xa của một thẻ đã xuất bản, nếu không thì những thay đổi đó sẽ không được phản ánh trên dòng thời gian.

Phương pháp 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.

Các tham số
lượt xem giao diện người dùng của thẻ
Trả về
  • đối tượng này để tạo chuỗi cuộc gọi
Đã thêm trong API cấp độ XE21

public LiveCard setVoiceActionEnabled (boolean bật)

Bật thao tác bằng giọng nói khi thẻ xuất hiện trên dòng thời gian.

Khi được đặt, thẻ sẽ nghe "ok Glass" khi 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 phương thức setAction(PendingIntent) đặt. Nếu ý định bắt đầu một hoạt động triển khai trình đơn thoại theo ngữ cảnh, hoạt động đó sẽ tự động mở trên các mục đầu tiên trong trình đơn (như thể là "ly kính" trong chính hoạt động đó). Tính năng này cho phép triển khai trình đơn thoại theo ngữ cảnh trên thẻ trực tiếp.

Các tham số
bật có nên bật thao tác bằng giọng nói hay không
Trả về
  • đối tượng này để tạo chuỗi cuộc gọi
Đã thêm trong API cấp độ XE12

public khoảng trống hủy xuất bản ()

Huỷ xuất bản thẻ này khỏi dòng thời gian.