Android 6.0 API

Android 6.0(M) では、ユーザーとアプリ デベロッパー向けに新機能を提供しています。このドキュメントでは、 注目すべき API を紹介しました。

開発する

Android 6.0 向けのアプリの作成を開始するには、まず、 Android SDK をご覧ください。次に、SDK Manager を使用します。 Android 6.0 SDK Platform と System Image をダウンロードします。

対象 API レベルを更新する

Android デバイス向けにアプリを最適化するには、以下を行います。 targetSdkVersion の設定 "23" さん、Android にアプリをインストールしましょう システム イメージを作成してテストし、更新したアプリを おすすめします。

Android API を使用しながらも、古いシステムや コードに、システムの API レベルをチェックする条件を追加して、 minSdkVersion でサポートされていない API を実行する前に、この API を使用してください。 下位互換性を維持する方法については、Google Cloud の 異なるプラットフォーム バージョン

API レベルの仕組みについて詳しくは、API とは何かをご覧ください。 レベル

指紋認証

このリリースでは、Google 管理コンソール上で指紋スキャンを使用してユーザーを認証できる新しい API が提供されます。 使用する場合は、これらの API を Android Keystore システム

指紋スキャンでユーザーを認証するには、新しい FingerprintManager クラスを使用して、 authenticate() メソッドを呼び出します。アプリは互換性のある 指紋認証センサー付きのデバイス指紋のユーザー インターフェースを実装する必要があります UI で標準の Android 指紋認証アイコンを使用します。 Android の指紋アイコン(c_fp_40px.png)は、 生体認証のサンプル。 指紋認証を使用するアプリを複数開発する場合は、各アプリで ユーザーの指紋を個別に認証します。

アプリでこの機能を使用するには、まず USE_FINGERPRINT 権限を宣言する必要があります。

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
指紋認証機能を表示するモバイル

アプリでの指紋認証の実装については、 生体認証のサンプル。 これらの認証の使用方法のデモンストレーションについては、 API を他の Android API と組み合わせて使用する方法については、動画をご覧ください。 <ph type="x-smartling-placeholder"></ph> Fingerprint API と Payment API の使用

この機能をテストする場合は、次の操作を行います。

  1. Android SDK Tools Revision 24.3 をインストールします(まだインストールしていない場合)。
  2. エミュレータに新しい指紋を登録します。 [設定] >セキュリティ >指紋認証] に移動し、登録手順に沿って操作します。
  3. エミュレータを使用して、 次のコマンドを実行します。同じコマンドを使用して、ロック画面での指紋のタッチイベントをエミュレートします。 説明します
    adb -e emu finger touch <finger_id>
    

    Windows では、場合によっては、telnet 127.0.0.1 <emulator-id> を実行してから、 finger touch <finger_id>

認証情報の確認

アプリは、ユーザーが最後にデバイスのロックを解除した日時に基づいてユーザーを認証できます。この ユーザーが追加のアプリ固有のパスワードを覚える必要がなくなり、パスワードを を使用して、独自の認証ユーザー インターフェースを実装できます。アプリではこの機能を使用する ユーザー認証のための公開鍵または秘密鍵の実装と組み合わせて使用します。

ユーザーが成功した後に同じキーを再利用できるタイムアウト時間を設定する 新しいエンドポイントを setUserAuthenticationValidityDurationSeconds() メソッドをKeyGeneratorまたは KeyPairGenerator

再認証ダイアログを過度に表示することは避けてください。アプリは、 まず暗号化オブジェクトを暗号化し、タイムアウトになった場合は、 createConfirmDeviceCredentialIntent() メソッドを使用して、アプリ内でユーザーを再認証します。

アプリのリンク

このリリースでは、より強力なアプリリンクを提供することで、Android のインテント システムを強化しました。 この機能を使用すると、所有しているウェブドメインにアプリを関連付けることができます。根拠 関連付けを行うと、プラットフォームは、特定のイベントを処理するために使用するデフォルト アプリを ウェブリンクを設定し、ユーザーにアプリの選択を求めるプロンプトをスキップさせることができます。この機能の実装方法については、以下をご覧ください。 アプリリンクの処理

アプリの自動バックアップ

アプリのフルデータ バックアップと自動復元が実行されるようになりました。アプリのターゲットを Android 6.0(API レベル 23)でこの動作を有効にします。コードを追加する必要はありません ユーザーが Google アカウントを削除すると、バックアップ データも削除されます。この手法について バックアップする対象を設定する方法については、 アプリの自動バックアップを構成する

直接共有

ダイレクト シェア機能を表示しているモバイル デバイスの下部

