Skip to content

Most visited

Recently visited

navigation

Android 6.0 API

Android 6.0(M)は、ユーザーとアプリ デベロッパーに新しい機能を提供します。このドキュメントでは、いくつかの注目すべき API の概要について説明します。

開発の開始

Android 6.0 対応アプリの開発を始めるには、最初に Android SDK を入手する必要があります。次に、SDK Manager を使用して Android 6.0 SDK プラットフォームとシステム イメージをダウンロードします。

対象 API レベルのアップデート

Android を搭載している端末向けにアプリを最適化するには、targetSdkVersion"23" に設定し、Android システム イメージにアプリをインストールした後、この変更を加えたアップデート済みのアプリを公開します。

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

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

指紋認証

このリリースでは、対象端末での指紋スキャンを使用したユーザー認証を可能にする新しい API が提供されています。これらの API は、Android キーストローク システムと共に使用します。

指紋スキャンでユーザーを認証するには、新しい FingerprintManager クラスのインスタンスを取得して、authenticate() メソッドを呼び出します。なお、アプリは指紋センサー付きの対応端末で実行されている必要があります。指紋認証フローのユーザー インターフェースをアプリに実装し、Android 標準の指紋アイコンを UI に使用する必要があります。Android 指紋アイコン(c_fp_40px.png)は指紋ダイアログのサンプルに含まれています。指紋認証を使用するアプリを複数開発する場合は、それぞれのアプリで個別にユーザーの指紋を認証する必要があります。

アプリでこの機能を使用するには、まずマニフェストに USE_FINGERPRINT パーミッションを追加する必要があります。

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />

アプリでの指紋認証の実装については、指紋ダイアログのサンプルをご覧ください。これらの認証 API を他の Android API とともに使用する方法については、指紋と支払いの API のビデオをご覧ください。

この機能をテストする場合は、次のステップに従います。

  1. Android SDK Tools Revision 24.3 をインストールします(まだインストールしていない場合)。
  2. [Settings] > [Security] > [Fingerprint] と選択し、登録手順に従ってエミュレータに新しい指紋を登録します。
  3. エミュレータを使って、次のコマンドで指紋のタッチイベントをエミュレートします。同じコマンドを使って、ロック画面やアプリでの指紋のタッチイベントをエミュレートします。
    adb -e emu finger touch <finger_id>
    

    Windows では、telnet 127.0.0.1 <emulator-id>finger touch <finger_id> の順に実行する必要がある場合があります。

資格情報の確認

アプリで、ユーザーがいつ、最後に端末のロックを解除したかに基づいて、ユーザーを認証できます。この機能によって、ユーザーがアプリ固有のパスワードを覚えたり、開発者が独自の認証ユーザー インターフェースを実装したりする必要がなくなります。アプリでこの機能を使用する場合は、ユーザー認証用の公開鍵または秘密鍵の実装も組み合わせる必要があります。

ユーザーが正常に認証された後、同じキーを再使用できるタイムアウト期間を設定するには、KeyGenerator またはKeyPairGenerator をセットアップした後、新しい setUserAuthenticationValidityDurationSeconds() メソッドを呼び出します。

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

アプリでのこの機能の実装については、資格情報の確認サンプルをご覧ください。

アプリのリンク機能

このリリースでは、アプリのリンク機能を改良することで Android のインテント システムが強化されました。この機能では、所有するウェブ ドメインにアプリを関連付けることができます。この関連付けに基づいて、プラットフォームが特定のウェブリンクの処理に使用するデフォルトのアプリを決めることができ、ユーザーにアプリを選択させる操作をスキップできます。この機能の実装方法については、アプリのリンク機能をご覧ください。

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

システムで、アプリの自動フルデータ バックアップと復元を実行できるようになりました。この動作を有効にするには、アプリで Android 6.0(API レベル 23)を対象にする必要があります。追加のコードは必要ありません。ユーザーが Google アカウントを削除すると、バックアップ データも削除されます。この機能の仕組みとファイル システムでバックアップ対象を設定する方法については、アプリの自動バックアップの設定をご覧ください。

ダイレクト シェア

このリリースでは、ユーザーが直感的にすばやく共有処理を行えるようにするための API が提供されています。アプリで特定のアクティビティを起動するダイレクト シェアのターゲットを定義すると、それらのダイレクト シェアのターゲットは [Share] メニューに表示されるようになります。この機能を使うと、他のアプリ内にある連絡先などのターゲットにコンテンツを共有できます。たとえば、ダイレクト シェアのターゲットによって他のソーシャル ネットワーク アプリのアクティビティが起動し、そのアプリ内の特定の友人やコミュニティと直接コンテンツを共有できるようになります。

