検索
連載

細か過ぎて伝わってないけど開発者が知っておきたいAndroid Mの新機能まとめAndroidで動く携帯Javaアプリ作成入門(58)(4/6 ページ)

Google I/O 2015で発表された次期版Android M。Google Now on tapで使うアシストAPIや、App Links、App Permissions、省電力のDoze/App Stanby、決済機能Android Payなどで使う指紋認証機能など新機能を分類して紹介。

Share
Tweet
LINE
Hatena

企業向けサービス「Android for Work」に関する変更点

 Android 5.0で追加されたエンタープライズ環境向け管理機能(EMM)は、2015年2月に「Android for Work」となり、Android Mでは以下の動作変更が含まれています。

個人における仕事上の連絡先

 ユーザーが発着信履歴を表示した際に、Google Dialer Call Logが現在の仕事の連絡先を表示します。

 DevicePolicyManager.setCrossProfileCallerIdDisabled()をtrueに設定すると、Google Dialer Call Logは仕事の連絡先を非表示にします。DevicePolicyManager.setBluetoothContactSharingDisabled()をfalseに設定すると、Bluetoothデバイスに仕事の連絡先を表示できます。デフォルトではtrueに設定されています。

無線LANの設定削除

 プロファイルが削除された場合、そのプロファイル上で追加された無線LAN設定は削除されます。

無線LAN設定ロックダウン

 デバイス所有者によって作成された無線LAN設定は他のユーザーが変更したり削除したりすることができるようになりました。ユーザーはUserManagerのDISALLOW_CONFIG_WIFI定数がそのユーザーに設定されていないならば、独自の無線LAN設定を作成および変更できます。

GoogleアカウントによるWork Policy Controllerのダウンロード

 企業向けモバイル管理の「Work Policy Controller」アプリを介して管理する必要があるGoogleアカウントが、管理されている外部デバイスに追加された場合、Work Policy Controllerをインストールするプロンプトが表示されます。この現象は、デバイスのセットアップウィザード時に[設定]→[アカウント]を介してアカウントを追加した場合も適用されます。

特定のDevicePoricyManagerのAPI動作変更

 setCameraDisabled()は、それを呼び出しているカメラアプリを使っているユーザーだけに影響を与えます。ただし、管理対象プロファイルからsetCameraDisabled()を呼び出すのであれば、主要ユーザーで実行されているカメラアプリに影響は与えません。

 またsetKeyguardDisabledFeatures()は、デバイス所有者に加えてプロファイル所有者のために利用できるようになりました。プロファイル所有者は以下のキーガードの制限を設定できます。

  • KEYGUARD_DISABLE_TRUST_AGENTSとKEYGUARD_DISABLE_FINGERPRINTはプロファイルの親ユーザーのキーガード設定に影響
  • KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONSは唯一の管理対象プロファイル内のアプリによって生成される通知に影響を与える

Wi-Fiとネットワークに関する変更点

 Android MではWi-FiやネットワークAPIに動作変更があります。

 アプリが作成したWifiConfigurationオブジェクトは、アプリからそのステータスを変更できるようになりました。他のアプリで作成されたWifiConfigureationは変更や削除することはできません。

 また以前は、「disableAllOthers=true」と設定されていても、enableNetwork()を使用して特定のWi-Fiに強制的に接続している場合、その他の携帯電話通信網(3G/4G/4G LTE)のようなネットワークからは切断されていました。Android Mでは、もう他のネットワークを切断しません。

 なお、アプリのtargetSdkVersionが20(Android 5.0)以下である場合、選択されたWi-Fiネットワークに固定されます。targetSdkVersionが21以上である場合、指定したネットワーク上で送受信されることを確実にするためには、例えばopenConnection()、bindSocket()および新しいConnectivityManager.bindProcessToNetwork()などのマルチネットワークAPIを使用します。

Hotspot 2.0 Release 1サポート

 Android Mは、Nexus 6とNexus 9でWi-Fi通信時に、Hotspot 2.0 Release 1の仕様をサポートします。Hotspot 2.0はOracle Java VMのHotSpotのことではなく、Wi-Fi Allianceの定める認証を行うための標準仕様です。

 アプリでHotspot 2.0の資格情報に対応するにはsetPlmn()とsetRealm()などWifiEnterpriseConfigの新しいメソッドを使用します。WifiConfigurationオブジェクトはFQDNとproviderFriendlyNameフィールドを設定できます。検出されたネットワークはHotspot 2.0アクセスポイントを表している場合、新しいScanResult.PasspointNetworkプロパティを示します。

Apache HTTP Clientの削除

 Android Mでは、Apache HTTP Clientのサポートを終了します。アプリのターゲットがAndroid 2.3(APIレベル9)以上の場合、Apache HTTP Clientの代わりにHttpURLConnectionを使う必要があります。このAPIは圧縮やレスポンスのキャッシュを介してネットワークトラフィックを減少させるので、効率的かつ省エネです。Apache HTTP Clientを引き続き使用するには、build.bradleファイルで以下の依存関係を宣言しなければなりません。

android {
    useLibrary 'org.apache.http.legacy'
}

OpenSSLからBoringSSLへ

 また、AndroidはOpenSSLからBoringSSLに移行しつつあるそうです。

 Android NDKを使用して開発されたアプリで暗号化ライブラリが必要な場合、Android NDKに含まれるlibcrypto.soやlibssl.soなどのライブラリを使わないことが推奨されます。これらのライブラリは公開APIではなく、リリースおよびデバイスごとに予告なく変更される可能性があり、さらにセキュリティ脆弱性にさらされることになるからです。代わりに、JNIを用いてJavaの暗号APIを呼び出すか、自身で用意した暗号化ライブラリを静的に使う方がよいそうです。

Bluetooth Low Energyスキャンの改善

 アプリがBLE(Bluetooth Low Energy)のスキャンを行う場合、パケットが一定期間なく、ScanFilterに一致する広告パケットが最初に発見された場合、そのアプリにだけコールバックされるように指定するための新しいandroid.bluetooth.le.ScanSettings.Builder.setCallbackType()を使えます。これにより、Android M未満のアプリよりも電力効率が良くなります。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る