জিপিএস বা ইন্টারনেট ব্যবহার না করেই অ্যান্ড্রয়েডে ব্যবহারকারীর বর্তমান অবস্থান পান


91

জিপিএস বা ইন্টারনেট ব্যবহার না করে ব্যবহারকারীর বর্তমান অবস্থান পাওয়া সম্ভব? আমি মোবাইল নেটওয়ার্ক সরবরাহকারীর সাহায্যে বোঝাতে চাইছি।


4
গৃহীত উত্তর কি পুরোপুরি কার্যকর হয়? আমার জন্য এটা কাজ করছে না ... !!!
সামিতা চথুরঙ্গ

4
দুর্ভাগ্যক্রমে গৃহীত উত্তরটি ভুল :-( আশ্চর্যজনক যে এটি প্রশ্নের উত্তর সঠিকভাবে না দিলেও এটি ২৮ টি উপস্থাপনা পেয়েছে!
ডেভিড ওয়াসার

@ ডেভিডওয়াসার আপনার মূল্যবান মন্তব্যের প্রশংসা করুন। এবং আপনি কী ভাবেন যে ইন্টারনেট বা জিপিএস ব্যবহার না করে অবস্থানের বিশদ পাওয়ার জন্য আসলে কোনও পদ্ধতি নেই? (সেই সেল সম্প্রচারিত বার্তাগুলি ব্যবহার ব্যতীত)
সামিতা চতুরাঙ্গ

4
@ সামিথা ছাথুরঙ্গ এ সম্পর্কে চিন্তা করুন: আপনার যদি জিপিএস না থাকে এবং আপনার ইন্টারনেট না থাকে তবে আপনি এই তথ্যটি কোথায় পাবেন? আপনি নেটওয়ার্ক থেকে সেল আইডি তথ্য পেতে পারেন। এটি আপনাকে কেবল আইডি দেয়। এরপরে আপনাকে আইডিটি প্রকৃত স্থানাঙ্ক বা নামের সাথে মানচিত্রের জন্য প্রয়োজন। আপনি সর্বদা নিজের সেল আইডি ডাটাবেস তৈরি করতে এবং এটি আপনার অ্যাপ্লিকেশনটিতে অন্তর্ভুক্ত করতে পারতেন, তবে সেই সমস্ত ডেটা সংগ্রহ করার জন্য আপনাকে প্রচুর পরিমাণে কাজ করতে হবে এবং ম্যাপিংটি স্থির নয়: মোবাইল অপারেটররা নতুন সেল টাওয়ার এবং ভাড়াটি ইনস্টল করার সাথে সাথে এটি পরিবর্তন হয় তাদের নেটওয়ার্ক মূলত, ব্যবহারিক উত্তরটি "না"।
ডেভিড ওয়াসার

উত্তর: ডেভিডওয়াসার উত্তর দেওয়ার জন্য ধন্যবাদ ইন্টারনেট বা জিপিএস ছাড়াই কীভাবে লোকেশন পাবেন তাও আমার বড় চমক ছিল। তবে অনেক ফোরামে স্ট্যাকওভারফ্লো সহ এটি সম্ভব বলে জানা গেছে। সে কারণেই আমি ভেবেছিলাম এটি সম্ভব হবে। দেখে মনে হচ্ছে প্রচুর লোকও বিপথগামী।
সামিতা চঠুরঙ্গ

উত্তর:


87

আপনি যা করতে যাচ্ছেন তার LocationManager.NETWORK_PROVIDERবদলে পজিশনটি পাবেন LocationManager.GPS_PROVIDERNETWORK_PROVIDERGSM- এর বা WiFi উপর ইচ্ছা সমাধানে যা কি কখনো পাওয়া যায়। স্পষ্টতই ওয়াইফাই বন্ধ থাকায়, জিএসএম ব্যবহার করা হবে। মনে রাখবেন যে সেল নেটওয়ার্ক ব্যবহার করা মূলত 500 মিটারের জন্য সঠিক।

http://developer.android.com/guide/topics/location/obtaining-user-location.html এর কিছু সত্যই দুর্দান্ত তথ্য এবং নমুনা কোড রয়েছে।

কোডটি বেশিরভাগের সাথে সম্পন্ন করার পরে এটি OnCreate()যুক্ত করুন:

// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      // Called when a new location is found by the network location provider.
      makeUseOfNewLocation(location);
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {}

    public void onProviderEnabled(String provider) {}

    public void onProviderDisabled(String provider) {}
  };

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

