コミュニティ

Now in Android #121

所要時間: 9 分
Daniel Galpin
デベロッパー アドボケイト

Now in Android へようこそ。Android 開発の世界の最新情報や注目すべき情報を継続的にご案内します。

Android 16 QPR2 ベータ版 1Android Studio Narwhal の機能ドロップJetpack Compose 1.9Media 3 1.8シェイプ モーフィングCompose の自動入力などについて、以下で詳しくご紹介します。

動画の概要を確認できます。

 

 

ポッドキャストもあります。

ただし、この投稿には最も詳細な情報が記載されているため、ぜひお読みください。

Android 16 QPR2 ベータ版 1 がリリースされました ✨

Android 16 QPR2 の最初のベータ版がリリースされました。これは、Android のマイナー SDK バージョンを含む最初の Android リリースです。マイナー SDK バージョンには、プラットフォーム機能を拡張する新しい API を含めることができますが、targetSdkVersion ゲート付きの動作変更を導入することはできません。これにより、アプリをテストする必要がある量を最小限に抑えることができます。

sdk-release-graph.webp

VERSION_CODES_FULL 列挙型に対して SDK_INT_FULL をチェックすることで、新しい API を呼び出すことができます。

  if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) {
  // Call new APIs from the Android 16 QPR2 release
}

VERSION_CODES_FULLuses-sdk マニフェスト属性では使用できません。

QPR2 ベータ版 1 の主な更新内容は次のとおりです。

UI、システム エクスペリエンス、ユーザー補助:

  • 拡張ダークモード オプションでは、ダークモードを好むユーザー向けに、ライトモードのアプリをインテリジェントに反転します。
  • アプリにモノクロレイヤが用意されていない場合、システムによってテーマ別アプリアイコンが自動生成されます。
  • インタラクティブなチューザ セッションでは、ChooserManagerChooserSession を使用して、シェアシートが開いている間もアプリの UI をアクティブに保ちます。
  • 新しい Data Transfer API により、Android と iOS 間でより信頼性が高く安全なデータ移行が可能になります。これに伴い、アプリのデータ抽出ルールの XML と BackupAgent 実装の更新が必要になります。
  • android.graphics.pdf パッケージが拡張され、PdfRenderer.Page を介した PDF ドキュメントの注釈付けと編集をサポートするようになりました。
  • ViewConfiguration の値が個々の仮想デバイスに合わせて調整されるようになりました。マルチディスプレイ シナリオでは ViewConfiguration.get(context) に移行してください。
  • View.performHapticFeedback(HapticFeedbackRequest)VibrationAttributes を指定すると、よりきめ細かい触覚フィードバック制御が可能になります。
  • クイック設定タイルを AndroidManifest.xml ファイル内の事前定義されたカテゴリに割り当てられるようになりました。

メディアとオーディオ:

  • オープンな空間音声形式である Immersive Audio Model and Formats(IAMF)のソフトウェア デコード。
  • Bluetooth LE Audio デバイスのパーソナル オーディオ共有は、システムの出力スイッチャーに直接統合されています。
  • HDR/SDR の明るさスライダーを使用して HDR の明るさを調整できる
  • フォトピッカーの追加機能では、特定のアルバムや検索クエリをハイライト表示できます。

接続:

  • コンパニオン デバイス管理(CDM)の機能強化により、カスタム デバイスアイコンの提供、EVENT_ASSOCIATION_REMOVED コールバックのリスニング、DeviceId を使用したアプリ間の検証が可能になります。
  • Bluetooth のアップデートには、BluetoothLeScannerScanSettings.SCAN_TYPE_PASSIVE)のパッシブ スキャン サポート、ボンド損失の理由(BluetoothDevice.EXTRA_BOND_LOSS_REASON)、サービス UUID の直接取得(BluetoothDevice.EXTRA_UUID_LE)が含まれます。
  • Wi-Fi RTT レンジングのアップデート(RttStationRangingParams)で、ステーションに対するレンジングをサポート。
  • IMS P-Associated-URI ヘッダーから電話番号を解析して検証するための新しい PhoneNumberManager が利用可能になりました。
  • MediaRouter ネットワーク プライバシーの改善により、Bluetooth や UWB などの新しいメディアを介したキャストが可能になります。カスタムのアプリ内ピッカーには、システムの出力スイッチャーを使用するか、NEARBY_DEVICES 権限をリクエストする必要があります。

プライバシーとセキュリティ:

  • 新しいシステムレベルのセキュリティ状態であるセキュアロック デバイスでは、デバイスがロックされ、ロックを解除するにはプライマリ認証が必要になります。
  • スマートフォン盗難保護に、[認証失敗時のロック] を有効/無効にするためのユーザー向けの切り替えが追加されました。

