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

Androidで2つの地理的な地点間の距離を取得する方法

この記事では、Androidアプリで2つの地理的な地点(緯度・経度)の間の距離を取得し、画面に表示する方法を解説します。Androidフレームワークが提供するLocationクラスdistanceTo()メソッドを使うと、2地点間の距離を簡単に計算できます。

ステップ1:新しいプロジェクトを作成する

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

ステップ2:activity_main.xmlにコードを追加する

res/layout/activity_main.xmlに以下のコードを追加します。ここでは、計算結果を表示するためのTextViewを画面中央に配置しています。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textAlignment="center"
        android:textSize="24sp"
        android:textStyle="bold" />
</RelativeLayout>

ステップ3:MainActivity.javaにコードを追加する

src/MainActivity.javaに以下のコードを記述します。2つのLocationオブジェクトを作成してそれぞれ緯度・経度を設定し、distanceTo()メソッドを呼び出すことで2地点間の距離を取得しています。

import androidx.appcompat.app.AppCompatActivity;
import android.location.Location;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.textView);
        Location currentLocation = new Location("locationA");
        currentLocation.setLatitude(17.372102);
        currentLocation.setLongitude(78.484196);
        Location destination = new Location("locationB");
        destination.setLatitude(17.375775);
        destination.setLongitude(78.469218);
        double distance = currentLocation.distanceTo(destination);
        textView.setText("Distance between two Geographic Locations: " + distance + " KMS");
    }
}

ポイント:distanceTo()メソッドの戻り値はメートル単位です。キロメートルで表示したい場合は、取得した値を1000で割ってください。また、実用的な位置情報アプリでは、AndroidManifest.xmlにACCESS_FINE_LOCATIONなどの位置情報パーミッションを追加し、実行時に許可を求める処理が必要になります。

ステップ4:AndroidManifest.xmlを確認する

androidManifest.xmlは以下のようになります。

<?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=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

アプリを実行する

それでは、アプリを実行してみましょう。ここでは、実機のAndroidスマートフォンがパソコンに接続されているものとします。Android Studioからアプリを実行するには、プロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。デバイス選択画面で自分のモバイル端末を選択すると、端末に以下のような画面が表示されます。

Androidで2つの地理的な地点間の距離を取得する方法

  1. 【Android】エミュレータのIPアドレスを取得して表示する方法を解説

    はじめにこの記事では、Androidアプリから端末(エミュレータ/実機)のIPアドレスを取得し、画面に表示する方法を、実際のサンプルコードとともにステップ形式で解説します。Wi-Fi接続情報を利用したシンプルな実装例なので、Android開発初心者の方にもわかりやすい内容となっています。手順1:新規プロジェクトの作成まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを作成してください。手順2:レイアウトファイル(activity_main.xml)の編集res/layout/acti

  2. 【Android開発】プログラムから現在のSDKバージョン(APIレベル)を取得する方法

    この記事では、Androidアプリ内から現在のSDKバージョン(APIレベル)をプログラムで取得する方法を、実際のサンプルコードとともにわかりやすく解説します。使用するクラス:android.os.BuildAndroidでは、android.os.Build.VERSION クラスを使うことで、端末のOS情報を簡単に取得できます。主に以下の2つのフィールドを使用します。Build.VERSION.SDK_INT … APIレベルを整数値で返します(例:33)Build.VERSION.RELEASE … OSバージョンを文字列で返します(例:「13」)手順1:新規プロジェクトの作成まず、An