このリリースでは、ユーザーが直感的かつすばやく共有できるようにするための API が提供されます。今すぐ アプリ内で特定のアクティビティを起動する直接共有ターゲットを定義します。これらのダイレクト シェアは、 ターゲットは [共有] メニューを介してユーザーに公開されます。ユーザーはこの機能を使用して コンテンツを他のアプリからターゲット(連絡先など)に送信できます。たとえば、ダイレクト シェア ターゲットは 別のソーシャル ネットワーク アプリでアクティビティを開始して、ユーザーがコンテンツを そのアプリで特定の友だちやコミュニティに アクセスすることもできます

直接共有ターゲットを有効にするには、 ChooserTargetService クラス。宣言する 必要があります。その宣言内で、 BIND_CHOOSER_TARGET_SERVICE 権限と 使用してインテント フィルタを SERVICE_INTERFACE アクション。

次の例は、Pod を Pod 内で宣言して マニフェスト内の ChooserTargetService

<service android:name=".ChooserTargetService"
        android:label="@string/service_name"
        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
    <intent-filter>
        <action android:name="android.service.chooser.ChooserTargetService" />
    </intent-filter>
</service>

公開するアクティビティごとに ChooserTargetService、追加 この名前を持つ <meta-data> 要素 アプリ マニフェスト内の "android.service.chooser.chooser_target_service"

<activity android:name=".MyShareActivity”
        android:label="@string/share_activity_label">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
    </intent-filter>
<meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value=".ChooserTargetService" />
</activity>

音声操作

このリリースでは、新しい音声操作 API が提供されます。 音声操作 を使用すると、アプリに会話音声エクスペリエンスを組み込むことができます。呼び出し isVoiceInteraction() メソッドを使用して、音声操作がトリガーされたかどうかを判断します。 確認できます。その場合、アプリは VoiceInteractor クラスを使用してユーザーに音声による確認を求める場合は、 選択することもできます。

ほとんどの音声操作は、ユーザーの音声操作から発生します。音声操作アクティビティでは、 ただし、ユーザー入力なしで開始することもできます。たとえば、音声で起動した別のアプリなどです。 音声操作を起動するインテントを送信することもできます。アクティビティが ユーザーの音声クエリや別の音声操作アプリから起動した場合は、 isVoiceInteractionRoot() メソッドを使用します。別のアプリが 場合、メソッドは false を返します。その場合、アプリでユーザーに確認を求めるメッセージが 確認しました。

音声操作の実装について詳しくは、 音声操作のデベロッパー サイトをご覧ください。

Assist API

このリリースでは、ユーザーがアシスタントを介してアプリを利用する新しい方法が提供されます。使用するには 現在のコンテキストを使用するには、ユーザーがアシスタントを有効にする必要があります。有効にすると、ユーザーは どのアプリ内でも、ホームボタンを長押しすることでアシスタントを呼び出すことができます。

アプリで現在のコンテキストをアシスタントと共有しないことを選択するには、 FLAG_SECURE フラグ。このコースでは、 プラットフォームからアシスタントに渡される標準の情報セットに基づいて、アプリは 新しい AssistContent クラスを使用して、追加情報を提供します。

アプリから追加のコンテキストをアシスタントに提供する手順は次のとおりです。

  1. Application.OnProvideAssistDataListener インターフェースを実装します。
  2. 以下を使用してこのリスナーを登録します。 registerOnProvideAssistDataListener()
  3. アクティビティ固有のコンテキスト情報を提供するには、 onProvideAssistData() また、必要に応じて、新しい onProvideAssistContent() 呼び出すことができます。

Adoptable Storage デバイス

今回のリリースでは、SD カードなどの外部ストレージ デバイスを外部ストレージ デバイスとして活用できるようになりました。新しい 外部ストレージ デバイスは、内部ストレージのように動作するようにデバイスを暗号化およびフォーマットします。この 機能を使用すると、アプリとそのアプリの個人データの両方をストレージ デバイス間で移動できます。日時 アプリが移動した場合、システムは android:installLocation 優先値を宣言します。

アプリが次の API やフィールドにアクセスする場合、返されるファイルパスに注意してください。 アプリが内部ストレージ デバイスと外部ストレージ デバイスの間で移動すると、動的に変化します。 ファイルパスを作成するときは、常にこれらの API を動的に呼び出すことを強くおすすめします。 ハードコードされたファイルパスを使用したり、以前にビルドした完全修飾ファイルパスを保持したりしないでください。

この機能をデバッグするには、USB ドライブが USB On-The-Go(OTG)ケーブルで Android デバイスに接続するには、次のコマンドを実行します。

