Criteriaに指定できる条件

Criteriaに指定できる条件

前のページで述べたとおり、Criteriaは、LocationManagerのgetBestProviderメソッドに指定する引数に指定する、取得するロケーション・プロバイダの条件を格納するオブジェクトです。

Criteriaに指定できる条件は、以下の6つです。

  • 位置情報の精密さ(Accuracy)
  • 消費電力(PowerRequirement)
  • 高度情報の要不要(AltitudeRequired)
  • 速度情報の要不要(SpeedRequired)
  • 方向情報の要不要(BearingRequired)
  • 費用を許可するか(CostAllowed)

例えば、取得する位置情報に精密さを求めないのであれば、Criteria.ACCURACY_COARSEを指定します。すると、大まかな位置を返すロケーション・プロバイダが返ります(これは、一般的なAndroid携帯電話では、基地局情報を元に位置を計測するNETWORK_PROVIDERとなります)。

さらに、高度の情報が必要であれば、setAltitudeRequiredをtrueに設定すると、高度情報も返すロケーション・プロバイダが自動的に選択されます。

この場合は、一般的なAndroid携帯電話では、GPS衛星の情報を元に位置情報を計測するGPS_PROVIDERが選択されます。

しかし将来、GPS_PROVIDER以外で最適なロケーション・プロバイダが、もし追加された場合は、コードを変更しなくとも自動的にそちらが選択されます。

将来的な話をする上で興味深いのは、「CostAllowed」のような条件が用意されていることです。

この条件は、今のところ、true/falseのどちらであっても、得られるロケーション・プロバイダは変わりません。

 しかし、CostAllowedという選択肢が用意されていることで、将来的には、ある程度のコストを払うことでより精密な位置情報を得られるロケーション・プロバイダを、Googleやその他のサード・パーティが提供する可能性があります。

図3: Criteriaに指定できる条件

総括

いかがだったでしょうか。これまで4回にわたり、端末に依存しないアプリの開発手法を見てきました。

複数端末に対応する上で発生するであろう問題の多くが、リソース・マネージャによるリソースの自動切り替えで解決できることをお分かりいただけたかと思います。

リソース修飾子の一覧を見て、厳密に設定するのは面倒だと思う人もいるかもしれません。その意見には筆者も同感です。

リソースによる複数端末へ対応する上で肝心なのは、最初からすべての端末に対応しようとは決して考えないことです。

もちろん、ターゲット端末で正常に動作することは最低条件です。しかし、販売されているすべてのAndroid端末に対応するまでリリースしないというのは、決して上策とは言えません。

ましてや、今後発売されるであろう端末を想定して、あらゆるリソースを用意するとなると、開発をしている間にAndroidのバージョンが変わってしまう可能性もあります。

リリースの後、端末の特性に合わせたリソースを適宜追加しても、決して遅くはありません。

リソース・マネージャの仕組みは、あくまでも複数端末対応の「負荷を減らす」ためにあるのだと言うことを、決して忘れないでください。

その他の要素については、第1回の繰り返しになりますが、端末の特性や機能が「同じこと、有ること」を前提に考えるのではなく、「違うこと・無いこと」を前提に考え、それぞれのケースに対応できるようにしておきましょう。

アプリは、1度作ったら終わりではありません。常に出続ける新しい端末に適応するために、メンテナンスを重ねることになります。

アプリの複数端末への対応は、地味ですが、しかし非常に大切な作業なのです。

ここまで読んでくださった皆さま、本当にありがとうございました。

またどこかでお会いしましょう。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30