ダイレクト シェアのターゲットを有効にするには、ChooserTargetService クラスを拡張するクラスを定義する必要があります。マニフェストでサービスを宣言します。その宣言内で、BIND_CHOOSER_TARGET_SERVICE パーミッションと、SERVICE_INTERFACE アクションを使ったインテント フィルタを指定します。

次の例は、マニフェストで 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 に公開するアクティビティごとに、"android.service.chooser.chooser_target_service" という名前の <meta-data> 要素をアプリのマニフェストに追加します。

<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>

音声インタラクション

このリリースでは、音声操作と共に使用することでアプリに対話形式の音声操作機能を組み込める新しい Voice Interaction API が提供されています。isVoiceInteraction() メソッドを呼び出して、音声操作によってアクティビティがトリガーされたかどうかを判別します。トリガーされていた場合は、アプリで VoiceInteractor クラスを使用してユーザーに音声の確認や、オプションのリストからの選択などを求めることができます。

ほとんどの音声インタラクションはユーザーの音声操作から始まります。ただし、音声インタラクション アクティビティはユーザーの入力なしで開始されることもあります。たとえば、音声インタラクションを介して起動された他のアプリが、音声インタラクションを起動するインテントを送信することもあります。アクティビティがユーザーの音声クエリまたは他の音声インタラクション アプリから起動されたかどうかを判別するには、isVoiceInteractionRoot() メソッドを呼び出します。他のアプリがアクティビティを起動した場合、メソッドは false を返します。アプリは、このアクションが意図されたものであることの確認をユーザーに求める場合があります。

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

Assist API

このリリースでは、アシスタントを介してユーザーがアプリを操作できる新しい方法が提供されています。この機能を使用するには、ユーザーがアシスタントを有効にし、現在のコンテキストを使うようにする必要があります。有効にすると、[Home] ボタンを長押しすることで、すべてのアプリ内でアシスタントを呼び出すことができます。

FLAG_SECURE フラグを設定すると、アプリが現在のコンテキストをアシスタントと共有しないように選択できます。新しい AssistContent クラスを使用すると、プラットフォームがアシスタントに渡す標準的な情報セットの他に、アプリで追加の情報を共有できます。

アプリから追加のコンテキストをアシスタントに提供するには、次のステップに従います。

  1. Application.OnProvideAssistDataListener インターフェースを実装します。
  2. registerOnProvideAssistDataListener() を使用してこのリスナーを登録します。
  3. アクティビティ固有のコンテキスト情報を提供するには、onProvideAssistData() コールバックと(オプションで)新しい onProvideAssistContent() コールバックをオーバーライドします。

追加可能なストレージ デバイス

このリリースでは、SD カードなどの外部ストレージ デバイスを追加できます。外部ストレージ デバイスを追加すると、デバイスが内部ストレージのように動作するよう暗号化とフォーマットが行われます。この機能によって、アプリとアプリの個人データをストレージ端末間で移動できるようになります。アプリを移動する際、システムはマニフェストの android:installLocation を遵守します。

アプリが次の API やフィールドにアクセスする場合は、アプリが内部ストレージ端末と外部ストレージ端末間で移動する際に返されるファイルパスが動的に変化することに注意してください。ファイルパスの構築時は、これらの API を動的に呼び出すことを強くお勧めします。ハードコードされたファイル パスを使用したり、過去にビルドした完全修飾ファイルパスをそのまま使用したりしないでください。

この機能をデバッグするには、次のコマンドを実行することによって、USB On-The-Go(OTG)ケーブルを介して Android 端末に接続されている USB ドライブの追加を有効にします。

$ adb shell sm set-force-adoptable true

通知

このリリースでは、通知に関して次のような API の変更が追加されています。

Bluetooth タッチペンのサポート

このリリースでは、Bluetooth タッチペンを使用したユーザー入力のサポートが強化されました。互換性のある Bluetooth タッチペンとスマートフォンやタブレットをペア設定して接続できます。接続されている間は、タッチ スクリーンからの位置情報とタッチペンからの筆圧やボタン情報を合わせることで、タッチ スクリーン単独の場合よりも表現の幅が大きく広がります。View.OnContextClickListener オブジェクトと GestureDetector.OnContextClickListener オブジェクトをアクティビティに登録すると、タッチペンのボタンが押されたことをアプリがリッスンし、次のアクションを実行できるようになります。