$ adb shell sm set-force-adoptable true

通知

このリリースでは、通知に関する以下の API の変更が追加されました。

  • 新しい INTERRUPTION_FILTER_ALARMS フィルタレベル 新しい「アラームのみ」のサイレント モードに対応します。
  • 次のために使用される新しい CATEGORY_REMINDER カテゴリ値 ユーザーがスケジュール設定したリマインダーと他の予定を区別する (CATEGORY_EVENT)とアラーム (CATEGORY_ALARM)。
  • 通知にアタッチできる新しい Icon クラス 経由: setSmallIcon() および setLargeIcon() あります。同様に、 addAction() メソッドは、代わりに Icon オブジェクトを受け入れるようになりました。 ドローアブル リソース ID。
  • 新しい getActiveNotifications() メソッドを使用すると、 現在有効な通知を探すことができます。

Bluetooth タッチペンのサポート

このリリースでは、Bluetooth タッチペンを使用したユーザー入力のサポートが改善されました。ユーザーはペア設定可能 対応する Bluetooth タッチペンをスマートフォンやタブレットに接続してください。接続した状態で タッチ スクリーンからの情報は、タッチペンからの圧力やボタンの情報と融合され、 タッチ スクリーンのみの場合より、表現の幅が広がります。このアプリは タッチペンのボタンの押下と、登録による二次的なアクションの実行 View.OnContextClickListener、 アクティビティ内の GestureDetector.OnContextClickListener オブジェクト。

MotionEvent メソッドと定数を使用してタッチペン ボタンを検出する インタラクション:

  • ユーザーがアプリの画面上のボタンでタッチペンに触れると、 getTooltype() メソッドの戻り値 TOOL_TYPE_STYLUS
  • Android 6.0(API レベル 23)を対象とするアプリの場合、 getButtonState() メソッドは BUTTON_STYLUS_PRIMARY をユーザーが メインのタッチペン ボタンが押されます。タッチペンに 2 つ目のボタンがある場合、同じメソッドが BUTTON_STYLUS_SECONDARY: ユーザーが押したとき。ユーザーが 両方のボタンが同時に押された場合、メソッドは両方の値を OR で結合して返します。 (BUTTON_STYLUS_PRIMARY|BUTTON_STYLUS_SECONDARY)。
  • 下位のプラットフォーム バージョンをターゲットとするアプリの場合、 getButtonState() メソッドの戻り値 BUTTON_SECONDARY(メインのタッチペン ボタンの押下)、 BUTTON_TERTIARY(セカンダリ タッチペン ボタンの押下)、またはその両方。

Bluetooth Low Energy のスキャンの改善

アプリで Bluetooth Low Energy のスキャンが実行される場合は、新しい setCallbackType() メソッドを使って、システムによるコールバックの初回検出時または セット ScanFilter に一致するアドバタイズメント パケット。この のアプローチが、以前のプラットフォーム バージョンで提供されていたものよりも電力効率が高くなりました。

Hotspot 2.0 リリース 1 のサポート