আপনার ক্রিয়াকলাপটি LocationListenerক্লাসটি প্রয়োগ করতে এবং এভাবে আপনার ক্রিয়াকলাপে প্রয়োগ করতে পারে onLocationChanged()


4
দয়া করে ব্যাটারি সংরক্ষণের কৌশলগুলি পরীক্ষা করে দেখুন। এছাড়াও, আপনার অ্যাপ্লিকেশনটির উপর নির্ভর করে, PASSIVE_PROVIDER এবং getLastKজ্ঞানলোকেশন ব্যবহার করা যদি আপনার অ্যাপ্লিকেশনগুলি অ্যান্টেনা ব্যবহার করে তবে আপনাকে প্রচুর কাজ এবং ব্যাটারি সাশ্রয় করতে পারে।
ইয়ান

4
আরে @ ইয়ান, আমি একই কোড ব্যবহার করেছি .. তবে আমার ক্ষেত্রে, লোকেশনচেনড () শ্রোতার পদ্ধতিটি কখনও কল করেনি। অন-রিসুম () পদ্ধতিতে আমি অনুরোধলোকেশন আপডেটস ব্যবহার করেছি। এখনও এটি বলা হয় না .. সুতরাং সেখানে কি সমস্যা ছিল?
এমএস

4
আরে @ এলান বা অন্য যে কেউ আমাকে উপরের কোডটি প্রয়োগ করতে সাহায্য করতে পারে তবে লোকেশনচেন্জড পদ্ধতিটি নতুন বলা হয় সমস্যা কী হতে পারে কেউ আমাকে দয়া করে সাহায্য করতে পারে .....
পেরেশম

4
ইন্টারনেট ছাড়া কি সমবায়গুলি পাওয়া সম্ভব? কিছু ডিভাইসে এটি কাজ করছে না বলে মনে হচ্ছে।
iammilind