開発者の生産性:

  • 新しい AppWidgetManager API を使用すると、ウィジェットのエンゲージメント指標をクエリできます。
  • ADB 経由でインストールされたデバッグ可能なアプリは、16 KB ページサイズの互換性に関する早期警告を受け取るようになります。
  • ProfilingManager には、新しいシステム開始プロファイリング トリガーと、バックグラウンド トレースをキャプチャするための requestRunningSystemTrace のサポートが追加されています。
  • [開発者向けオプション] の [詳細な印刷ログ] 切り替えにより、Android Print Framework の追加のデバッグ情報が提供されます。
  • デフォルト以外のディスプレイのスクリーンショット用の新しい UiAutomation API と公開 AccessibilityWindowInfo.refresh により、デスクトップとマルチディスプレイのエクスペリエンスのより堅牢なテストが可能になります。
  • 新しい androidx.core:core-backported-fixes ライブラリの API サポートを追加しました。
  • Linux ターミナルで GUI アプリがサポートされるようになりました
  • WindowInspector.addGlobalWindowViewsListener は、ルートビューの変更通知をリアルタイムでサポートします。

サポートされている Pixel デバイスを登録してベータ版アップデートを無線(OTA)で受信するか、Android Studio の Android Emulator で 64 ビット システム イメージを使用できます。プラットフォームの安定版は 2025 年 10 月を目標としています。

Android Studio Narwhal Feature Drop が安定版に - エージェント モード 🐳 を使い始めましょう

narwhal.webp

Android Studio Narwhal Feature Drop が安定版になりました。新機能と機能強化は次のとおりです。

  • Gemini in Android Studio: エージェント モードが多段階のコーディング タスクで利用可能に
  • プロンプト ライブラリ ルールを使用すると、プロジェクトのニーズに合わせて Gemini の AI 出力をカスタマイズできます。
  • Gemini で UI を変換するでは、自然言語 UI を使用して Compose UI を反復処理します。
  • XR Android Emulator、新しい XR テンプレート、XR 用の埋め込み Layout Inspector を備えた没入型開発のサポート
  • Android デバイス ストリーミングの Android パートナー デバイス ラボによるデバイス アクセスの拡大
  • コード ナビゲーションの改善と新しい Compose プレビュー ピッカーによる Compose プレビューの改善
  • ビルド パフォーマンスを高速化するため、K2 Kotlin コンパイラがデフォルトで有効になりました
  • 16 KB ページサイズのツール。lint 警告、分析、エミュレータを使用して、今後リリースされる 16 KB ページサイズのデバイスに備えることができます。

Firebase を活用した Android デバイスのストリーミング

device-streaming.webp

Firebase を利用した Android デバイス ストリーミングで、Android パートナー デバイスラボの安定版サポートが導入されました。これにより、Samsung、Xiaomi、OPPO、OnePlus、vivo などの OEM パートナーがホストする物理 Android デバイスにリモートで接続できます。

Android Studio の月次リリースで開発を加速 - リリース頻度が以前の 2 倍に

accelarating-releases.webp

Android Studio は、新機能や重大なバグの修正をより迅速に提供するため、月単位の安定版リリース カデンツに移行します。Android Studio IDE は毎月更新されますが、新しい IntelliJ プラットフォーム バージョンは数か月ごとに導入され、その間の安定版リリースは Feature Drop で補完されます。Android Emulator と Android Gradle プラグインは、引き続き 2 か月ごとに個別に更新されます。この加速されたリリース スケジュールは、テスト インフラストラクチャへの長期的な投資によって支えられています。

Jetpack Compose 2025 年 8 月リリースの新機能 🚀

jetpack-compose.webp

Jetpack Compose 2025 年 8 月リリース(バージョン 1.9)が安定版になりました。このリリースでは、ボックスシャドウ効果をレンダリングするための Modifier.dropShadowModifier.innerShadow が導入されています。新しい onVisibilityChanged 修飾子と onFirstVisible 修飾子を使用すると、UI の更新や表示回数のロギングのために要素の可視性をトラッキングできます。TextFieldBuffer.addStyle を使用してテキスト変換を行うことで、OutputTransformation 内でリッチなスタイルを適用できます。

