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

Android-এ নেটওয়ার্ক প্রোভাইডার থেকে বর্তমান সময় পাওয়ার উপায়

নেটওয়ার্ক প্রোভাইডার থেকে লোকেশন টাইমস্ট্যাম্প (Time) প্রাপ্ত করা

এই উদাহরণে দেখানো হয়েছে কিভাবে Location.getTime() মেথড ব্যবহার করে নেটওয়ার্ক প্রোভাইডার থেকে প্রাপ্ত লোকেশন ডেটার টাইমস্ট্যাম্প বের করা যায়।

লেআউট (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">

    <TextView
        android:id="@+id/text"
        android:textSize="30sp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

MainActivity.java

package com.example.myapplication;

import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {

    TextView textView;
    Location location;

    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.text);

        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 101);
            return;
        }

        location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    }

    @RequiresApi(api = Build.VERSION_CODES.O)
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == 101 && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            showLocationTime();
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.O)
    @Override
    protected void onResume() {
        super.onResume();
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
                || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
            showLocationTime();
        }
    }

    private void showLocationTime() {
        if (location != null) {
            long timeMillis = location.getTime(); // UTC milliseconds since epoch
            // মানুষ পড়তে পারা ফরম্যাটে রূপান্তর
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
            String formattedTime = sdf.format(new Date(timeMillis));
            textView.setText("Location Time: " + formattedTime + "\nRaw: " + timeMillis);
        } else {
            textView.setText("লোকেশন পাওয়া যায়নি");
        }
    }
}

গুরুত্বপূর্ণ পয়েন্টসমূহ

  • location.getTime() UTC-তে মিলিসেকেন্ড রিটার্ন করে (January 1, 1970 00:00:00 UTC থেকে)
  • এটি ডিভাইসের ক্লক নয়, বরং লোকেশন ফিক্স হওয়ার সময় নির্দেশ করে
  • নেটওয়ার্ক প্রোভাইডারের ক্ষেত্রে এটি শেষ সেল টাওয়ার/Wi-Fi স্ক্যানের সময় হতে পারে
  • মান সহজে পড়তে SimpleDateFormat ব্যবহার করুন

Manifest পারমিশন

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

Android-এ নেটওয়ার্ক প্রোভাইডার থেকে বর্তমান সময় পাওয়ার উপায়

  1. অ্যান্ড্রয়েডে কন্টেন্ট প্রোভাইডার থেকে ফোন নম্বর পাওয়ার পদ্ধতি

  2. অ্যান্ড্রয়েডে ইন্টারনেট থেকে বর্তমান তারিখ ও সময় পাওয়ার পদ্ধতি

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

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