20
এই উত্তরটি ভুল :-( ওপি ইন্টারনেট সংযোগ ব্যবহার না করে কীভাবে অবস্থান পেতে পারে তা জানতে চেয়েছিল। সেল-আইডি এবং ডাব্লু ওয়াইফাই ম্যাকের ঠিকানাগুলির একটি জিও স্থানাঙ্কে সমাধান করার জন্য সার্ভার অ্যাক্সেস করার জন্য LOCATION_PROVIDER ইন্টারনেট ব্যবহার করা দরকার Ifআপনার কাছে ইন্টারনেট না থাকলে সংযোগ আপনি কোনও সমন্বয় পেতে সক্ষম হবেন না you আপনি যদি বলেন এটি এটি আপনার জন্য কাজ করে তবে এর অর্থ হ'ল হয় আপনার কাছে একটি ইন্টারনেট সংযোগ রয়েছে, অথবা আপনার কাছে একটি ইন্টারনেট সংযোগ ছিল (অবস্থানের এপিআই ডাউনলোড এবং আপনার চারপাশের অঞ্চল সম্পর্কে কিছু তথ্য ক্যাশে) , বা অবস্থানের তথ্য বয়সী (এবং বেঠিক) হয়।
ডেভিড Wasser

16

পেয়ে getLastKnownLocationআপনি আসলে নিজেকে ঠিক করতে শুরু করবেন না।

সচেতন হোন যে এটি সরবরাহকারী শুরু করতে পারে তবে ব্যবহারকারী যদি এর আগে কোনও অবস্থান অর্জন করে থাকে তবে আমি তা মনে করি না। ডক্সটি এ সম্পর্কে খুব বেশি পরিষ্কার নয়।

দস্তাবেজ অনুসারে লাস্টকনডলকেশন:

প্রদত্ত সরবরাহকারীর কাছ থেকে প্রাপ্ত সর্বশেষ জ্ঞাত অবস্থান ফিক্স থেকে ডেটা নির্দেশ করে এমন একটি অবস্থান ফেরত দেয়। এটি সরবরাহকারী শুরু না করেই করা যেতে পারে।

এখানে একটি দ্রুত স্নিপেট রয়েছে:

import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import java.util.List;

public class UtilLocation {
    public static Location getLastKnownLoaction(boolean enabledProvidersOnly, Context context){
        LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
        Location utilLocation = null;
        List<String> providers = manager.getProviders(enabledProvidersOnly);
        for(String provider : providers){

            utilLocation = manager.getLastKnownLocation(provider);
            if(utilLocation != null) return utilLocation;
        }
        return null;
    }
}

আপনাকে এতে নতুন অনুমতিও যুক্ত করতে হবে AndroidManifest.xml

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

আমি যা ভাবছি তা হ'ল, মোবাইল নেটওয়ার্ক ব্যবহার করে কী বর্তমান অবস্থান পাওয়া সম্ভব
প্রভু এম

আপনার ডক্সটি পড়তে হবে। মধ্যে পার্থক্য জানুন PASSIVE_PROVIDER, NETWORK_PROVIDERএবং GPS_PROVIDER
hwrdprkns

4
যদিও এটি আদর্শ, আমি গেটটাইম () ব্যবহার করে শেষ অবস্থানের সময়টি পরীক্ষা করব। তারপরে, আপনি এটি কত বছর বয়সী হতে দেবেন তা সিদ্ধান্ত নেওয়ার বিষয় মাত্র। যদি এটি খুব পুরানো হয় তবে আমার পোস্ট ব্যবহার করে একটি নতুন অবস্থান পান।
আয়ান

4
@ ইয়ান কীভাবে নতুন বা নতুন অবস্থান পাবে?
আর্কি.বিপিজিসি

4
জিপিএস বন্ধ থাকলে আমরা কী অবস্থান পেতে পারি
প্রসাদ

4
boolean gps_enabled = false;
boolean network_enabled = false;

LocationManager lm = (LocationManager) mCtx
                .getSystemService(Context.LOCATION_SERVICE);

gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

Location net_loc = null, gps_loc = null, finalLoc = null;

if (gps_enabled)
    gps_loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (network_enabled)
    net_loc = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

if (gps_loc != null && net_loc != null) {

    //smaller the number more accurate result will
    if (gps_loc.getAccuracy() > net_loc.getAccuracy()) 
        finalLoc = net_loc;
    else
        finalLoc = gps_loc;

        // I used this just to get an idea (if both avail, its upto you which you want to take as I've taken location with more accuracy)

} else {

    if (gps_loc != null) {
        finalLoc = gps_loc;
    } else if (net_loc != null) {
        finalLoc = net_loc;
    }
}

4

না, আপনি বর্তমানে জিপিএস বা ইন্টারনেট ব্যবহার না করে অবস্থান পেতে পারবেন না।

ওয়াইফাই, সেলুলার বা ব্লুটুথের উপর ভিত্তি করে অবস্থানের কৌশলগুলি একটি বৃহত ডাটাবেসের সাহায্যে কাজ করে যা নিয়মিত আপডেট হয়। একটি ডিভাইস ট্রান্সমিটার আইডিগুলির জন্য স্ক্যান করে এবং তারপরে এগুলি গুগল, অ্যাপল বা স্কাইহুকের মতো কোনও পরিষেবাতে ইন্টারনেটের মাধ্যমে একটি কোয়েরিতে পাঠায় । সেই পরিষেবাটি পরিচিত স্থানগুলির পূর্ববর্তী ওয়্যারলেস সমীক্ষার ভিত্তিতে একটি অবস্থানের সাথে প্রতিক্রিয়া জানায়। ইন্টারনেট অ্যাক্সেস ব্যতীত আপনার কাছে এই জাতীয় ডেটাবেসের স্থানীয় কপি থাকতে হবে এবং এটি আপ টু ডেট রাখতে হবে। বৈশ্বিক ব্যবহারের জন্য, এটি খুব অবৈধ।

তাত্ত্বিকভাবে, একটি মোবাইল সরবরাহকারী কেবল স্থানীয় ডেটা পরিষেবা সরবরাহ করতে পারে তবে ইন্টারনেটে অ্যাক্সেস করতে পারে না এবং তারপরে মোবাইল ডিভাইস থেকে অবস্থানের প্রশ্নের উত্তর দেয়। মোবাইল সরবরাহকারীরা এটি করেন না; এই জাতীয় সীমাবদ্ধ ডেটা অ্যাক্সেসের জন্য কেউ অর্থ দিতে চায় না। যদি আপনার মোবাইল সরবরাহকারীর মাধ্যমে ডেটা পরিষেবা থাকে তবে আপনার কাছে ইন্টারনেট অ্যাক্সেস রয়েছে।

সংক্ষেপে, লোকেশনম্যানেজার.এনইটওয়র্ককিপ্রোভিডার বা অ্যান্ড্রয়েড.হার্ডওয়্যার.লোকেশন.টওয়ার্ক ব্যবহারের জন্য লোকেশন পেতে ইন্টারনেট ব্যবহার করা দরকার।

সর্বশেষ জ্ঞাত অবস্থানটি ব্যবহার করতে আপনার খুব সম্প্রতি জিপিএস বা ইন্টারনেট অ্যাক্সেস থাকা দরকার। আপনার যদি সবেমাত্র ইন্টারনেট ছিল, সম্ভবত আপনি আবার ইন্টারনেট পেতে আপনার অবস্থান বা সেটিংস সামঞ্জস্য করতে পারেন। আপনার ডিভাইসে যদি জিপিএস বা ইন্টারনেট অ্যাক্সেস না থাকে তবে সর্বশেষ পরিচিত অবস্থান বৈশিষ্ট্য আপনাকে সাহায্য করবে না।

জিপিএস বা ইন্টারনেট ব্যতীত আপনি:

  1. রাতের আকাশের ছবি তুলুন এবং একটি তারকা চার্টের উপর ভিত্তি করে আপনার অবস্থানটি অনুমান করতে বর্তমান সময়টি ব্যবহার করুন। আপনার ছবিগুলির কোণগুলি সঠিকভাবে পরিমাপ করা হয়েছে তা নিশ্চিত করার জন্য সম্ভবত অতিরিক্ত সরঞ্জামের প্রয়োজন হবে।
  2. পরিচিত অবস্থান থেকে শুরু করে অবস্থানটি ট্র্যাক করতে একটি অ্যাক্সিলোমিটার ব্যবহার করুন। এই ধরণের পদ্ধতির মধ্যে ত্রুটি সঞ্চিতি বেশিরভাগ পরিস্থিতিতে এটি অযৌক্তিক করে তোলে।

3

জিপিএস এবং নেটওয়ার্ক সরবরাহকারী ব্যবহার না করে ব্যবহারকারীর বর্তমান অবস্থান পাওয়া সম্ভব।

ঘ। Convert cellLocation to real location (Latitude and Longitude), using "http://www.google.com/glm/mmap"

২. আপনার রেফারেন্সের জন্য এখানে ক্লিক করুন


2

আপনি কি গুগল ম্যাপস জিওলোকেশন এপি একবার দেখেছেন? গুগল ম্যাপ জিওলোকেশন

এটি সাধারণ রেস্টএপি, আপনার কেবল একটি অনুরোধ পোস্ট করতে হবে, পরিষেবাটি মিটারে নির্ভুলতার সাথে কোনও স্থান ফেরত দেবে।


-1

দেখা যাচ্ছে যে জিপিএস ব্যবহার না করে কোনও স্মার্ট ফোন ট্র্যাক করা সম্ভব।

সূত্র:

প্রাথমিক: "পিনমি: বিশ্বজুড়ে একটি স্মার্টফোন ব্যবহারকারী ট্র্যাকিং"

মাধ্যমিক: "জিপিএস Con বা সম্মতি ছাড়াই সেলফোনটি কীভাবে ট্র্যাক করবেন"

আমি এখনও দলের চূড়ান্ত কোডের একটি লিঙ্ক খুঁজে পাইনি। আমি যখন করব তখন পোস্ট করব, অন্য কেউ যদি তা না করে থাকে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.