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