コンテンツの録画をサポートする

TV 入力サービスを使用すると、ユーザーは タイムシフト API。 タイムシフトを拡張する Android 7.0 ユーザーが複数の録画セッションを保存できるようにします

事前に録画を予約したり、視聴しながら録画を開始したりできます。 できます。システムで録音を保存すると、ユーザーはその録音のブラウジング、管理、 システムの TV アプリを使用して録画を再生します。

TV 入力サービスに録画機能を提供する場合は、 アプリが録画をサポートしていることをシステムに示すこと、 番組を録画し、発生したエラーを処理して伝達する機能 設定したり、録画したセッションを管理したりできます。

録画のサポートを示す

テレビ入力サービスが録画に対応していることをシステムに伝えるには、 サービス メタデータ XML ファイルの android:canRecord 属性 宛先 true:

<tv-input xmlns:android="http://schemas.android.com/apk/res/android"
  android:canRecord="true"
  android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" />

サービス メタデータ ファイルの詳細については、このモジュールの テレビ入力を宣言する (マニフェスト内のサービス)をご覧ください

または、次のコマンドを使用して、コードで録音のサポートを示すこともできます。 手順は次のとおりです。

  1. テレビ入力サービス: onCreate() 新しい TvInputInfo オブジェクトを作成し、 TvInputInfo.Builder クラス。
  2. 新しい TvInputInfo オブジェクトを作成するときに、次の関数を呼び出します。 呼び出しの前に setCanRecord(true) build() の場合は、 サポートしています。
  3. 次の呼び出しを使用して、TvInputInfo オブジェクトをシステムに登録します。 TvInputManager.updateTvInputInfo()

セッションを録画する

TV 入力サービスが録画に対応していることを登録した後 機能すると、システムは アクセスする必要がある場合に TvInputService.onCreateRecordingSession() メソッドを 実装する必要があります。独自の実装 TvInputService.RecordingSession サブクラスを作成してそれを返す onCreateRecordingSession() コールバックが発生したとき。このサブクラスは、 正しいチャンネル データへの切り替え、リクエストされたデータの記録、 記録ステータスやエラーのシステムへの 伝達が含まれます

システムが RecordingSession.onTune()、チャンネル URI を渡してチャンネルに合わせる URI で指定されます。アプリが チャネルを指定して notifyTuned() または、アプリで適切なチャンネルにチューニングできない場合は、 notifyError()

次に、システムは RecordingSession.onStartRecording() コールバック。アプリで録画を開始する必要があります すぐに通知されます。システムはこのコールバックを呼び出すときに、URI を提供する場合があります。 録画しようとしている番組に関する情報が含まれています。 録画が完了したら、このデータを RecordedPrograms 作成します

最後に、システムは RecordingSession.onStopRecording()。この時点でアプリは すぐに録画を開始します。また、 RecordedPrograms に記録されたセッション データの URI が RecordedPrograms.COLUMN_RECORDING_DATA_URI 列と任意のプログラム 最初の呼び出しでシステムが提供した情報を onStartRecording()

Google Chat の設定にアクセスする方法について詳しくは、 RecordedPrograms テーブル、 録画セッションの管理セクションをご覧ください。

録画エラーを処理する

録画中にエラーが発生して録画データが使用できない場合は、 システムに通知する場合は notifyError()。 また、 録音セッションの作成後にシステムに通知するために notifyError() アプリがセッションを記録できなくなったことを通知します

録画中にエラーが発生したが、 部分的な録音をユーザーに提供し、再生、通話、 notifyRecordingStopped(): システムで以下を有効にします。 部分的なセッションを使用します。

録画セッションを管理する

システムは、すべての録画されたセッションの 録画に対応したチャンネル アプリを RecordedPrograms コンテンツ プロバイダ テーブル。この情報は RecordedPrograms コンテンツ録画の URI などです。Content Provider API を使用して このテーブルのエントリの読み取り、追加、削除ができます。

コンテンツ プロバイダのデータの操作について詳しくは、 <ph type="x-smartling-placeholder"></ph> コンテンツ プロバイダの基本をご覧ください。

おすすめの方法

TV デバイスのストレージは限られることがあるため、 録画したセッションを保存するためにストレージを割り当てています。使用 次の場合: RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE) 録画したセッションを保存するのに十分な容量がありません。

ユーザーが録画を開始したら、すぐにデータの記録を開始します。 必要があります。そのためには 時間のかかる作業をすべて行い たとえば、ストレージ スペースへのアクセスや割り当てなど、 onCreateRecordingSession() コールバック。これにより 直ちに録音が開始され、 onStartRecording() コールバックが発生する。