Googleがスマホなど向け次期OS「Android 15」の開発者向けプレビュー版第2弾をリリース!

Googleは21日(現地時間)、スマートフォン(スマホ)やタブレットなど向けプラットフォーム「Android」の次期バージョン「Android 15(開発コード名:VanillaIceCream)」( https://developer.android.com/about/versions/15 )における開発者向けプレビュー版の第2弾「Android 15 Developer Preview 2」(以下、DP2)を公開したとお知らせしています。

提供されているのは今年2月に公開された「Android 15 Developer Preview 1」(以下、DP1)と同様にAndroidエミュレーターのほか、同社が「Made by Google」として自社ブランドで展開する「Pixel」シリーズの「Pixel 6」以降のスマホや「Pixel Tablet」でテストするためのファクトリーイメージやSDKが含まれています。

これらのPixelシリーズでは「Android Flash Tool」やファクトリーイメージ( https://developer.android.com/about/versions/15/download )から手動で導入するようになっているほか、すでにDP1を導入している場合はネットワーク経由のソフトウェア更新(OTA)も提供されており、OTAイメージ( https://developer.android.com/about/versions/15/download-ota )も提供されています。

DP2ではPixelシリーズにおけるビルド番号が「AP31.240223.016.A3」で、すでにAndroidセキュリティーパッチレベルは「March 2024」となっており、Google Play servicesは「24.08.12」、エミュレーターでは64bitのx86およびARM v8-Aがサポートされ、APIレベルはDP1と同様に「V DP2」となっています。

なお、ネットワーク経由によるソフトウェア更新(OTA)は現時点では用意されておらず、今後提供が開始される予定の一般向けベータ版「Android Beta Program」( https://g.co/androidbeta )によって提供され、ベータ版はPixelシリーズ以外にも従来通りに他メーカーの一部製品にも順次提供される見込みとなっています。


Android 15は現在の最新バージョンの「Android 14」の次のメジャーアップデートとなる予定のバージョンで、最近の流れである生産性の向上に役立つプラットフォームを構築するための取り組みを継続すると同時に最も多様な製品上で優れたメディア体験を生み出すほか、バッテリーへの影響を最小限に抑え、アプリのパフォーマンスを最大化してスムーズに動作するようにし、利用者のプライバシーやセキュリティーを保護するための新機能を提供するということです。

これにより、Androidを搭載することによってハイエンドなカメラ機能や強力なGPU、鮮やかなディスプレイ、AI処理などのプレミアムなハードウェアをアプリで活用できるようになり、折りたたみ式や反転式などのスマホやタブレットなどの大画面製品の需要は増え続けており、これらの価値の高い製品をより消費者に届ける機会が生まれるようになるとのこと。またAndroidではアプリがAIの最新技術を活用できるようにするためのツールとライブラリーの提供にも取り組んでいるとしています。


Android 15の正式版のリリースまでのスケジュールは前回のDP1、今回のDP2に続いて4月に初のベータ版となる「Beta 1」が提供され、5月に「Beta 2」、6月に最初の安定版(Platform Stability)となる「Beta 3」、7月以降の今夏に正式版に近い最終テストとなる「Beta 4」以降が提供され、その後にAOSPとエコシステム向けの正式版がリリースされる予定となっています。

今回、案内された新機能は以下の通り。なお、Googleでは四半期ごとに新機能「Feature Drop」を追加しており、Android Beta Programでもプラットフォームリリース(QPR)を実施して年間を通じて拡張機能と新機能を提供し続けていますが、これらのAndroid Developer PreviewやAndroid Beta Programに関するフィードバックはAndroid の継続的な改善に重要な役割を果たすため、Androidをすべての人にとって有用なプラットフォームにするために協力して欲しいとしています。

<通信関連>
・衛星通信のサポート拡充
Android 15では衛星に接続する「衛星通信」のプラットフォームへのサポートを引き続き拡張し、衛星通信機能全体で一貫したユーザー体験(UX)を確保するためのいくつかのユーザーインターフェース(UI)要素が含まれています。アプリは「ServiceState.isUsingNonTerrestrialNetwork()」を使ってスマホなどの製品が衛星に接続されていることを検出して完全なネットワーク サービスが利用できない理由をより深く認識できるようになります。さらに、Android 15ではメッセージの送受信に衛星接続を使用できるようになり、プリインストールされているRCSアプリだけでなく、SMSやMMSのメッセージアプリでも衛星通信が利用できるようになります。



・NFC決済機能がよりスムーズに
Android 15ではこれまでのAndroidにおける堅牢な非接触IC機能「NFC」のエコシステムをサポートしながらタッチ決済をよりシームレスで信頼性の高いものにするよう取り組んでいます。サポートされている製品ではアプリはNFCアダプターに「監視モード(observe mode)」に遷移するように要求可能となります。この場合に製品はNFCリーダーに対して「Listen」が有効になりますが、応答せずにアプリが「PollingFrame」オブジェクトを送信します。これにより、NFCリーダーへの最初の通信に先立って認証に使えるため、多くの場合にワンタップのトランザクションが可能になります。

<開発者の生産性向上>
・PDF機能の改善
Android 15 DP2には「PdfRenderer API」に対する大幅な改善の早期プレビュー機能が含まれており、パスワードで保護されたファイルの表示や注釈、フォーム編集、検索、選択してコピーなどの高度な機能をアプリに組み込む機能が提供されます。またリニアライズドPDFの最適化がサポートされており、ローカルでのPDF表示を高速化してリソースの使用量を削減します。

さらにPdfRenderer APIはAndroidプラットフォームのリリースとは関係なく、Google Play システム アップデートを使用して更新できるモジュールに移動され、新たにPdfRendererPreVと呼ばれる互換性のあるAndroid 15より前のバージョンのAPIを作成することで、Android Rへのこれらの変更をサポートしています。同社ではPdfRenderer APIに加えた機能強化に関する開発者からのフィードバックを重視しており、今後のAndroid Jetpackライブラリーを使ってこれらの PIをアプリに簡単に組み込めるようにする予定だとしています。



・自動言語切り替えの改良
Android 14では言語間の自動切り替えを備えた製品上の多言語音声認識が追加されましたが、特に2つの発話間の休止時間が少なく言語が切り替わる場合に単語が欠落する可能性があります。Android 15ではアプリがユースケースに合わせてこの切り替えを調整できるようにする追加のコントロールが追加されました。「EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS」は自動切り替えをオーディオセッションの開始までに限定しますが、「EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES」は定義された回数の切り替え後に言語切り替えを非アクティブにします。これは特にセッション中に自動検出されるべき単一の言語が話されることが予想される場合に有用な改良となり得えます。

・きめ細かな改行
Android 15以降では「TextView」とその基になる改行は読みやすさを向上させるためにテキストの指定された部分を同じ行に保持できるようになります。この改行のカスタマイズを利用するには文字列リソースの タグまたは「createNoBreakSpan」を使用します。同様に タグまたは「createNoHyphenationSpan」を使用すると、単語をハイフネーションから保護できます。

記述例とその表示例:
<resources>
<string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>


・拡張されたインテントフィルター機能
Android 15には「UriRelativeFilterGroup」によるより正確なインテント解決のサポートが組み込まれています。これにはURLクエリパラメーターやURLフラグメント、ブロック/除外ルールなど、それぞれが満たされる必要があるインテントマッチングルールのセットを形成する「UriRelativeFilter」オブジェクトのセットが含まれています。これにより、アプリはWebでホストされるディープリンクの動的な要求にうまく対応できるようになります。

これらのルールはAndroidManifestで新しい タグを使用して定義できます。このタグにはオプションで「android:allow」タグを含めることができ、これらのタグには既存のデータタグ属性と、新しい「android:query」および「android:fragment」属性を使用するタグを含めることができます。

サポートされるAndroidManifest構文の例:
<intent-filter>  <action android:name="android.intent.action.VIEW" />  <category android:name="android.intent.category.BROWSABLE" />  <data android:scheme="http" />  <data android:scheme="https" />  <data android:domain="astore.com" />  <uri-relative-filter-group>    <data android:pathPrefix="/auth" />    <data android:query="region=na" />  </uri-relative-filter-group>  <uri-relative-filter-group android:allow="false">    <data android:pathPrefix="/auth" />    <data android:query="mobileoptout=true" />  </uri-relative-filter-group>  <uri-relative-filter-group android:allow="false">    <data android:pathPrefix="/auth" />    <data android:fragmentPrefix="faq" />  </uri-relative-filter-group></intent-filter>


・OpenJDK APIのサポート追加
Android 15では引き続いてOpenJDK APIが追加され、Android 15 DP2にはmath/strictmathメソッドのサポート、シーケンスされたcollection/map/setを含む多くのユーティリティーの更新、DeflaterでのByteBufferのサポート、セキュリティキーの更新が含まれています。これらのAPIはGoogle Play システムのアップデートを通じてAndroid 12以降からAndroid 15を実行する10億台以上の製品で更新されるため、最新機能を利用できます。

<より多くのアプリで画面上の柔軟性が向上>
・カバーディスプレイのサポート
アプリはAndroid 15が使用するプロパティーを宣言してサポートされている折りたたみが可能な製品の小さなカバーディスプレイにアプリまたはアクティビティーを表示できるようにすることができます。これらの画面は小さすぎるため、Androidアプリを実行するための互換ターゲットとして考慮することはできませんが、アプリはそれらのサポートをオプトインすることができ、より多くの場所でアプリを利用できるようになります。

<プライバシーやセキュリティー>
・画面録画の検出
Android 15ではアプリが録画されていることを検出するためのサポートが追加されています。画面録画内でアプリが表示または非表示の間を遷移するたびにコールバックが呼び出されます。これにより、アプリが機密性の高い操作を実行している場合にそれが記録されていることをユーザーに通知できます。なお、登録プロセスのUIDが所有するアクティビティーが記録されている場合にはアプリは表示されているとみなされます。

val mCallback = Consumer < Int > { state -> if ( state == SCREEN_RECORDING_STATE_VISIBLE ) { // 記録されています} else { // 記録されていません} }
楽しいonStart ( ) { super . onStart () val初期状態=
windowManager 。addScreenRecordingCallback ( mainExecutor , mCallback )
mCallback 。受け入れます(初期状態) }
楽しいonStop ( ) { super . onStop ()
windowManager 。RemoveScreenRecordingCallback ( mCallback ) }


<Androidの効率化>
・ApplicationStartInfo API
Android でのアプリの起動は常に少し謎でした。アプリ内で、それが冷たい状態、暖かい状態、または熱い状態から始まったかどうかを知る簡単な方法はありませんでした。プロセスのフォーク、onCreate の呼び出し、最初のフレームの描画など、さまざまな起動フェーズでアプリがどれくらいの時間を費やしたかを知るのは困難でした。アプリケーション クラスがインスタンス化されたとき、アプリケーションがブロードキャスト、コンテンツ プロバイダー、ジョブ、バックアップ、起動完了、アラーム、またはアクティビティのいずれから開始されたのかを知る方法はありませんでした。

Android 15 のApplicationStartInfo API では、これらすべてをはじめとするさまざまな機能が提供されます。独自のタイムスタンプをフローに追加して、タイミング データを 1 か所に簡単に収集できるようにすることもできます。メトリクスの収集に加えて、ApplicationStartInfo を使用してアプリの起動を直接最適化することができます。たとえば、ブロードキャストによるアプリの起動時に、Application クラス内でコストのかかる UI 関連ライブラリのインスタンス化を排除できます。

・パッケージ停止状態への変更
Android 15には「PackageManager」の停止状態に対するいくつかの改善が含まれています。停止状態にあるアプリはユーザーの直接の操作によってのみこの状態を終了する必要があります。さらに停止状態に入ったアプリは「PendingIntent」を削除します。開発者が保留中のインテントを再登録できるようにするため、アプリは停止状態から解除されると、BOOT_COMPLETEDブロードキャストを受信するようになります。最後に新しい「ApplicationStartInfo」にはアプリが停止状態になったことを開発者に知らせるための「ApplicationStartInfo.wasForceStopped()」も含まれます。

・アプリサイズの詳細情報
Androidではアプリのインストールされたサイズを1つのバイト数として要約するAPI「StorageStats.getAppBytes()」提供しています。これはAPKサイズやAPKから抽出されたファイルサイズ、生成されたファイルの合計です。AOT(Ahead-of-Time)コンパイル済みコードなどの製品上でこの数値はアプリがストレージをどのように使用しているかについてはあまり意味がありません。

これに対し、Android 15では新しいAPI「StorageStats.getAppBytesByDataType([type])」が追加されました。これにより、Apkファイルの分割、AOTおよび高速化関連のコード、Dexメタデータ、ライブラリー、ガイド付きプロファイルなど、アプリがすべてのストレージをどのように使用しているかを把握できます。

・フォアグラウンドサービスの変更
Android 14ではフォアグラウンドサービスタイプが必要になりました。ドキュメントにはdataSync Foreground ServiceタイプがAndroidの将来のバージョンで非推奨になることが記載されています。dataSync Foreground Serviceタイプからの移行をサポートするために、Android 15には「mediaProcessing Foreground Serviceタイプが含まれています。これはメディアを別の形式に変換するなど、メディアアセットに対して時間のかかる操作を実行するために使用されます。将来のベータリリースではこのサービスの実行時間制限が6時間になります。

・SQLiteデータベース
Android 15ではアプリに現れる可能性のある特定のパフォーマンス問題を対象とした基盤となるSQLiteエンジンの高度な機能を公開する新しいAPI「SQLite」が導入されています。開発者はこのSQLiteデータベースを最大限に活用するために、SQLiteパフォーマンスのベストプラクティスを参照する必要があります。特に大規模なデータベースを操作する場合や遅延の影響を受けやすいクエリを実行する場合には注意が必要です。

 ・読み取り専用DEFERREDトランザクション:読み取り専用(書き込みステートメントを含まない)トランザクションを発行する場合は、beginTransactionReadOnly()およびbeginTransactionWithListenerReadOnly ( SQLiteTransactionListener ) を使用して読み取り専用DEFERREDトランザクションを発行します。このようなトランザクションは相互に同時に実行でき、データベースがWALモードの場合は「IMMEDIATE」または「EXCLUSIVE」トランザクションと同時に実行できます。
 ・行数とID:追加のクエリを発行せずに変更された行数または最後に挿入された行 ID を取得するための新しい API が追加されました。getLastChangedRowCount()は現在のトランザクション内の最新のSQLステートメントによって挿入または更新、削除された行の数を返します。一方、getTotalChangedRowCount()は現在の接続の数を返します。getLastInsertRowId() は、現在の接続に挿入される最後の行の「rowid」を返します。
 ・生のステートメント:生のSQliteステートメントを発行してコンビニエンスラッパーおよびラッパーによって発生する可能性のある追加の処理オーバーヘッドをバイパスします。

<メディアの改良>
・HDRヘッドルームコントロール
Android 15では基盤となる製品の機能とパネルのビット深度に適したHDRヘッドルームが選択されます。単一のHDRサムネイルを表示するメッセージングアプリなど、多数のSDRコンテンツを含むページの場合、これがSDRコンテンツの知覚的な明るさに悪影響を与える可能性があります。Android 15では「setDesiredHdrHeadroom」を使ってHDRヘッドルームを制御し、SDRコンテンツとHDRコンテンツのバランスを取ることができます。


・ラウドネスコントロール
Android 15ではCTA-2075ラウドネス標準のサポートが導入され、オーディオのラウドネスの不一致を回避してユーザーがコンテンツを切り替えるときに常に音量を調整する必要がなくなります。このシステムは出力デバイス(ヘッドホンやスピーカー)の既知の特性と、AACオーディオコンテンツで利用可能なラウドネスメタデータを利用してオーディオラウドネスとダイナミックレンジ圧縮レベルをインテリジェントに調整します。

この機能を有効にするにはAACコンテンツでラウドネスメタデータが利用可能であることを確認してアプリでプラットフォーム機能を有効にする必要があります。このためには関連するオーディオトラックからのオーディオセッションIDを使用してそのcreate Factoryメソッドを呼び出し、LoudnessCodecControllerオブジェクトをインスタンス化します。

これにより、オーディオ更新の適用が自動的に開始されます。OnLoudnessCodecUpdateListenerを渡すと、 MediaCodecに適用される前にラウドネスパラメータを変更できます。またAndroidX media3 ExoPlayerはAPI「LoudnessCodecController 」を利用してシームレスなアプリ統合を実現するように間もなく更新されます。

// メディアには MPEG_4 または MPEG_D タイプのメタデータが含まれていますval mediaCodec = ... val audioTrack = AudioTrack 。ビルダー() 。setSessionId (セッションId ) 。build () ... // MediaCodec にパラメータを適用する新しいラウドネス コントローラを作成しますtry { val lcController = LoudnessCodecController . create ( mSessionId ) // 追加された各 MediaCodec に対するオーディオ更新の適用を開始します

・Virtualizerの代わりにSpatializerを使用する
Android 12には製品上のサウンド空間化の機能と動作をクエリできるようにするSpatializerクラスが含まれています。Android 15ではVirtualizerクラスを廃止し、代わりにAudioAttributes.Builder.setSpatializationBehaviorを使用して空間化がサポートされている場合にコンテンツをどのように再生するかを指定します。

AndroidX media3 ExoPlayer 1.0では製品が空間オーディオをサポートしている場合にマルチチャンネルオーディオに対してデフォルトで空間オーディオが有効になります。機能を制御するAPIなどの詳細については過去の投稿やドキュメントを参照してください。

<ユーザー体験>
AutomaticZenRulesを使うと、アプリは注意管理(応答不可)ルールをカスタマイズし、それらをいつアクティブ化・非アクティブ化するかを決定できます。Android 15ではUXの向上を目的としてこれらのルールが大幅に強化されています。これは次のようにして行われます。

 ・AutomaticZenRuleにタイプを追加してシステムが一部のルールに特別な処理を適用できるようにします。
 ・AutomaticZenRuleにアイコンを追加してモードをより認識しやすくします。
 ・ユーザーに対してルールがアクティブになる条件を説明するtriggerDescription文字列をAutomaticZenRuleに追加します。
 ・ZenDeviceEffectsをAutomaticZenRuleに追加してグレースケール表示やナイトモード、壁紙の減光などをルールでトリガーできるようにしました。

<行動の変化>
・どこにでもあるエレガントなフォント
アプリがAndroid 15をターゲットにすると、elegantTextHeight TextView属性がデフォルトで「true」になり、デフォルトで使用されるコンパクトフォントが垂直方向の大きなメトリクスを持ついくつかのスクリプトでより読みやすいフォントに置き換えられます。コンパクトフォントはレイアウトの破壊を防ぐために導入されました。Android 13ではfallbackLineSpacing属性を利用してテキストレイアウトの垂直方向の高さを伸ばすことができるため、これらの破損の多くを防止できます。

Android 15ではコンパクトフォントがまだシステムに残っているため、アプリでelegantTextHeightを「false」に設定して以前と同じ動作を得ることができますが、今後のリリースではサポートされない可能性があります。そのため、アプリがアラビア語やラオス語、ミャンマー語、タミル語、グジャラート語、カンナダ語、マラヤーラム語、オーディア語、テルグ語、タイ語をサポートしている場合にはelegantTextHeightを「true」に設定してアプリをテストするように案内されています。


Android 14 のデフォルトの動作



Android 15 をターゲットとするアプリケーションのデフォルト動作




記事執筆:memn0ck


■関連リンク
・エスマックス(S-MAX)
・エスマックス(S-MAX) smaxjp on Twitter
・S-MAX - Facebookページ
・Android 15 関連記事一覧 - S-MAX
・Android Developers Blog: The Second Developer Preview of Android 15
・Android 15  |  Android Developers