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" />
サービス メタデータ ファイルの詳細については、このモジュールの テレビ入力を宣言する (マニフェスト内のサービス)をご覧ください。
または、次のコマンドを使用して、コードで録音のサポートを示すこともできます。 手順は次のとおりです。
- テレビ入力サービス:
onCreate()
新しいTvInputInfo
オブジェクトを作成し、TvInputInfo.Builder
クラス。 - 新しい
TvInputInfo
オブジェクトを作成するときに、次の関数を呼び出します。 呼び出しの前にsetCanRecord(true)
build()
の場合は、 サポートしています。 - 次の呼び出しを使用して、
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()
コールバックが発生する。