LazyLayout ビルディング ブロックが安定し、LazyLayoutCacheWindow を定義して、プリフェッチを強化することで Lazy List と Grid のパフォーマンスを改善できるようになりました。Scrollable2D では、フリングやネストされたスクロールなどの 2 次元スクロールが可能になり、スクロールと View でのネストされたスクロールの相互運用性がさまざまな点で改善されています。オプトイン API(Composer.setDiagnosticStackTraceEnabled)は、スタック トレースでクラッシュの場所の詳細情報をより多く提供します。デバッグビルドでのみ使用することをおすすめします。新しい @RememberInComposition アノテーションと @FrequentlyChangingValue アノテーション、および関連する Lint チェックが、新しいランタイム アノテーション ライブラリで利用できるようになりました。コンテキスト メニューは、Modifier.appendTextContextMenuComponentsModifier.filterTextContextMenuComponents を使用してカスタマイズできます。Android Gradle プラグイン(AGP)/ Lint バージョン 8.8.2 以降が必須になりました。

Media3 1.8.0 - 新機能🚀

media3.webp

Media3 1.8.0 がリリースされ、いくつかの新機能と改善点が導入されました。ExoPlayer に、頻繁なユーザー主導のシーク用のスクラブ モードが追加されました。このモードは ExoPlayer.setScrubbingModeEnabled を使用して有効にできます。HlsInterstitialsAdsLoader で、サーバーガイド付き広告挿入のライブ配信がサポートされるようになりました。

MetadataRetriever が更新され、再生せずにメディア アイテムの再生時間を取得できるようになりました。Transformer では、experimentalSetMp4EditListTrimEnabled を使用した MP4 編集リストによる高速トリム オペレーションと、DefaultEncoderFactory.BuildersetEnableCodecDbLite を呼び出すことで有効になる CodecDbLite を介したチップセット固有のエンコーダ最適化が導入されました。

その他のアップデートには、PreCacheHelper を使用した Downloader での部分ダウンロードのサポート、ExoPlayer での XR 音声の自動ルーティング、より効率的な MediaCodec のインタラクションなどがあります。MediaSession モジュールでは、デフォルトで通知がより長く表示されるようになり、メディア セッションのデモアプリで再生再開機能が紹介されるようになりました。Kotlin と Compose で構築された新しい Composition デモアプリでは、高度なマルチアセット動画編集を実演しています。

記事 📚

#WeArePlay: コーディングでよりサステナブルな未来を創る

weareplay.webp

#WeArePlay イニシアチブでは、環境問題に取り組む Android アプリやゲームにスポットライトを当てています。Mayla、Flávia、Andréia、Ariane が開発したゲーム「BoRa — Iguaçu National Park」は、公園を訪れた際に自然教育をゲーム化して、アクセスしやすいインタラクティブな体験を提供します。Louis と Justin のアプリ CyberTracker は、文字を読めない先住民の追跡者がアイコンベースのインターフェースを通じて生物多様性データを記録できるようにし、保護活動を支援しています。最後に、Bharati 氏と Saurabh 氏が共同で設立した Earth5R は、環境教育を提供し、ユーザーをインターンシップやプロジェクトに結び付けて、グリーン経済のスキルを開発しています。

HDR とは何ですか? 🌟

hdr.webp

ハイ ダイナミック レンジ(HDR)により、Android デベロッパーは標準ダイナミック レンジ(SDR)を超えるピーク輝度を実現し、視覚的な忠実度を高めることができます。Android は、下位互換性のための UltraHDR などのテクノロジーを含め、動画と画像の HDR をサポートしています。

色を理解するには、次の 3 つのコンポーネントがあります。

  • ビット深度: 色の再現の精度を定義します。深度が高いほど、スムーズなトランジションが実現します。
  • 伝達関数: 数値のピクセル値を表示される輝度または色にマッピングし、非線形のヒトの視覚反応を調整します。たとえば、sRGB、HLG、PQ などがあります。
  • 色域: デバイスで再現できる色の範囲を表します。

HDR に関するよくある誤解:

  • 鮮やかな色: HDR 以前から Display P3 や Adobe RGB などの広色域が利用可能でしたが、BT.2020 コンテンツでも、ほとんどのディスプレイは P3 にクリップされます。
  • コントラストの向上/黒のディテールの向上: HDR は、同じディスプレイで SDR よりも黒を暗くするものではありません。OLED ディスプレイは、どちらにも無限のコントラストを提供します。PQ は暗い領域に多くのビットを割り当てますが、ユニバーサル HDR 機能ではありません。
  • ビット深度の増加: 一部の HDR 動画プロファイル(HDR10 など)では 10 ビットまたは 12 ビットのストリームが使用されますが、これは HDR 自体ではなく、これらのプロファイルに固有のものです。ビット深度の増加は、他の画像形式でも一般的です。

