কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েডে দুটি ভৌগোলিক অবস্থানের মধ্যবর্তী দূরত্ব নির্ণয় করার পদ্ধতি

Location.distanceTo() ব্যবহার করে দুটি GPS কোঅর্ডিনেটের মধ্যবর্তী দূরত্ব বের করা

অ্যান্ড্রয়েড SDK-তে android.location.Location ক্লাসে বিল্ট-ইন distanceTo() মেথড রয়েছে যা দুটি জিওগ্রাফিক কোঅর্ডিনেট (অক্ষাংশ/দ্রাঘিমাংশ) এর মধ্যবর্তী সরাসরি দূরত্ব (মিটারে) হিসাব করে দেয়। এই টিউটোরিয়ালে এই মেথডটি ব্যবহার করে দূরত্ব নির্ণয়ের পদ্ধতি দেখানো হয়েছে।

প্রয়োজনীয় ধাপসমূহ

ধাপ ১: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে একটি নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট ফাইল (activity_main.xml)

<?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="18sp"
        android:textStyle="bold"
        android:padding="16dp" />

</RelativeLayout>

ধাপ ৩: MainActivity.java - দূরত্ব হিসাব করার লজিক

package com.example.distancecalculator;

import android.location.Location;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

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 locationA = new Location("locationA");
        locationA.setLatitude(23.7806);
        locationA.setLongitude(90.4194);

        // দ্বিতীয় লোকেশন (ঢাকা - ধানমণ্ডি)
        Location locationB = new Location("locationB");
        locationB.setLatitude(23.7500);
        locationB.setLongitude(90.3750);

        // দূরত্ব হিসাব করুন (ফলাফল মিটারে আসবে)
        float distanceInMeters = locationA.distanceTo(locationB);

        // কিলোমিটারে রূপান্তর করুন
        float distanceInKm = distanceInMeters / 1000f;

        // ফলাফল প্রদর্শন করুন
        String result = String.format(
            "লোকেশন A: গুলশান (২৩.৭৮০৬, ৯০.৪১৯৪)\n" +
            "লোকেশন B: ধানমণ্ডি (২৩.৭৫০০, ৯০.৩৭৫০)\n\n" +
            "দূরত্ব: %.2f মিটার (%.2f কিমি)",
            distanceInMeters, distanceInKm
        );
        
        textView.setText(result);
    }
}

Location.distanceTo() কীভাবে কাজ করে?

  • এলগরিদম: Haversine formula (গোলাকার পৃথিবী ধরে)
  • রিটার্ন মান: মিটারে (float) - দুটি পয়েন্টের মধ্যবর্তী স্ট্রেইট-লাইন দূরত্ব
  • পরিশুদ্ধি: ছোট দূরত্বের জন্য খুব সঠিক, বড় দূরত্বের জন্য পৃথিবীর বক্রতার কারণে কিছুটা বিচলন হতে পারে

উন্নত ব্যবহার: Location.between() (API 26+)

Android 8.0 (API 26) থেকে স্ট্যাটিক মেথড Location.distanceBetween() ব্যবহার করা যায়:

float[] results = new float[1];
Location.distanceBetween(
    lat1, lon1,  // প্রথম লোকেশন
    lat2, lon2,  // দ্বিতীয় লোকেশন
    results      // ফলাফল এই অ্যারেতে স্টোর হবে
);
float distanceMeters = results[0];

রোড দূরত্ব (Driving Distance) বের করা

distanceTo() শুধু হবাই দূরত্ব (straight-line) দেয়। রাস্তার মাধ্যমে দূরত্বের জন্য Google Directions API বা OSRM API ব্যবহার করতে হবে:

// Google Directions API উদাহরণ (Retrofit + JSON parsing)
String url = "https://maps.googleapis.com/maps/api/directions/json?" +
    "origin=" + lat1 + "," + lon1 +
    "&destination=" + lat2 + "," + lon2 +
    "&key=YOUR_API_KEY";

ধাপ ৪: ম্যানিফেস্ট ফাইল

এই উদাহরণের জন্য কোনোพิশেষ পারমিশন দরকার নেই (শুধু ক্যালকুলেশন)। যদি GPS লোকেশন ব্যবহার করতে চান তবে:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

ফলাফল

অ্যাপ্লিকেশন রান করলে দুটি ঢাকার এলাকার মধ্যবর্তী দূরত্ব মিটার এবং কিলোমিটারে দেখাবে।

অ্যান্ড্রয়েডে দুটি ভৌগোলিক অবস্থানের মধ্যবর্তী দূরত্ব নির্ণয় করার পদ্ধতি

অতিরিক্ত টিপস

  • বেশি পরিশুদ্ধির জন্য Geodesic লাইব্রেরি বা Google Maps SDK-এর SphericalUtil.computeDistanceBetween() ব্যবহার করুন
  • বatches দূরত্ব ক্যালকুলেট করতে Location.distanceBetween() অ্যারে ব্যবহার করুন
  • UI-তে দূরত্ব দেখানোর সময় 단위를 স্পষ্ট করুন (মিটার/কিমি/মাইল)
  1. অ্যান্ড্রয়েডে TextView-এ স্প্যান ব্যবহার করে টেক্সটের রঙ পরিবর্তন করার পদ্ধতি

  2. অ্যান্ড্রয়েডে রিসোর্স আইডি (Resource ID) দিয়ে রিসোর্স নাম পাওয়া

  3. Android Emulator-এর IP Address পাওয়ার পদ্ধতি

  4. প্রোগ্রামেটিক্যালি বর্তমান অ্যান্ড্রয়েড SDK ভার্সন কীভাবে পাবেন?