タッチペンのボタン操作を検出するには、MotionEvent メソッドと定数を使用します。

Bluetooth Low Energy のスキャンの改善

アプリで Bluetooth Low Energy スキャンを実行する場合は、新しいsetCallbackType() メソッドを使って、設定された ScanFilter に一致する広告パケットが最初に見つかったときと、長時間経過した後に見つかったときにコールバックを通知するようにシステムに指定します。このスキャン アプローチでは、以前のプラットフォーム バージョンで提供されていたアプローチよりも電力が効率的に使用されます。

Hotspot 2.0 Release 1 のサポート

このリリースでは、Nexus 6 および Nexus 9 端末での Hotspot 2.0 Release 1 仕様のサポートが追加されました。Hotspot 2.0 の認証情報をアプリで提供するには、setPlmn()setRealm() などの WifiEnterpriseConfig クラスの新しいメソッドを使用します。WifiConfiguration オブジェクトには、FQDN フィールドと providerFriendlyName フィールドを設定できます。新しい isPasspointNetwork() メソッドは、検出されたネットワークが Hotspot 2.0 のアクセス ポイントを表しているかどうかを示します。

4K ディスプレイ モード

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

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

テーマ化可能な ColorStateList

Android 6.0(API レベル 23)を搭載する端末で、テーマの属性が ColorStateList でサポートされるようになりました。Resources.getColorStateList() メソッドと Resources.getColor() メソッドは廃止されました。これらの API を呼び出す場合は、代わりに新しい Context.getColorStateList() メソッドか Context.getColor() メソッドを呼び出します。これらのメソッドは、ContextCompat を介して v4 appcompat ライブラリでも使用できます。

オーディオ機能

このリリースでは、次のように Android でのオーディオ処理が改善されました。

ビデオ機能

このリリースでは、ビデオ処理の API に次のような新機能が追加されました。

カメラ機能

このリリースでは、カメラのフラッシュやカメラによる画像の再処理にアクセスするための次の新しい API が用意されています。

Flashlight API

カメラ端末にフラッシュ ユニットが付属している場合は、setTorchMode() メソッドを呼び出すことで、カメラデバイスを開かずにフラッシュ ユニットのタッチモードのオン / オフを切り替えることができます。アプリには、フラッシュ ユニットやカメラデバイスの排他的な所有権はありません。トーチモードは、カメラデバイスが利用不可になったときや、トーチをオンにしている他のカメラリソースが利用不可になったときにオフになり、利用できなくなります。他のアプリでも setTorchMode() を呼び出してトーチモードをオフにできます。最後にトーチモードをオンにしたアプリが閉じられると、トーチモードはオフになります。

registerTorchCallback() メソッドを呼び出すことで、トーチモードのステータスに関する通知を受けるようコールバックを登録できます。コールバックを初めて登録すると、現在検知されているすべてのフラッシュ ユニット付きのカメラデバイスのトーチモードのステータスと共に即座に呼び出されます。トーチモードが正常にオン / オフされると、onTorchModeChanged() メソッドが呼び出されます。

Reprocessing API

Camera2 API は、YUV とプライベートな不透明形式の画像の再処理をサポートするよう拡張されました。これらの再処理機能が使用可能であるかどうかを判別するには、getCameraCharacteristics() を呼び出して REPROCESS_MAX_CAPTURE_STALL キーをチェックします。端末が再処理をサポートしている場合は、createReprocessableCaptureSession() を呼び出して再処理可能なカメラ撮影セッションを作成し、入力バッファの再処理の要求を作成できます。

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

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

ImageWriter オブジェクトを PRIVATE 画像と共に使用する場合、アプリから直接画像データにアクセスすることはできません。代わりに、queueInputImage() メソッドをバッファコピーなしで呼び出して、PRIVATE 画像を直接ImageWriter に渡します。

ImageReader クラスで PRIVATE 形式の画像ストリームがサポートされるようになりました。これにより、アプリが ImageReader 出力画像の循環的な画像のキューを維持でき、1 つ以上の画像を選択して、それらをカメラで再処理するために ImageWriter に送ることができます。

Android for Work の機能

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

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a one-minute survey?
Help us improve Android tools and documentation.