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