このリリースでは、Nexus 6 と Nexus 9 デバイスでの Hotspot 2.0 Release 1 仕様のサポートが追加されました。宛先 アプリでアクセス ポイント 2.0 の認証情報をプロビジョニングするには、 WifiEnterpriseConfig クラス(例: setPlmn()setRealm()WifiConfiguration オブジェクトでは、 FQDNproviderFriendlyName フィールド。 新しい isPasspointNetwork() メソッドは、Cloud Storage バケットが検出され、 アクセス ポイントを表すものです。

4K ディスプレイモード

ディスプレイの解像度を 4K レンダリングにアップグレードするようアプリからリクエストできるようになりました 使用できます。現在の物理的解像度をクエリするには、新しい Display.Mode API。UI が低論理解像度で描画されていて、 大きな物理解像度にアップスケールされた場合、 getPhysicalWidth() メソッドの戻り値が論理値と異なる場合があります。 getSize() から報告された解像度。

次のように設定することで、実行時にアプリの物理的な解像度を変更するようシステムにリクエストできます。 アプリの preferredDisplayModeId プロパティ クリックします。この機能は、ディスプレイの解像度を 4K に切り替えたい場合に便利です。4K ディスプレイ使用時 モードの場合、UI は元の解像度(1080p など)でレンダリングされ続け、 4K ですが、SurfaceView オブジェクトはネイティブ解像度でコンテンツを表示することがあります。

テーマ設定可能な ColorStateLists

テーマ属性が ColorStateList: Android 6.0(API レベル 23)を搭載するデバイスの場合。「 Resources.getColorStateList()Resources.getColor() メソッドが 非推奨です。これらの API を呼び出す場合は、新しい Context.getColorStateList() または Context.getColor() メソッドを使用してください。これらのメソッドは、 ContextCompat を介して v4 appcompat ライブラリでも利用できます。

音声機能

このリリースでは、Android でのオーディオ処理に次のような機能強化が追加されています。

  • MIDI のサポート 新しい android.media.midi API を使用します。これらの API を使用して MIDI を送受信する できます。
  • 新しい AudioRecord.BuilderAudioTrack.Builder クラスを使用して、デジタル オーディオ キャプチャ オブジェクトとデジタル オーディオ再生オブジェクトをそれぞれ作成し、 source プロパティとシンク プロパティを使用して、システムのデフォルトをオーバーライドします。
  • オーディオ デバイスと入力デバイスを関連付ける API フック。これは、アプリが Android に接続されたゲーム コントローラやリモコンから音声検索を開始できます 。システムは新しい onSearchRequested() ユーザーが検索を開始したときに呼び出すことができます。ユーザーの入力デバイスに そのコールバックから InputDevice オブジェクトを取得してから、 新しい hasMicrophone() メソッド。
  • 新しい getDevices() メソッドを使用すると、 現在システムに接続されているすべてのオーディオ機器のリストを取得します。また、 システムからアプリに通知する場合は AudioDeviceCallback オブジェクト オーディオ機器の接続時と接続の解除時に発生します。

動画の機能

このリリースでは、動画処理 API に次のような新機能が追加されています。

  • アプリの同期レンダリングに役立つ新しい MediaSync クラス 音声と動画のストリームですオーディオ バッファはノンブロッキング形式で送信され、 返されます。また、動的な再生レートにも対応しています。
  • 新しい EVENT_SESSION_RECLAIMED イベント。これは、 アプリケーションによって開かれたセッションが、リソース マネージャーによって再利用されました。アプリで DRM セッションを使用する場合、 再利用されたセッションは使用せず、このイベントを処理する必要があります。
  • 新しい ERROR_RECLAIMED エラーコード。 リソース マネージャーがコーデックによって使用されたメディア リソースを再利用したことを示します。この例外を除いて コーデックは終了状態に移行するため、解放する必要があります。
  • サポートされている最大数のヒントを取得するための新しい getMaxSupportedInstances() インターフェース サポートしています。
  • メディアの再生速度を設定する新しい setPlaybackParams() メソッド スローモーション再生を利用できますまた、音声の再生速度を伸ばしたり、再生速度を上げたりして、 関連付けられます。

カメラ機能

このリリースには、カメラのライトにアクセスするための次の新しい API が含まれています。 画像の再処理:

Flashlight API

カメラデバイスにフラッシュ ユニットがある場合は、 setTorchMode() メソッドを使用すると、カメラデバイスを開かずにフラッシュ ユニットの懐中電灯モードのオンとオフを切り替えることができます。アプリ フラッシュ ユニットやカメラデバイスの独占的な所有権を持たない。トーチモードがオフになりました オフになり、カメラデバイスが利用できなくなったときや、他のカメラが トーチをオンのままにしているリソースが利用できなくなります。他のアプリから setTorchMode() トーチモードをオフにします。最後にトーチモードをオンにしたアプリを閉じると、トーチは モードが無効になります。

トーチモード ステータスを通知するコールバックを登録するには、 registerTorchCallback() メソッドを呼び出します。コールバックが初めて登録されると、すぐにトーチモードで呼び出されます。 フラッシュ ユニットを用いた、現在判明しているすべてのカメラデバイスのステータス情報。懐中電灯モードがオンになっているか 正常にオフになると、 onTorchModeChanged() メソッドが呼び出されます。

再処理 API

Camera2 API が YUV とプライベート 再処理できます。これらの再処理機能が利用できるかどうかを判断するには、 getCameraCharacteristics() を呼び出して REPROCESS_MAX_CAPTURE_STALL キーもし サポートしている場合、再処理可能なカメラ キャプチャ セッションを作成するには、 createReprocessableCaptureSession() 入力バッファの再処理リクエストを作成します。

ImageWriter クラスを使用して入力バッファフローをカメラに接続する あります。空のバッファを取得するには、次のプログラミング モデルに従います。

  1. dequeueInputImage() メソッドを呼び出します。
  2. データを入力バッファに入力します。
  3. このメソッドを呼び出してバッファをカメラに送信するには、 queueInputImage() メソッドを使用します。

ImageWriter オブジェクトを PRIVATE 個の画像。このアプリは画像にアクセスできません。 直接やり取りできます。代わりに、PRIVATE イメージを ImageWriter を呼び出して、 queueInputImage() メソッド バッファコピーなしで実行できます

ImageReader クラスが PRIVATE 形式の画像ストリーム。このサポートにより、アプリでできること ImageReader 出力画像の循環型画像キューを維持するには、1 つまたは より多くの画像を取得し、ImageWriter に送信してカメラの再処理を行います。

Android for Work の機能

このリリースには、Android for Work 用の次の新しい API が含まれています。

  • 企業所有の単一用途デバイスの管理の強化: デバイスの所有者 以下の設定を管理できるようになり、 企業所有の単一用途(COSU)デバイス: <ph type="x-smartling-placeholder">
      </ph>
    • 次のコマンドでキーガードを無効または再度有効にします。 setKeyguardDisabled() メソッドを使用します。
    • ステータスバー(クイック設定、通知、 Google Now を起動するナビゲーション スワイプアップ ジェスチャー)を使用して、 setStatusBarDisabled() メソッドを呼び出します。
    • UserManager 定数を使用してセーフブートを無効または再度有効にする DISALLOW_SAFE_BOOT
    • 電源に接続したときに画面がオフにならないようにします。 STAY_ON_WHILE_PLUGGED_IN 定数。
  • デバイス所有者によるアプリのサイレント インストールとアンインストール: デバイス所有者が以下の操作を行えるようになりました PackageInstaller を使用してアプリケーションのサイレント インストールとアンインストールを行う Google Play for Work から独立した API。デバイス所有者を通じてデバイスをプロビジョニングできるようになりました。 ユーザーの操作なしでアプリを取得してインストールします。この機能は Google アカウントを有効にせずにキオスクなどのデバイスをプロビジョニングできます。
  • 企業向け証明書へのサイレント アクセス: アプリから choosePrivateKeyAlias(), ユーザーが証明書の選択を求められる前に、プロファイルやデバイスの所有者は onChoosePrivateKeyAlias() メソッドを使用して、リクエスト元のアプリケーションにエイリアスを通知なく提供します。この機能を使用すると、 マネージド アプリはユーザーの操作なしで証明書にアクセスします。
  • システム アップデートの自動承認。システム アップデート ポリシーを setSystemUpdatePolicy(), デバイス所有者がシステムを自動的に承認する 更新(たとえばキオスク デバイスの場合)や、更新を延期して更新が 最大 30 日間保持されます。さらに、管理者は 1 日の時間枠を 更新が必要なタイミング(キオスク デバイスが使用されていない時間帯など)です。日時 適用できるシステム アップデートがある場合、システムは、Device Policy Controller アプリでシステムが設定されているかどうかを確認します。 更新ポリシーが適用され、それに応じて動作します。
  • 代理証明書のインストール: プロファイル所有者やデバイス所有者が証明書を委任できるようになりました。 サードパーティ製アプリがこれらの DevicePolicyManager 証明書を呼び出す機能 Management API: <ph type="x-smartling-placeholder">
  • Android for Work で作業ステータス通知機能を表示しているモバイル
  • データ使用量のトラッキング。これで、プロファイルやデバイスの所有者は [設定] > [設定] >データ使用量NetworkStatsManager メソッド。プロフィール所有者には自動的に デバイス所有者は使用状況データにアクセスするが、デバイス所有者は自身が管理するプロファイルのデータに対してクエリを実行する権限 管理対象プライマリユーザーの
  • 実行時の権限の管理:

    プロファイルまたはデバイスの所有者は権限ポリシーを設定できます すべてのランタイム リクエストに対して setPermissionPolicy(): ユーザーに権限を付与するように求めるか、自動的に付与または 自動的に拒否されます。後者のポリシーを設定した場合、ユーザーは プロファイルまたはデバイス所有者が選択した内容は、 設定

  • 設定の VPN: VPN アプリが [設定] >もっと見る >VPN。 さらに、VPN の使用に伴う通知は、その VPN の使用状況に固有のものです。 構成されます。プロファイル所有者の場合、通知は VPN が構成されているかどうかに固有のものです。 管理対象プロファイル、個人用プロファイル、またはその両方のプロファイルを作成できます。デバイス所有者の場合、通知は次のようになります。 VPN がデバイス全体に対して構成されるかどうかによって異なります。
  • 作業ステータスの通知: 処理の開始時に常にステータスバーのブリーフケース アイコンが表示されるようになりました。 管理対象プロファイルのアプリにフォアグラウンドのアクティビティがある場合。また、デバイスが 管理対象プロファイル内のアプリのアクティビティに直接ロック解除されている場合、 仕事用プロファイル内にいることをユーザーに通知します。