本日、Android 17 のベータ版 2 をリリースします。Google は、プライバシー、セキュリティ、洗練されたパフォーマンスを優先するプラットフォームの構築に引き続き取り組んでいます。このアップデートでは、EyeDropper API やプライバシーの保護連絡先選択ツールなど、さまざまな新機能が提供されます。また、高度なレンジング、クロスデバイス Handoff API なども追加しています。
このリリースは、リリース サイクル変更の一環として、第 2 四半期の年次メジャー SDK リリースに続くマイナー SDK アップデートとなります。
ユーザー エクスペリエンスとシステム UI
バブル
バブルは、メッセージ バブル API とは別の新しいフローティング UI エクスペリエンスを提供するウィンドウ モード機能です。ユーザーは、ランチャーでアプリアイコンを長押しすることで、スマートフォン、折りたたみ式デバイス、タブレットにアプリのバブルを作成できます。大画面では、タスクバーの一部としてバブルバーが表示されます。ユーザーはバブルバーを使用して、バブルの整理、バブル間の移動、画面上のアンカー ポイントへのバブルの移動、アンカー ポイントからのバブルの移動を行うことができます。
アプリがバブルとして正しく動作するように、マルチ ウィンドウ モードをサポートするためのガイドラインに沿って対応する必要があります。
バブルは、ベータ版 2 ではまだ完全には有効になっていません。今後の Android 17 のビルドでご確認ください。
EyeDropper API
新しいシステムレベルの EyeDropper API を使用すると、機密性の高い画面キャプチャ権限を必要とせずに、ディスプレイ上の任意のピクセルから色をリクエストできます。
val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result -> if (result.resultCode == Activity.RESULT_OK) {
val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
// Use the picked color in your app
}
}
fun launchColorPicker() {
val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
eyeDropperLauncher.launch(intent)
}連絡先選択ツール
ACTION_PICK_CONTACTS を介した新しいシステムレベルの連絡先選択ツールは、ユーザーがリクエストした特定のデータ フィールドにのみ、セッション ベースの一時的な読み取りアクセス権を付与します。これにより、広範な READ_CONTACTS 権限の必要性が軽減されます。また、デバイスの個人用プロファイルまたは仕事用プロファイルから選択することもできます。
val contactPicker = rememberLauncherForActivityResult(StartActivityForResult()) {
if (it.resultCode == RESULT_OK) {
val uri = it.data?.data ?: return@rememberLauncherForActivityResult
// Handle result logic
processContactPickerResults(uri)
}
}
val dataFields = arrayListOf(Email.CONTENT_ITEM_TYPE, Phone.CONTENT_ITEM_TYPE)
val intent = Intent(ACTION_PICK_CONTACTS).apply {
putStringArrayListExtra(EXTRA_PICK_CONTACTS_REQUESTED_DATA_FIELDS, dataFields)
putExtra(EXTRA_ALLOW_MULTIPLE, true)
putExtra(EXTRA_PICK_CONTACTS_SELECTION_LIMIT, 5)
}
contactPicker.launch(intent)タッチパッドとのポインタ キャプチャの互換性を改善
以前は、アプリがポインタをキャプチャしたときに、タッチパッドはマウスとは大きく異なる方法でイベントを報告していました。マウスによって報告される相対的な動きではなく、パッド上の指の位置を報告していました。このため、一人称視点のゲームでタッチパッドを適切にサポートすることは非常に困難でした。デフォルトでは、タッチパッドがキャプチャされると、システムはポインタの移動とスクロールのジェスチャーを認識し、マウス イベントと同様にレポートします。新しい「絶対」モードでキャプチャを明示的にリクエストすることで、以前の詳細な指の位置データをリクエストすることもできます。
// To request the new default relative mode (mouse-like events) // This is the same as requesting with View.POINTER_CAPTURE_MODE_RELATIVE view.requestPointerCapture() // To request the legacy absolute mode (raw touch coordinates) view.requestPointerCapture(View.POINTER_CAPTURE_MODE_ABSOLUTE)
インタラクティブな選択ツールの静止境界
Android の ChooserSession で getInitialRestingBounds を呼び出すことで、アプリはアニメーションとデータの読み込みが完了した後に Chooser が占めるターゲット位置を特定し、UI をより適切に調整できます。
接続性とクロスデバイス
クロスデバイスのアプリ引き継ぎ
新しい Handoff API を使用すると、別のデバイス(Android タブレットなど)で再開するアプリの状態を指定できます。オプトインすると、システムは CompanionDeviceManager を介して状態を同期し、ユーザーの付近のデバイスのランチャーにハンドオフの提案を表示します。この機能は、タスクをシームレスに継続できるように設計されており、ユーザーは Android エコシステム全体でワークフローを中断したところから再開できます。重要なのは、Handoff がネイティブ アプリ間の移行とアプリからウェブへのフォールバックの両方をサポートしていることです。これにより、最大限の柔軟性が提供され、受信デバイスにネイティブ アプリがインストールされていない場合でも、完全なエクスペリエンスが保証されます。
高度な測距 API
2 つの新しい測距技術のサポートを追加します。
- UWB DL-TDOA。アプリで UWB を使用して屋内ナビゲーションを行えるようになります。この API サーフェスは FIRA(Fine Ranging Consortium)4.0 DL-TDOA 仕様に準拠しており、プライバシーを保護した屋内ナビゲーション(アンカーによるデバイスのトラッキングを回避)を可能にします。
- 近接検出。アプリは、WFA(Wi-Fi Alliance)で採用されている新しい測距仕様を使用できます。この技術は、既存の Wi-Fi Aware ベースの測距仕様と比較して、信頼性と精度が向上しています。
データプランの強化
メディア品質を最適化するため、アプリは getStreamingAppMaxDownlinkKbps と getStreamingAppMaxUplinkKbps を使用して、ストリーミング アプリケーションに携帯通信会社が割り当てた最大データレートを取得できるようになりました。
コア機能、プライバシー、パフォーマンス
ローカル ネットワークへのアクセス
Android 17 では、不正なローカル ネットワーク アクセスからユーザーを保護するために、ACCESS_LOCAL_NETWORK 実行時の権限が導入されています。これは既存の NEARBY_DEVICES 権限グループに該当するため、すでに他の NEARBY_DEVICES 権限を付与しているユーザーには、再度プロンプトが表示されることはありません。この権限を宣言してリクエストすることで、アプリはスマートホーム デバイスやキャスト レシーバーなど、ローカル エリア ネットワーク(LAN)上のデバイスを検出して接続できるようになります。これにより、悪意のあるアプリがローカル ネットワークへの無制限のアクセスを悪用して、ユーザーの追跡やフィンガープリントを密かに行うことを防ぎます。Android 17 以降を対象とするアプリでは、LAN デバイスとの通信を維持するための 2 つのパスが用意されています。1 つは、システムを介したプライバシー保護のデバイス選択ツールを採用して権限プロンプトをスキップする方法、もう 1 つは、実行時にこの新しい権限を明示的にリクエストしてローカル ネットワーク通信を維持する方法です。
タイムゾーン オフセット変更のブロードキャスト
Android に、信頼性の高いブロードキャスト インテント ACTION_TIMEZONE_OFFSET_CHANGED が追加されました。これは、夏時間の移行時など、システムのタイムゾーン オフセットが変更されたときにトリガーされます。これは、既存のブロードキャスト インテント ACTION_TIME_CHANGED と ACTION_TIMEZONE_CHANGED を補完するものです。これらは、それぞれ Unix タイムスタンプが変更されたときと、タイムゾーン ID が変更されたときにトリガーされます。
NPU の管理と優先順位付け
Android 17 をターゲットとし、NPU に直接アクセスする必要があるアプリは、NPU へのアクセスがブロックされないように、マニフェストで FEATURE_NEURAL_PROCESSING_UNIT を宣言する必要があります。これには、LiteRT NPU デリゲート、ベンダー固有の SDK、非推奨の NNAPI を使用するアプリが含まれます。
ICU 78 と Unicode 17 のサポート
コア国際化ライブラリが ICU 78 に更新され、新しいスクリプト、文字、絵文字ブロックのサポートが拡張され、時間オブジェクトの直接フォーマットが可能になりました。
SMS OTP 保護
Android では、OTP を含む SMS メッセージへのアクセスを自動的に遅らせることで、SMS OTP の保護を強化しています。以前は、この保護機能は主に SMS Retriever 形式に焦点を当てており、SMS Retriever ハッシュを含むメッセージの配信は、ほとんどのアプリで 3 時間遅延されていました。ただし、デフォルトの SMS アプリなどの特定のアプリや、ハッシュに対応するアプリは、この遅延の対象外となります。このアップデートにより、OTP を含むすべての SMS メッセージに保護が拡張されます。ほとんどのアプリでは、OTP のハイジャックを防ぐため、OTP を含む SMS メッセージには 3 時間の遅延後にのみアクセスできるようになります。SMS_RECEIVED_ACTION ブロードキャストは保留され、SMS プロバイダのデータベース クエリはフィルタされます。SMS メッセージは、遅延後にこれらのアプリで利用できるようになります。
WebOTP 形式の SMS メッセージへのアクセスを遅らせる
アプリに SMS メッセージの読み取り権限があるものの、OTP の対象受信者ではない場合(ドメイン検証で判断)、WebOTP 形式の SMS メッセージにアクセスできるようになるのは 3 時間経過後となります。この変更は、メッセージに記載されているドメインに関連付けられたアプリのみが確認コードをプログラムで読み取れるようにすることで、ユーザーのセキュリティを向上させることを目的としています。この変更は、対象 API レベルに関係なく、すべてのアプリに適用されます。
OTP を含む標準の SMS メッセージへのアクセスが遅れる
WebOTP または SMS Retriever 形式を使用しない OTP を含む SMS メッセージの場合、ほとんどのアプリでは、OTP SMS にアクセスできるようになるのは 3 時間後です。この変更は、Android 17(API レベル 37)以降を対象とするアプリにのみ適用されます。
デフォルトの SMS、アシスタント アプリ、コネクテッド デバイスのコンパニオン アプリなど、特定のアプリはこの遅延の対象外となります。
OTP 抽出のために SMS メッセージの読み取りに依存しているすべてのアプリは、引き続き機能するように、SMS Retriever API または SMS User Consent API の使用に移行する必要があります。
Android 17 のスケジュール
このベータ版から、3 月を予定しているプラットフォームの安定版マイルストーンに迅速に移行する予定です。このマイルストーンでは、最終版の SDK / NDK API が提供されます。それ以降、アプリは SDK 37 をターゲットにして Google Play に公開できるようになります。これにより、Android 17 の一般提供が開始されるまでの数か月間にテストを完了し、ユーザー フィードバックを収集できます。
1 年間のリリース
Android 17 では、四半期ごとのリリースで引き続きアップデートを提供する予定です。第 2 四半期のリリースは、アプリの動作に影響する変更が予定されている唯一のリリースです。第 4 四半期には、API と機能を追加した SDK のマイナー リリースを予定しています。
Android 17 を使ってみる
サポート対象の Google Pixel デバイスを登録すると、このアップデートと今後の Android ベータ版のアップデートを無線(OTA)で入手できます。Google Pixel デバイスをお持ちでない場合は、Android Studio で Android Emulator と 64 ビット システム イメージを使用できます。
現在 Android ベータ プログラムに参加している場合は、ベータ版 2 への無線アップデートが提供されます。
Android 26Q1 ベータ版をご利用で、26Q1 の最終安定版を適用してベータ版を終了したい場合は、26Q2 ベータ版 2 への無線アップデートを無視して、26Q1 のリリースをお待ちください。
皆様からのフィードバックをお待ちしております。フィードバック ページから問題の報告や機能リクエストの送信を行ってください。早期にフィードバックをお送りいただくと、最終リリースにより多くのフィードバックを反映させることができます。
Android 17 の開発エクスペリエンスを最適化するには、Android Studio(Panda)の最新のプレビュー版を使用することをおすすめします。設定が完了したら、次のことを行う必要があります。
- 新しい SDK でコンパイルし、CI 環境でテストし、フィードバック ページのトラッカーで問題を報告してください。
- 現在のアプリの互換性をテストし、Android 17 の変更による影響を受けるかどうかを確認します。また、Android 17 を搭載したデバイスまたはエミュレータにアプリをインストールして、広範なテストを行います。
プレビュー / ベータ版のシステム イメージと SDK は、Android 17 のリリース サイクル全体を通じて定期的に更新されます。ベータ版ビルドをインストールすると、今後のアップデートが自動的に提供されます。
それ以降のすべてのプレビューとベータ版の無線(OTA)アップデートを受け取ることができます。
詳しくは、Android 17 デベロッパー サイトをご覧ください。
会話に参加する
今年後半のプラットフォームの安定版と Android 17 の一般提供に向けて、皆様からのフィードバックは引き続き最も貴重な資産です。Canary チャンネルの先行ユーザーの方も、Beta 2 でテストしているアプリ デベロッパーの方も、ぜひコミュニティに参加してフィードバックをお寄せください。ぜひお聞かせください。
-
サービスに関する最新情報本日、Android Dev Summit において、日常的な摩擦を解消し、優れた Android アプリをより柔軟に構築できるように設計された多くのツールと API の幅広い提供を発表します。
Matthew McCullough • 所要時間: 4 分 -
サービスに関する最新情報本日、Google は、エンジニアが完了するまでに数日から 1 週間かかる非常に複雑なタスクである、長期的なタスク(LHT)の最初のセットをリリースします。また、対応するモデル プロバイダのエージェントから、エージェント評価も導入します。
Matthew McCullough • 所要時間: 3 分 -
サービスに関する最新情報本日、Android 17 をリリースし、サポート対象のほとんどの Google Pixel デバイスでご利用いただけるようになりました。Android 17 を搭載した新しいデバイスは、今後数か月以内にリリースされる予定です。
Matthew McCullough • 所要時間: 13 分
Android 開発に関する最新の分析情報を毎週メールでお届けします。