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

অ্যান্ড্রয়েড WebView-এ বর্তমান লোকেশন (Current Location) কিভাবে পেতে হয়?


ওভারভিউ

এই উদাহরণটি দেখায় কিভাবে WebView-এ জিওলোকেশন (Geolocation) সক্ষম করে ব্যবহারকারীর বর্তমান অবস্থান দেখানো যায়।

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

Android Studio-তে যান: File → New Project এবং প্রজেক্ট তৈরির জন্য প্রয়োজনীয় সব তথ্য পূরণ করুন।

ধাপ ২: লেআউট XML-এ WebView যোগ করুন

res/layout/activity_main.xml ফাইলে নিচের কোডটি যোগ করুন:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">
    <WebView
        android:id="@+id/web_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

উপরের কোডে mylocation.org ওয়েবসাইট দেখানোর জন্য WebView ব্যবহার করা হয়েছে।

ধাপ ৩: MainActivity.java-তে কোড যোগ করুন

package com.example.myapplication;

import android.app.ProgressDialog;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("Loading Data...");
        progressDialog.setCancelable(false);
        
        WebView web_view = findViewById(R.id.web_view);
        web_view.requestFocus();
        web_view.getSettings().setLightTouchEnabled(true);
        web_view.getSettings().setJavaScriptEnabled(true);
        web_view.getSettings().setGeolocationEnabled(true);
        web_view.loadUrl("https://mylocation.org/");
        
        web_view.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                if (progress < 100) {
                    progressDialog.show();
                }
                if (progress == 100) {
                    progressDialog.dismiss();
                }
            }
        });
    }
}

গুরুত্বপূর্ণ সেটিংস:

  • setJavaScriptEnabled(true) - জাভাস্ক্রিপ্ট সক্ষম (জিওলোকেশনের জন্য আবশ্যক)
  • setGeolocationEnabled(true) - জিওলোকেশন API সক্ষম
  • WebChromeClient - জিওলোকেশন পারমিশন রিকোয়েস্ট হ্যান্ডেল করার জন্য আবশ্যক

ধাপ ৪: AndroidManifest.xml-এ পারমিশন যোগ করুন

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.myapplication">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <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>

দ্রষ্টব্য: লোকেশন পারমিশন (ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION) অ্যাড করা হয়েছে যা মূল কোডে অনুপস্থিত ছিল। Android 6.0+ তে রানটাইম পারমিশনও চেক করতে হয়।

অ্যাপ্লিকেশন চালান

আপনার অ্যান্ড্রয়েড ডিভাইস কম্পিউটারের সাথে সংযুক্ত আছে ধরে নিচ্ছি। Android Studio-তে আপনার প্রজেক্টের activity ফাইল খুলুন এবং টুলবার থেকে Run আইকনে ক্লিক করুন। আপনার মোবাইল ডিভাইস সিলেক্ট করুন এবং ডিভাইসে লোকেশন দেখুন।

অ্যান্ড্রয়েড WebView-এ বর্তমান লোকেশন (Current Location) কিভাবে পেতে হয়?

  1. অ্যান্ড্রয়েডে বর্তমান থ্রেড ডেমন (Daemon) কিনা যাচাই করার পদ্ধতি

  2. অ্যান্ড্রয়েডে বর্তমান থ্রেডের আইডি (ID) পাওয়ার পদ্ধতি

  3. এন্ড্রয়েডে প্রোগ্রামেটিক্যালি বর্তমান GPS লোকেশন কীভাবে পাবেন?

  4. অ্যান্ড্রয়েডে বর্তমান লোকেশনের ল্যাটিটিউড এবং লองিটিউড কীভাবে পাবেন?