HDR は主に ピーク輝度が高いことを意味します。この「HDR ヘッドルーム」は、SDR を基準としたフローティング領域として定義されます。従来の HDR 動画では固定ヘッドルームがエンコードされることが多いですが、最新のディスプレイではダイナミック ヘッドルームが使用されるため、品質に差が生じることがあります。ウルトラ HDR やゲインマップなどのテクノロジーは、効率的なビット使用量で代替手段を提供します。Android の UI ツールキットは、extendedRangeBrightness API を利用して、RGBA_8888 でも HDR エクスペリエンスを提供します。

動画 📹

形状モーフィングを使用した高度な共有要素 | Jetpack Compose のヒント

Jetpack Compose で、高度な共有要素の遷移、洗練されたシェイプ モーフィング、リビール アニメーションが可能になりました。デベロッパーは、アプリの最上位で SharedTransitionLayout を構成し、Modifier.sharedBounds を使用して要素をリンクできます。

シェイプ モーフィングは、Material 3 の AndroidX グラフィック シェイプ ライブラリを活用して実現された重要な新機能です。これには、開始/終了の形状を定義した Morph オブジェクトを作成し、animateFloat(AnimatedVisibilityScope から)で進行状況を制御し、カスタム OverlayClip を介してクリップとして適用することが含まれます。出現エフェクトでは skipToLookaheadSizeskipToLookaheadPosition が使用されます。これらの高度なアニメーションはすべて、予測型「戻る」ジェスチャーにも対応しています。

Android Studio の Gemini: AI を活用した UI 開発

Android Studio の Gemini AI は、デザインからのコード生成(画像からコードへの変換を含む)、合成データによる Compose プレビューの作成、直接コマンドによる既存の UI の改良によって、UI 開発を支援します。

ランタイム対応 SDK を使用する

Android 14 では、プライバシーとセキュリティを強化するために、サードパーティ SDK を安全な別のプロセス サンドボックスに分離する新しいテクノロジーである SDK ランタイムが導入されています。

デベロッパー向け:

  • ランタイム対応(RE)SDK は、この別のプロセスで実行されます。
  • ランタイム対応(RA)SDK は、アプリ内の仲介役として機能します。
  • SdkSandboxManagerCompat を使用して RE SDK を読み込み、制約(フォアグラウンド、単一読み込みなど)を遵守します。
  • Shim ツールは、低レベルのプロセス間通信を簡素化します。
  • SandboxedSdkViewSandboxedUiAdapter を使用して、RE SDK から UI をレンダリングします。
  • SdkActivityLauncher を使用して SDK ランタイムからアクティビティを起動します。

WearOS Material 3 のシェイプ モーフィング | Jetpack Compose のヒント

Compose 向け Wear OS Material 3 で、シェイプ モーフィングが簡素化されました。デベロッパーは、IconButtonDefaults.animatedShapes を使用して丸いボタンにアニメーション付きの形状変化を簡単に追加したり、ButtonGroup コンポーネントと Modifier.animateWidth() を使用して幅の変化をアニメーション化するボタン グループを作成したり、TransformationSpec を使用してアイテムが画面の端に近づくにつれて拡大縮小と変形を行う垂直スクロール リスト(TransformingLazyColumn)を構築したりできます。

AndroidX リリース 🚀

AndroidX の変更点の概要を以下に示します。Android アプリ デベロッパーにとって最も関連性の高い変更点を優先的に説明します。

Compose ライブラリに影響する全体的な変更:

  • デフォルト minSdkAPI 23 に引き上げ: androidx.compose animationfoundationmaterialruntimeui の場合、デフォルトの最小 SDK バージョンが API 21 から API 23 に引き上げられました。つまり、これらの Compose ライブラリの最新のアルファ版を使用している場合、アプリは暗黙的に Android 6.0(Marshmallow)以上を必要とします。

