ピクチャー イン ピクチャー(PiP)Jetpack ライブラリは、Android アプリ デベロッパーが PiP 機能を実装するための合理化された 堅牢なソリューションを提供します。 特に、メディア再生、ビデオ通話、ナビゲーション アプリに適しています。統合された API を提供することで、ライブラリはボイラープレート コードやアプリ内の一般的なバグを排除し、PiP ユーザー エクスペリエンスの全体的な品質を向上させます。
PiP Jetpack ライブラリは、Android エコシステム全体でいくつかの重要な課題と不整合に対処することで、既存の PiP API を容易にします。
- OS の断片化: ライブラリは、さまざまな Android バージョンでの PiP API
呼び出しの違いを自動的に処理します。たとえば、Android 12 より前の
enterPictureInPictureModeの使用や、Android 12 以降のisAutoEnterEnabledの使用などです。そのため、デベロッパーはバージョンの 違いを管理する必要がありません。 - PiP パラメータの誤り: PiP パラメータ(
setSourceRectHintなど)を正しく設定して、メディア再生中にスムーズで高品質なアニメーションを作成するための統合ソリューションを提供します。 - 統合された PiP 状態コールバック:
onPictureInPictureModeChangedとonPictureInPictureUiStateChangedを 単一の統合コールバック インターフェース (PictureInPictureDelegate.OnPictureInPictureEventListener)に統合し、 状態と UI の管理を簡素化します。 - ボイラープレート コードの削減: ライブラリは、再生コントロールやビデオ通話アクションなど、一般的なユースケース向けに事前定義された
RemoteActionsのセットを提供することで、繰り返し使用される ボイラープレート コードの量を削減します。 - 将来の保証: PiP の追加機能は Jetpack ライブラリを通じて提供されるため、導入者は最小限の労力で追加機能にアクセスできます。
Jetpack を導入する
Jetpack ライブラリを導入するには、既存のカスタム PiP 実装を Jetpack ライブラリ API に置き換えます。導入の複雑さとコストは、アプリの現在の実装によって異なります。
以降のセクションでは、PiP の一般的なユースケースと必要な実装手順について説明します。
ナビゲーション
アプリは、ナビゲーションのアクティブまたは非アクティブの状態をライブラリに通知し、アスペクト比を設定します。残りの処理は Jetpack ライブラリが行います。
主な違い:
- アプリ側で自動入力と従来の入力とを区別する必要はありません。
- 統合されたコールバック インターフェース。
- 下位互換性に対応した新しい
PictureInPictureParamsビルダー。
ビデオ通話
アプリは、通話のアクティブまたは非アクティブの状態をライブラリに通知し、アスペクト比を設定します。
主な違い:
- アプリ側で自動入力と従来の入力とを区別する必要はありません。
- 統合されたコールバック インターフェース。
- 下位互換性に対応した新しい
PictureInPictureParamsビルダー。 - ビデオ通話のアクション アイコンが標準化されました。
動画再生
Jetpack ライブラリは、PiP の有効化または無効化を管理し、ソースの長方形のヒントを正確に設定するために統合できるプレーヤー デリゲートを提供します。
ビデオ通話のシナリオで使用されるものと同様に、事前定義された RemoteAction オブジェクトのセットを選択することもできます。
主な機能:
- 下位互換性を処理するため、OS バージョンの確認は不要です。
- 再生状態の同期と自動入力の制御。
SourceRectHintを使用した継続的なジオメトリ トラッキング。