Android
 Computer >> コンピューター >  >> プログラミング >> Android

AndroidのLocation APIで現在地を追跡・表示する方法をステップごとに解説

概要

この記事では、AndroidのLocation API(Google Maps SDK)を使って、現在地を取得し地図上に表示する方法を段階的に解説します。マーカーを立てて現在地を視覚的に確認できる、シンプルなサンプルアプリを一緒に作成していきましょう。

ステップ1:新規プロジェクトの作成と依存関係の追加

Android Studioを起動し、メニューから「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目を入力してプロジェクトの雛形を生成してください。

続いて、build.gradle(Module: app)に以下の依存関係を追加します。

implementation 'com.google.android.gms:play-services-maps:17.0.0'

ステップ2:レイアウトファイル(activity_main.xml)の編集

res/layout/activity_main.xmlに以下のコードを記述します。Googleマップを表示するためのSupportMapFragmentを画面全体に配置しています。

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MapsActivity" />

ステップ3:MainActivity.javaの実装

src/MainActivity.javaに以下のコードを追加します。onMapReady()コールバック内でマップを初期化し、指定した緯度経度(サンプルではチェンナイの座標 13.0827, 80.2707)にマーカーを配置して、カメラをその位置へ移動させています。実際の現在地を反映させたい場合は、この座標をFusedLocationProviderClientなどで取得した位置情報に置き換えてください。

import androidx.fragment.app.FragmentActivity;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
    GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        LatLng myCurrentLocation = new LatLng(13.0827, 80.2707);
        mMap.addMarker(new MarkerOptions().position(myCurrentLocation).title("This is My current Location"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(myCurrentLocation));
    }
}

ステップ4:strings.xmlへのAPIキーの登録

res/strings.xmlを開き、以下のようにGoogle Maps APIキーを追加します。「google_maps_key」の値は、Google Cloud Consoleで発行したご自身のAPIキーに置き換えてください。

<resources>
    <string name="app_name">Sample</string>
    <string name="title_activity_maps">Map</string>
    <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">AIzaSyC19gZFIlF5OVySzG9iMAeDFzOmUuCHZ5Q</string>
</resources>

ステップ5:AndroidManifest.xmlの設定

最後に、androidManifest.xmlに以下のコードを追加します。ポイントは、MapsActivityの宣言、APIキーをシステムに渡すmeta-dataタグ、そして位置情報取得に必須となるACCESS_FINE_LOCATIONパーミッションの3点です。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MapsActivity"
            android:label="@string/title_activity_maps">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />
    </application>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

アプリの実行と動作確認

それではアプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続していることを前提とします。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックしてください。デバイス選択画面で接続したスマートフォンを選ぶと、端末上でアプリが起動し、以下のように現在地のマーカーが表示されたマップ画面を確認できます。

AndroidのLocation APIで現在地を追跡・表示する方法をステップごとに解説

  1. 【保存版】「探す(Find My)」アプリでiPhoneを保護・追跡する完全ガイド

    多くのiPhoneユーザーにとって最悪のシナリオは、デバイスを紛失してしまうことです。そうなると、写真、連絡先、アプリ、あらゆるデータが一緒に失われてしまいます。幸い、Appleが提供する「探す(Find My)」アプリには新機能が搭載されており、紛失したiPhoneを見つけ出すのに役立ちます。iOS 15で「iPhoneを探す」を設定する方法iPhoneを使い始めたばかりの方や、「探す」アプリをまだ設定したことがない方は、少し混乱するかもしれません。かつては「iPhoneを探す」というアプリ名でしたが、現在は単に「探す」という名前に統合されています。ただし、iPhone上の設定項目としては「

  2. Androidの位置情報を偽装する方法|開発者向けオプションの設定からおすすめアプリまで徹底解説

    位置情報を活用したアプリを開発しているAndroidデベロッパーなら、機能が正しく動作するかを確認するために、スマートフォンの位置情報を偽装(スプーフィング)する必要があるかもしれません。実は、開発者でなくてもこの機能は簡単に利用できます(Androidの場合。iPhoneはやや手間がかかります)。これにより、地理的制限(ジオブロック)の回避、アプリのテスト、友人へのいたずら、監視の回避など、さまざまな可能性が広がります。サハラ砂漠を歩いていることにしたり、カナダ・マニトバ州でヘラジカと駆け抜けたり、タイタニック号に潜ったり……実際には移動していなくても、周囲にはそう「見せる」ことができるので