Skip to content

Most visited

Recently visited

navigation

Ghi lại TV

Các dịch vụ nguồn vào TV cho phép người dùng tạm dừng và tiếp tục phát lại kênh thông qua các API chuyển dịch thời gian. Android N mở rộng thêm chuyển dịch thời gian bằng cách cho phép người dùng lưu nhiều chương trình được ghi lại.

Người dùng có thể tạo lịch ghi lại trước hoặc tiến hành ghi lại khi họ xem một chương trình. Khi hệ thống đã lưu bản ghi lại, người dùng có thể duyệt, quản lý và phát lại bản ghi đó bằng ứng dụng TV của hệ thống.

Nếu bạn muốn cung cấp tính năng ghi lại cho dịch vụ nguồn vào TV, bạn phải báo cho hệ thống biết ứng dụng của bạn hỗ trợ ghi lại, triển khai khả năng ghi chương trình, xử lý và thông báo bất kỳ lỗi nào xuất hiện trong quá trình ghi lại và quản lý các chương trình được ghi lại.

Chỉ báo Hỗ trợ ghi lại

Để thông báo cho hệ thống biết dịch vụ nguồn vào TV của bạn hỗ trợ ghi lại, hãy thực hiện các bước sau:

  1. Trong phương thức TvInputService.onCreate() của bạn, hãy tạo một đối tượng TvInputInfo mới sử dụng lớp TvInputInfo.Builder .
  2. Khi tạo đối tượng TvInputInfo mới, hãy gọi setCanRecord(true) trước khi gọi build() để chỉ báo dịch vụ của bạn hỗ trợ ghi lại.
  3. Đăng ký đối tượng TvInputInfo với hệ thống bằng cách gọi TvInputService.updateTvInputInfo().

Ghi lại một chương trình

Sau khi dịch vụ nguồn vào TV của bạn đăng ký để hỗ trợ tính năng ghi lại, hệ thống sẽ gọi phương thức TvInputService.onCreateRecordingSession() của bạn khi cần truy cập phần triển khai ghi lại của ứng dụng. Triển khai lớp con TvInputService.RecordingSession của bạn và trả nó về khi hàm gọi lại onCreateRecordingSession() được gọi. Lớp con này chịu trách nhiệm chuyển sang dữ liệu kênh phù hợp, ghi lại dữ liệu được yêu cầu và thông báo trạng thái ghi lại và các lỗi cho hệ thống.

Khi hệ thống gọi RecordingSession.onTune(), chuyển vào một URI của kênh, chỉnh vào kênh mà URI đó chỉ định. Thông báo cho hệ thống biết ứng dụng của bạn đã chỉnh vào kênh mong muốn bằng cách gọi notifyTuned(), hoặc nếu ứng dụng không thể chỉnh vào kênh phù hợp, hãy gọi notifyError().

Tiếp theo hệ thống sẽ gọi hàm gọi lại RecordingSession.onStartRecording() . Ứng dụng của bạn phải bắt đầu ghi lại ngay lập tức. Khi hệ thống gọi hàm gọi lại này, hệ thống có thể cung cấp một URI có chứa thông tin về chương trình sắp được ghi lại. Khi kết thúc việc ghi lại, bạn cần sao chép dữ liệu này vào bảng dữ liệu RecordedPrograms.

Cuối cùng, hệ thống sẽ gọi RecordingSession.onStopRecording(). Lúc này, ứng dụng của bạn phải dừng ghi lại ngay lập tức. Bạn cũng cần tạo một mục nhập trong bảng RecordedPrograms. Mục này cần có URI dữ liệu của chương trình được ghi lại trong cột RecordedPrograms.COLUMN_RECORDING_DATA_URI, và bất kỳ thông tin về chương trình mà hệ thống đã cung cấp trong lần gọi đầu tiên tới onStartRecording().

Để biết thêm thông tin về cách truy cập bảng RecordedPrograms hãy xem Quản lý các chương trình được ghi lại.

Xử lý lỗi ghi lại

Nếu xảy ra lỗi trong quá trình ghi lại, làm cho dữ liệu ghi lại không sử dụng được thì hãy thông báo cho hệ thống bằng cách gọi RecordingSession.notifyError(). Tương tự, bạn có thể gọi notifyError() sau khi một chương trình ghi lại được tạo để cho phép hệ thống biết được ứng dụng của bạn không còn tiếp tục ghi các chương trình.

Nếu xảy ra lỗi trong quá trình ghi lại, nhưng có khả năng là một phần dữ liệu ghi lại có thể được sử dụng để người dùng phát lại thì hãy gọi RecordingSession.notifyRecordingStopped() để cho phép hệ thống sử dụng một phần chương trình đó.

Quản lý các chương trình được ghi lại

Hệ thống lưu giữ thông tin cho mọi chương trình được ghi lại từ tất cả các ứng dụng kênh truyền hình hỗ trợ ghi lại trong bảng trình cung cấp nội dungTvContract.RecordedPrograms . Có thể truy cập thông tin này qua URI nội dung RecordedPrograms.Uri. Hãy sử dụng các API trình cung cấp nội dung để đọc, thêm và xóa các mục trong bảng này.

Để biết thêm thông tin về thao tác với dữ liệu trình cung cấp nội dung, hãy xem Nội dung Cơ bản về Trình cung cấp Nội dung.

Thực hành Tốt nhất

Các thiết bị TV có thể có bộ nhớ lưu trữ hạn chế do đó phán đoán hợp lý nhất khi phân bổ bộ nhớ lưu trữ để lưu các chương trình được ghi lại. Sử dụng RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE) khi không có đủ dung lượng trống để lưu một chương trình được ghi lại.

Khi người dùng khởi tạo quá trình ghi lại, bạn cần tiến hành ghi lại dữ liệu nhanh nhất có thể. Để hỗ trợ công việc này, hãy hoàn thành tất cả các tác vụ tốn thời gian trước đó, như truy cập và phân bổ không gian lưu trữ khi hệ thống gọi hàm gọi lại onCreateRecordingSession(). Làm như vậy sẽ cho phép bạn tiến hành việc ghi lại ngay lập tức khi hàm gọi lại onStartRecording() được gọi.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Theo dõi Google Developers trên WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)