Compose デベロッパー向けの主な変更点:

  • 新しい retain API(Compose ランタイム): rememberSaveable と同様の retain API を導入しました。ただし、シリアル化されずにコンポジション階層から離れる値に対して使用します。保存された値よりもライフサイクルが短く、ViewModel と同様の動作をします。コンポジションに出入りする可能性のあるコンポーザブルの状態を管理する新しい方法を提供します。
  • 共有要素の遷移の強化(Compose アニメーションと UI): 共有要素を動的に有効/無効にしたり、進行中の遷移を考慮したり、共有要素が破棄されたときに代替のターゲット境界を設定したりするための新しい API。レイアウトを固定するための新しい Modifier.skipToLookaheadPosition も利用できます。
  • Pager のプリフェッチの改善(Compose Foundation): Pager のプリフェッチ戦略で、単一のアイテムではなく「キャッシュ ウィンドウ」(1 ビューポート サイズ)が使用されるようになり、初期プリフェッチがデフォルトで有効になりました。また、スクロールをスムーズにするために、アイテムがより長く保持されます。
  • マウス/タッチパッドのフォーカス処理を改善(Compose Foundation と UI): ComposeViews は、フォーカスされたノードの外でポインタ ダウン イベント(マウスまたはタッチパッドから)が発生すると、フォーカスを自動的にクリアするようになりました。この機能はオプトアウトできます。
  • カスタマイズ可能なフォーカス長方形(Compose Foundation): FocusProperties で、デフォルトの境界ボックスではなくカスタム フォーカス領域を定義できるようになりました。これにより、スクロール可能なコンテナのフォーカス走査と「ビュー内に維持」ロジックが改善されます。
  • LifecycleOwner コンポーザブル(ライフサイクル): 新しいコンポーザブルにより、UI ツリー内で直接スコープ付き LifecycleOwner インスタンスを作成できます。これは、コンポーネントのライフサイクルを個別に管理する場合や、Navigation などのライブラリで特に便利です。
  • SavedStateHandleLifecycleSavedState)での Null 許容型のサポート: SavedStateHandleSavedStateRegistryOwner でのネイティブ サポートにより、Null 許容プロパティの保存と復元が簡素化されました。
  • 新しい LineHeightStyle.Mode.Tight(Compose Foundation と UI): 新しい Tight モードでは、背の高いグリフが切り取られる可能性があっても、行の高さを小さくすることができます。これにより、テキスト レイアウトをより正確に制御できます。
  • ダブルタップして単語を選択(Compose Foundation): SelectionContainerBasicTextField で単語をダブルタップして選択する機能のサポートを追加しました。
  • WindowInsets の動作の変更(Compose UI と Foundation):
    ◦ ディスプレイ カットアウトのパスを取得する新しい WindowInsets.cutoutPath API。
    isWindowInsetsDefaultPassThroughEnabled フラグが削除され、WindowInsets がデフォルトで消費されないようになり、子ビューがそれらを受け取れるようになりました。
  • AndroidView requestRectangleOnScreen 修正(Compose Foundation): AndroidView によって行われたリクエスト(EditText が画面上に留まろうとするなど)が、Compose に適切に伝播されるようになりました。
  • 2D マウスホイール スクロールを改善(Compose Foundation と UI): 2D マウスホイール スクロール イベントのサポートを改善しました。新しいテスト API と動作を制御するフラグが追加されています。

新しいライブラリとユーティリティ:

  • androidx.core:core-backported-fixes (新しいライブラリ): この新しいライブラリを使用すると、デベロッパーは、重大なバグの修正(特定のカメラのバグなどのプラットフォーム レベルの問題など)がデバイスに適用されているかどうかを確認できます。これにより、既知のバグが解決されたかどうかに応じて、異なるユーザー エクスペリエンスを提供できます。

その他の主な変更点:

  • ゲーム アクティビティと入力: GameActivity 向けに 16 KB ページサイズのデフォルト サポートとマウス サポートを追加しました。
  • Material3 ツールチップの位置: ツールチップの位置プロバイダが増え、アンカーの上、下、左、右に配置できるようになりました。
  • Material3 DatePicker修正: DatePicker が数値形式に独自の言語 / 地域を適用し、RTL 表示の問題を修正します。
  • TWA の display_override サポート(ブラウザ): display_override TWA マニフェスト プロパティのサポートを追加し、TWA の表示をより細かく制御できるようになりました。
  • 外部アプリ(ブラウザ)で初期 URL を起動: 外部ブラウザで TWA の初期 URL を起動できるようにするインテントを追加しました。

Android Developers Backstage

Android Developers Backstage の新しいエピソードが公開されました。

Compose での自動入力

Jetpack Compose 1.8 では、Compose のセマンティクス システムを活用して、自動入力機能が大幅に改善されています。デベロッパーは、テキスト フィールドに関連するコンテンツ タイプのセマンティクス(ユーザー名、パスワードなど)でタグ付けするだけで、システムレベルの自動入力を簡単に統合できるようになりました。これにより、自動入力ツリーを手動で管理する必要がなくなり、パフォーマンスが向上します。

 

それでは、👋

今回のニュースレターは以上です。 Android 16 QPR2 ベータ版 1Android Studio Narwhal の機能ドロップJetpack Compose 1.9Media 3 1.8シェイプ モーフィングCompose の自動入力など、さまざまな情報をお届けしました。

Android デベロッパーの世界からの次回の最新情報をお楽しみに。

作成者:

続きを読む