細か過ぎて伝わってないけど開発者が知っておきたいAndroid Mの新機能まとめ:Androidで動く携帯Javaアプリ作成入門(58)(2/6 ページ)
Google I/O 2015で発表された次期版Android M。Google Now on tapで使うアシストAPIや、App Links、App Permissions、省電力のDoze/App Stanby、決済機能Android Payなどで使う指紋認証機能など新機能を分類して紹介。
アプリのアクセス権限管理の細分化「App Permissions」
これまでアプリがカメラやカレンダー、地理情報、マイク、通話機能、センサー、SMSなどにアクセスする権限に関する注意は、インストール/アップデート時にのみ表示されていましたが、これからはその権限を必要とする機能の初回実行時に許可を求められるようになります。ユーザーは、アプリごとに個別に機能ごとの権限を付与したり取り消したりすることができるようになります。
これにより、開発者はアプリが権限を与えられているかどうかを実行時にチェックすることが必要になりました。権限の許可を確認する場合はContext.checkSelfPermission()を、許可を要求する場合はActivity.requestPermission()を呼び出します。
この変更による影響はパーミッションを使用する全てのアプリに影響します。パーミッションに関する詳細情報は『Permissions | Android Developers』を、アプリへの影響を評価する方法は『Testing Guide | Android Developers』のTesting Permissionsを参照してください。
システム全体の省電力「Doze」モード
一定期間のスクリーンオフが続くと、システムはDoze(居眠り)モードに入ります。Dozeモードは以下のような制限があります。
- 優先度の高いGCM(Google Cloud Messaging)を受信しない限り、ネットワークアクセスは無効
- WakeLockは無視される
- setAlarmClock()とAlarmManager.setAndAllowWhileIdle()以外のAlarmManagerによるアラームスケジュールは無効
- Wi-Fiスキャンは実行されない
- 同期アダプターとJobSchedulerによる同期とジョブの実行は許可されない
デバイスがDozeモードから抜けると、保留されていた同期とジョブが実行されます。Android MでDozeモードを評価したい場合、以下のコマンドを実行することで可能です。
$ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step $ adb shell dumpsys deviceidle -h
アプリ単体の省電力「App standby」モード
デバイスを操作していない状態であれば、「アプリはアイドル状態である」と判断できます。以下の状態ではない限り、アプリは一定期間後にアイドル状態になります。
- ユーザーによってアプリが明示的に起動される
- アプリがフォアグラウンドプロセスである
- アプリがロック画面または通知トレイにNotificationを生成する
- ユーザーが明示的に設定画面からアプリを「省電力の最適化」状態から除外する
デバイスを充電していない場合、アプリはアイドル状態となります。ネットワークアクセスが無効になっている場合は、同期およびジョブが中断されます。充電中の場合は、アプリはネットワークアクセスが許可され、保留された全ての同期とジョブを実行できます。デバイスが長時間アイドル状態の場合、アイドル状態のアプリは1日1回、ネットワークアクセスが許可されます。
Android MでApp standbyモードを評価したい場合は、以下のコマンドを実行することで可能です。
$ adb shell dumpsys battery unplug $ adb shell am set-idle <packageName> true $ adb shell am set-idle <packageName> false $ adb shell am get-idle <packageName>
Direct Share(友人との共有が簡単に)
Android Mでは、ユーザーが直感的かつ迅速に共有を行うためのAPIが追加されました。アプリのActivity内でダイレクトシェアするターゲットを定義できます。これらのダイレクトシェアターゲットは[共有]メニューでユーザーに公開されています。この機能により、ユーザーは連絡先などのターゲットに対しコンテンツをシェアできます。
例えば、ダイレクトシェアターゲットは特定の友人やコミュニティにコンテンツをダイレクトシェアするため、他のSNSアプリのアクティビティなどを起動することがあります。
ダイレクトシェアターゲットを有効にするには、android.service.chooser.ChooserTargetServiceのサブクラスを定義しなければなりません。そしてマニフェストに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>
公開するActivityごとに<meta-data>を定義して「"android.service.chooser.chooser_target_service"」の値にChooserTargetServiceを指定します。
<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>
実行エンジン「ART(Android RunTime)」の変更点
Android 5.0で正式に導入された新しい実行エンジン「ART(Android RunTime)」ですが、Android Mでいくつか変更点があります。
まず、適切なアクセスルールに基づくnewInstance()が実装されました。この変更により、以前のバージョンでDalvikが誤ったアクセスルールに基づいてチェックしていた問題が修正されます。
アプリがnewInstance()を使用してアクセスチェックを無効にしたい場合、setAccessible()にtrueを渡して呼び出します。
アプリがappcompatライブラリ(※)V7またはRecyclerViewライブラリV7を使用している場合、これらのライブラリを最新バージョンに置き換える必要があります。それ以外の場合は、対象のクラスのコンストラクターにアクセスできるようにXMLから参照するカスタムクラスが更新されていることを確認します。
※appcompatはAndroidでActionBarを表示するためのライブラリです。
またAndroid Mでは、ダイナミックリンカーの動作を更新します。ダイナミックリンカーはライブラリのsonameとそのパスとの差異を理解し、sonameによる検索が実装されました。ロードされたときに不正なDT_NEEDEDエントリ(ビルドマシンのファイルシステムの場合は、通常絶対パス)を持っている場合、以前動作していたアプリが失敗することがあります。
さらにAndroid Mでは、dlopen(3)のRTLD_LOCALフラグが正しく実装されました。dlopen(3)で明示的にRTLD_LOCALを除外していない場合、RTLD_LOCALはデフォルトであることに注意してください。RTLD_LOCALを使用すると、シンボルはdlopen(3)以降でロードされたライブラリが利用されることはありません。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 変わらないと生き残れないAndroid Lの新機能まとめ
新しいUIテーマ「Material Design」や、新しいランタイム「ART」、生まれ変わったNotification、Android TVアプリ、グラフィックス、マルチメディア、ストレージ、ネットワーク周りなどの新機能をテーマ別に紹介します。 - Android L、Android Wear、Android TV、Android Autoの開発者向け現状まとめ
米グーグルが「Google I/O 2014」で発表した次期Android「Android L」「Android TV」「Android Auto」の開発者プレビュー、そして「Android Wear」の正式版。これらに対応したアプリを開発するには、どこを見ればいいのか。概要とともに簡単にまとめてみた。 - あなたの知らないAndroid SDKの便利tools、14選まとめ
SDKに含まれている便利なツールを、デバッガー/プロファイラー、コード解析/難読化、画像ファイル最適化、アプリ外部のデータリソース操作の4種類に分けて紹介。 - 低性能端末でも使えるか? Android 4.4 KitKatの新機能39選
消費電力の削減につながる新機能や、よりシンプルになったUI、印刷やストレージアクセス、SMSなどの新機能をテーマ別に紹介します。 - 新タブレット時代を見据えるAndroid 4.2の新機能9選
タブレットでのマルチユーザー機能、360度パノラマ撮影機能「Photo Sphere」、Gesture Typing、ワイヤレス通信で大スクリーンへ投影する「MiraCast」対応、Quick Settings、「Google Now」の機能強化、ウィジェットのロック画面対応など厳選して紹介 - 知らないと残念過ぎるAndroid 4.1の新機能36選
Google NowやCloud Messaging、Knowledge Graph、Project Butter、Google Playなどの新機能をテーマ別に紹介 - 開発者が知らないと損するAndroid 4.0の新機能44選
AndroidビームやWi-Fiダイレクト、ライブエフェクト、顔認識、スクリーンリーダ、ソーシャル系などの新機能をテーマ別に紹介