অ্যান্ড্রয়েড: লোকেশনম্যানেজার বনাম গুগল প্লে পরিষেবাদি


151

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

ওয়েবটি শুরু করার জন্য কোনও জায়গায় অনুসন্ধান করার পরে আমি কিছু টিউটোরিয়াল পেয়েছি যা LocationManagerক্লাস ব্যবহার করে এবং এমন কিছু লোক যা ব্যবহারকারীর অবস্থান সন্ধানের জন্য গুগল প্লে পরিষেবা ব্যবহার করে ।

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

অবস্থানগুলি অনুসন্ধানের এই দুটি পদ্ধতির মধ্যে কী পার্থক্য রয়েছে (যদি থাকে তবে)?


উত্তর:


319

অ্যান্ড্রয়েডে ব্যবহারকারীর অবস্থান

অ্যান্ড্রয়েডে ব্যবহারকারীর অবস্থান আইওএসের চেয়ে কিছুটা কম সোজা। বিভ্রান্তি শুরু করতে, আপনি এটি করতে পারেন এমন দুটি সম্পূর্ণ ভিন্ন উপায়। প্রথমটি এন্ড্রয়েড এপিআই ব্যবহার করছে android.location.LocationListenerএবং দ্বিতীয়টি গুগল প্লে পরিষেবাদি এপিআই ব্যবহার করছে com.google.android.gms.location.LocationListener। চলুন উভয় মাধ্যমে যেতে দিন।

  1. Android এর অবস্থান API

    অ্যান্ড্রয়েডের অবস্থান এপিআইগুলি অবস্থান পেতে তিনটি পৃথক সরবরাহকারী ব্যবহার করে -

    • LocationManager.GPS_PROVIDER- এই সরবরাহকারী উপগ্রহ ব্যবহার করে অবস্থান নির্ধারণ করে। অবস্থার উপর নির্ভর করে, এই সরবরাহকারীর কোনও অবস্থানের ফিক্স ফিরে পেতে কিছুটা সময় নিতে পারে।
    • LocationManager.NETWORK_PROVIDER- এই সরবরাহকারী সেল টাওয়ার এবং ওয়াইফাই অ্যাক্সেস পয়েন্টগুলির উপলব্ধতার ভিত্তিতে অবস্থান নির্ধারণ করে। নেটওয়ার্ক দেখার জন্য ফলাফলগুলি পুনরুদ্ধার করা হয়।
    • LocationManager.PASSIVE_PROVIDER- এই সরবরাহকারী অন্যান্য সরবরাহকারী দ্বারা উত্পাদিত অবস্থানগুলি ফিরিয়ে দেবে। অন্যান্য অ্যাপ্লিকেশন বা পরিষেবাদিগুলি নিজেরাই লোকেশনগুলিতে অনুরোধ না করে যখন আপনি আবেদন করতে পারেন তখন আপনি প্যাসিভভাবে অবস্থান আপডেটগুলি পান।

এর সংক্ষিপ্তসারটি হ'ল আপনি LocationManagerসিস্টেম থেকে কোনও অবজেক্ট পাবেন , প্রয়োগ করুন LocationListenerএবং এরপরে কল requestLocationUpdatesকরুন LocationManager

এখানে একটি কোড স্নিপেট রয়েছে:

    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);

অবস্থান কৌশলগুলিতে গুগলের এপিআই গাইডকোডটি খুব সুন্দরভাবে ব্যাখ্যা করে। তবে তারা আরও উল্লেখ করে যে বেশিরভাগ ক্ষেত্রে আপনি তার পরিবর্তে গুগল লোকেশন সার্ভিসেস এপিআই ব্যবহার করে আরও ভাল ব্যাটারি পারফরম্যান্স পাবেন । এখন শুরু হয় বিভ্রান্তি!

  1. গুগলের অবস্থান পরিষেবাদি এপিআই

গুগলের লোকেশন সার্ভিসেস এপিআই গুগল প্লে সার্ভিস APK এর একটি অংশ ( এটি কীভাবে সেট আপ করবেন তা এখানে রয়েছে )। এগুলি অ্যান্ড্রয়েডের এপিআইয়ের শীর্ষে নির্মিত। এই এপিআইগুলি উপরে উল্লিখিত সরবরাহকারীর পরিবর্তে একটি "ফিউজড লোকেশন প্রোভাইডার" সরবরাহ করে। নির্ভুলতা, ব্যাটারি ব্যবহার ইত্যাদির উপর ভিত্তি করে এই সরবরাহকারী কোন অন্তর্নিহিত সরবরাহকারীকে স্বয়ংক্রিয়ভাবে চয়ন করে তা দ্রুত হয় কারণ আপনি সিস্টেম-বিস্তৃত পরিষেবা থেকে অবস্থান পান যা এটি আপডেট করে চলে। এবং আপনি আরও উন্নত বৈশিষ্ট্য যেমন জিওফেন্সিং ব্যবহার করতে পারেন।

গুগলের অবস্থান পরিষেবাগুলি ব্যবহার করতে, আপনার অ্যাপ্লিকেশনটির সাথে সংযুক্ত হওয়া দরকার GooglePlayServicesClient। ক্লায়েন্টের সাথে সংযোগ স্থাপন করতে, আপনার ক্রিয়াকলাপটি (বা টুকরো টুকরো, বা তাই) প্রয়োগ GooglePlayServicesClient.ConnectionCallbacksএবং GooglePlayServicesClient.OnConnectionFailedListenerইন্টারফেসের প্রয়োজন। এখানে একটি নমুনা কোড রয়েছে:

    public class MyActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener {
    LocationClient locationClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        locationClient = new LocationClient(this, this, this);
    }

    @Override
    public void onConnected(Bundle bundle) {
    Location location = locationClient.getLastLocation() ;
        Toast.makeText(this, "Connected to Google Play Services", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDisconnected() {
    Toast.makeText(this, "Connected from Google Play Services.", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
        // code to handle failed connection
        // this code can be found here — http://developer.android.com/training/location/retrieve-current.html 
    }
  • locationClient.getLastLocation()নাল কেন ?

locationClient.getLastLocation()ক্লায়েন্ট থেকে শেষ বার দেখা গিয়েছিল পায়। তবে, কমপক্ষে একটি ক্লায়েন্ট এর সাথে সংযুক্ত থাকলে ফিউজড অবস্থান সরবরাহকারী কেবল পটভূমির অবস্থান বজায় রাখবেন। প্রথম ক্লায়েন্ট একবার সংযুক্ত হয়ে গেলে, এটি অবিলম্বে একটি অবস্থান পাওয়ার চেষ্টা করবে। আপনার কার্যকলাপের প্রথম ক্লায়েন্ট সংযোগ করতে হয় এবং আপনি কল তাহলে getLastLocation()ডানদিকে দূরে onConnected(), এ সময়ে প্রথম অবস্থানে আসার জন্য নাও হতে পারে। এই পরিণাম ডেকে আনবে locationহচ্ছে null

এই সমস্যাটি সমাধান করার জন্য, সরবরাহকারীর অবস্থান না পাওয়া পর্যন্ত আপনাকে (অনির্দিষ্টকালের জন্য) অপেক্ষা করতে হবে এবং তারপরে কল করুন getLastLocation(), যা জানা অসম্ভব। আরেকটি (আরও ভাল) বিকল্প হ'ল com.google.android.gms.location.LocationListenerপর্যায়ক্রমিক লোকেশন আপডেটগুলি পেতে ইন্টারফেসটি প্রয়োগ করা (এবং আপনি প্রথম আপডেট পাওয়ার পরে এটি স্যুইচ অফ করে)।

    public class MyActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener, LocationListener {
    // . . . . . . . . more stuff here 
    LocationRequest locationRequest;
    LocationClient locationClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // . . . . other initialization code
        locationClient = new LocationClient(this, this, this);
    locationRequest = new LocationRequest();
    // Use high accuracy
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        // Set the update interval to 5 seconds
    locationRequest.setInterval(UPDATE_INTERVAL);
        // Set the fastest update interval to 1 second
    locationRequest.setFastestInterval(FASTEST_INTERVAL);
    }
    // . . . . . . . . other methods 
    @Override
    public void onConnected(Bundle bundle) {
        Location location = locationClient.getLastLocation();
        if (location == null)
            locationClient.requestLocationUpdates(locationRequest, this);
        else
            Toast.makeText(getActivity(), "Location: " + location.getLatitude() + ", " + location.getLongitude(), Toast.LENGTH_SHORT).show();
    }
    // . . . . . . . . other methods
    @Override
    public void onLocationChanged(Location location) {
        locationClient.removeLocationUpdates(this);
        // Use the location here!!!
    }

এই কোডটিতে, আপনি ক্লায়েন্টের ইতিমধ্যে শেষ অবস্থান (ইন onConnected) আছে কিনা তা পরীক্ষা করছেন । যদি তা না হয় তবে আপনি অবস্থান আপডেটের জন্য অনুরোধ করছেন এবং আপডেট পাওয়ার সাথে সাথে অনুরোধগুলি ( onLocationChanged()কলব্যাকে) স্যুইচ করছেন ।

মনে রাখবেন যে কলব্যাকের locationClient.requestLocationUpdates(locationRequest, this);অভ্যন্তরে থাকতে হবে onConnected, অন্যথায় আপনি একটি পাবেন IllegalStateExceptionকারণ আপনি গুগল প্লে পরিষেবা ক্লায়েন্টের সাথে সংযুক্ত না হয়ে অবস্থানের জন্য অনুরোধ করার চেষ্টা করবেন।

  • ব্যবহারকারী অবস্থান পরিষেবাদি অক্ষম করেছে

অনেক সময়, ব্যবহারকারীর লোকেশন পরিষেবাদি অক্ষম থাকত (ব্যাটারি বাঁচাতে বা গোপনীয়তার কারণে)। এই জাতীয় ক্ষেত্রে, উপরের কোডটি এখনও অবস্থান আপডেটের জন্য অনুরোধ onLocationChangedকরবে , তবে কখনও কল করা হবে না। আপনি যদি লোকেশন পরিষেবাগুলি অক্ষম করেছেন কিনা তা পরীক্ষা করে আপনি অনুরোধগুলি থামাতে পারেন can

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

আপনার onCreateপদ্ধতিতে:

    LocationManager manager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER) && !manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
    locationEnabled = false;
    Toast.makeText(getActivity(), "Enable location services for accurate data", Toast.LENGTH_SHORT).show();
}
else locationEnabled = true;

এবং locationEnabledআপনার onConnectedপদ্ধতিতে পতাকাটি এভাবে ব্যবহার করুন:

    if (location != null) {
    Toast.makeText(getActivity(), "Location: " + location.getLatitude() + ", " + location.getLongitude(), Toast.LENGTH_SHORT).show();
}
else if (location == null && locationEnabled) {
    locationClient.requestLocationUpdates(locationRequest, this);
}

হালনাগাদ

দস্তাবেজ আপডেট হয়েছে, অবস্থানক্লিয়েন্ট সরানো হয়েছে এবং এপিআই ডায়ালগ থেকে এক ক্লিকে জিপিএস সক্ষম করতে সহায়তা করে:

task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() {
@Override
public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
    // All location settings are satisfied. The client can initialize
    // location requests here.
    // ...
}
});

task.addOnFailureListener(this, new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
        if (e instanceof ResolvableApiException) {
            // Location settings are not satisfied, but this can be fixed
            // by showing the user a dialog.
            try {
                // Show the dialog by calling startResolutionForResult(),
                // and check the result in onActivityResult().
                ResolvableApiException resolvable = (ResolvableApiException) e;
                resolvable.startResolutionForResult(MainActivity.this,
                        REQUEST_CHECK_SETTINGS);
            } catch (IntentSender.SendIntentException sendEx) {
                // Ignore the error.
            }
        }
    }
});

লিঙ্ক https://developer.android.com/training/location/change-location-settings#prompt

নতুন অবস্থানের ক্লায়েন্ট: ফিউজড লোকেশনপ্রভাইডারক্লায়েন্ট

  private FusedLocationProviderClient fusedLocationClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
}

যেকোন অবস্থানের কাজ করার আগে https://developer.android.com/training/location এ যাওয়ার পরামর্শ দেওয়া হয় ।


9
SettingsApi.checkLocationSettings()ব্যবহারকারী লোকেশন সার্ভিসেস সক্ষম করেছে কিনা তা পরীক্ষা করতে আপনি এখানে ব্যবহার করতে পারেন (এখানে দেখুন: developers.google.com/android/references/com/google/android/gms/… )।
কওলিক

3
অবস্থানক্লিয়েন্টের আর অস্তিত্ব নেই। অবস্থান সম্পর্কিত একটি আপডেট ও স্পষ্ট গাইডের জন্য, দয়া করে এই নিবন্ধটি দেখুন: ব্লগ.টামট্রিহাউস.com
beginners-


2
আপনি একটি জিও-বেড়া ব্যবহার করে তৈরি করতে পারেন LocationManager! ফিউজড লোকেশন এপিআই কি এমন ডিভাইসে কাজ করে যাগুলিতে গুগল প্লে পরিষেবা নেই?
মুহাম্মদ বাবর

জিপিএস সক্ষম / অক্ষম স্থিতি পরীক্ষা করার এটি আরও ভাল উপায় হতে পারে fun isLocationEnabled(context: Context): Boolean { val locationMode: Int try { locationMode = Settings.Secure.getInt( context.contentResolver, Settings.Secure.LOCATION_MODE ) } catch (e: SettingNotFoundException) { e.printStackTrace() return false } return locationMode != Settings.Secure.LOCATION_MODE_OFF }
ওয়াহিব উল হক

32

আমার অভিজ্ঞতার সাথে, "আরও উপযুক্ত যথাযথতা" কোনওভাবেই আরও ভাল বোঝায় না। আমি যদি কিছু মিস করছি না, যদি আপনি জিপিএস ব্যবহার করা হয় তা নিশ্চিত করতে চান, লোকেশনম্যানেজার হ'ল একমাত্র উপায়। আমরা আমাদের অ্যাপ্লিকেশন সহ যানবাহনগুলি ট্র্যাক করি এবং আবারও, যতক্ষণ না আমি কিছু মিস করি, গুগল প্লে পরিষেবাগুলি বেশ কয়েকটি প্রায়শই বেশ কিছু ভুল জায়গা সরবরাহ করে।


2
হ্যাঁ, আমার অভিজ্ঞতা থেকে গুগল প্লে পরিষেবাগুলি কিছু সময় ভুল অবস্থান দেয়।
ভিওয়াই

2
হ্যাঁ, গুগল প্লে পরিষেবাদি লোকেশন সার্ভিসেস এপিআই খুব বিভ্রান্তিকর অবস্থানের তথ্য দিতে পারে। ওয়াইফাই মডেমগুলি সরানো হয়, ওয়াইফাই মডেমগুলি ভুল অবস্থানের তথ্যের সাথে আপডেট হয় (যেমন যদি কোনও ওয়াইফাই মডেমের অবস্থান আপডেট করে এমন কোনও অ্যান্ড্রয়েড ডিভাইস দ্বারা অবস্থানটি স্পোফ করা হয়) এবং অন্যান্য পরিস্থিতিতে এমন অনেক পরিস্থিতি রয়েছে যার ফলস্বরূপ ওয়াইফাই মডেম ট্রাইঙ্গুলেশন থেকে ভুল অবস্থানের ডেটা হতে পারে। আমাদের সমস্ত অ্যাপগুলিতে যেখানে সুনির্দিষ্ট অবস্থান বাধ্যতামূলক, আমরা কেবল জিপিএস ব্যবহার করি।
ব্যবহারকারী1608385

27

আপনার লোকেশন ম্যানেজারের পরিবর্তে গুগল প্লে পরিষেবাগুলির অবস্থান এপিআই ব্যবহার করা উচিত। ডক্স অনুসারে:

গুগল প্লে পরিষেবাগুলির অবস্থান অ্যাপ্লিকেশনগুলিকে আপনার অ্যাপ্লিকেশনটিতে অবস্থান সচেতনতা যুক্ত করার উপায় হিসাবে অ্যান্ড্রয়েড কাঠামোর অবস্থান APIs (android.location) এর চেয়ে বেশি পছন্দ করা হয়। আপনি যদি বর্তমানে অ্যান্ড্রয়েড ফ্রেমওয়ার্ক লোকেশন এপিআই ব্যবহার করছেন তবে আপনাকে যত তাড়াতাড়ি সম্ভব গুগল প্লে পরিষেবাগুলির অবস্থানের API এ স্যুইচ করতে উত্সাহিত করা হবে।

কেন স্যুইচ করবেন, গুগল এটি বলে:

গুগল প্লে পরিষেবাদির অংশ গুগল লোকেশন সার্ভিসেস এপিআই আরও শক্তিশালী, উচ্চ-স্তরের কাঠামো সরবরাহ করে যা স্বয়ংক্রিয়ভাবে অবস্থান সরবরাহকারী, ব্যবহারকারী আন্দোলন এবং অবস্থানের নির্ভুলতা পরিচালনা করে। আপনার সরবরাহিত বিদ্যুৎ খরচ প্যারামিটারের উপর ভিত্তি করে এটি অবস্থান আপডেটের শিডিয়ুলিংও পরিচালনা করে। বেশিরভাগ ক্ষেত্রে, আপনি অবস্থান পরিষেবাদি এপিআই ব্যবহার করে আরও ভাল ব্যাটারি পারফরম্যান্সের পাশাপাশি আরও উপযুক্ত যথাযথতা পাবেন।


2
এই উদ্ধৃতিগুলি থেকে যে দস্তাবেজগুলির লিঙ্কগুলি রয়েছে সেগুলি কি আপনার রয়েছে? গুগল এখন অন্য কিছু বলছে কিনা তা দেখতে আকর্ষণীয় হবে।
এডওয়ার্ড ব্রে

3
অবশ্যই তারা এটি বলে, কারণ তারা আপনার অবস্থানের ডেটা চায়!
ফ্লাইভিউ 17'19

আপনি যখন আপনার অ্যাপ্লিকেশনে গুগল প্লে পরিষেবাদি যুক্ত করেন, কোনও ব্যবহারকারী যদি আপনার অ্যাপ্লিকেশন ইনস্টল করে, তখন তাকে আপনার অ্যাপ্লিকেশনটি ব্যবহার করার জন্য গুগল প্লে পরিষেবাদি "আপডেট" করতে অনুরোধ করা হবে। যদি তার ফোনটি প্রায় পূর্ণ হয়ে থাকে (হোয়াটসঅ্যাপের মেমস এবং স্টাফ সহ) বা ব্যবহারকারীর কাছে ডেটা না থাকে তবে দুঃখিত বন্ধু আমার জন্য আপনারা
ডাঃ দেও

2
@ ফ্লাইভিউ ইয়েপ! হ্যাঁ, তারা যেভাবে এটি শব্দটি শোনায় এটি একটি যাদুর সমাধান বলে মনে হচ্ছে! সর্বাধিক অসুবিধাটি হ'ল আপনার ডিভাইসে গুগল প্লে পরিষেবা প্রয়োজন !!!
বরুণ

25

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

বাস্তব জীবনে আমার বেশ কয়েকটি ফ্রিক মানগুলি পপ আপ হয়েছে, আসল অবস্থান থেকে 10 কিলোমিটার দূরে। কেবলমাত্র ব্যাখ্যাটি হ'ল এই পাগল অবস্থানগুলি গুগলস ওয়াই-ফাই বা এনডাব্লু কে ডাটাবেসের ত্রুটিগুলি থেকে শুরু করে - যে ত্রুটিগুলি সর্বদা সেখানে থাকবে, যেহেতু ওয়াই-ফাই এবং নেটওয়ার্ক টপোলজিস প্রতিদিন পরিবর্তন হয়। তবে দুর্ভাগ্যক্রমে (এবং আশ্চর্যরূপে) API আপনাকে পৃথক অবস্থান কীভাবে প্রাপ্ত হয়েছিল সে সম্পর্কে কোনও তথ্য দেয় না।

এখানে চিত্র বর্ণনা লিখুন

এটি আপনাকে গতি, ত্বরণ, ভারবহন ইত্যাদির উপর নির্ভরযোগ্যতা যাচাইয়ের উপর ভিত্তি করে ফ্রিক মানগুলিকে ফিল্টার করতে সমস্যা দেখা দেয় leaves

... বা ভাল পুরানো ফ্রেমওয়ার্ক এপিআইতে ফিরে যান এবং কেবল জিপিএস ব্যবহার করুন, যা গুগল ফিউজড এপিআই উন্নত না করা পর্যন্ত আমি যা করার সিদ্ধান্ত নিয়েছিলাম।


7

গুগল প্লে পরিষেবাদির অংশ গুগল লোকেশন সার্ভিসেস এপিআই আরও শক্তিশালী, উচ্চ-স্তরের কাঠামো সরবরাহ করে যা স্বয়ংক্রিয়ভাবে অবস্থান সরবরাহকারী , ব্যবহারকারী আন্দোলন এবং অবস্থানের নির্ভুলতা পরিচালনা করে । এটি আপনার সরবরাহিত বিদ্যুৎ খরচ প্যারামিটারের উপর ভিত্তি করে অবস্থান আপডেটের শিডিয়ুলিং পরিচালনা করে। বেশিরভাগ ক্ষেত্রে, আপনিঅবস্থান পরিষেবাদি এপিআই ব্যবহার করে আরও ভাল ব্যাটারি পারফরম্যান্সের পাশাপাশি আরও উপযুক্ত যথাযথতা পাবেন।

গুগল প্লে সার্ভিস লোকেশন এপিআই এবং অ্যান্ড্রয়েড ফ্রেমওয়ার্ক লোকেশন এপিআই দুটি অ্যাপসের মধ্যে আরও বিস্তারিত পার্থক্য এখানে পাওয়া যাবে


আমি আপনার উত্তরটি আমার নিজের প্রশ্নের উত্তর দিতে ব্যবহার করেছি যদি তা ঠিক থাকে। অনেক ধন্যবাদ! stackoverflow.com/questions/39852955/...
Leniaal

@ লেনিয়াল তাই আপনি কি মনে করেন না যে আমার উত্তরটি উত্তরের দাবিদার?
ধ্রুবম গুপ্ত

এটি একটি তিন বছরের পুরানো নথি। তবে এখানে এখানে একটি প্লাস 1
ড্র হয়েছে

5

হ্যাঁ, গুগল প্লে পরিষেবাদি লোকেশন সার্ভিসেস এপিআই খুব বিভ্রান্তিকর অবস্থানের তথ্য দিতে পারে। ওয়াইফাই মডেমগুলি সরানো হয়, ওয়াইফাই মডেমগুলি ভুল অবস্থানের তথ্যের সাথে আপডেট হয় (যেমন যদি কোনও ওয়াইফাই মডেমের অবস্থান আপডেট করে এমন কোনও অ্যান্ড্রয়েড ডিভাইস দ্বারা অবস্থানটি স্পোফ করা হয়) এবং অন্যান্য পরিস্থিতিতে এমন অনেক পরিস্থিতি রয়েছে যার ফলস্বরূপ ওয়াইফাই মডেম ট্রাইঙ্গুলেশন থেকে ভুল অবস্থানের ডেটা হতে পারে। আমাদের সমস্ত অ্যাপগুলিতে যেখানে সুনির্দিষ্ট অবস্থান বাধ্যতামূলক, আমরা কেবল জিপিএস ব্যবহার করি।


4

জিপিএস পরিষেবাদির উপর ভিত্তি করে গুগল প্লে সার্ভিস লোকেশন এপিআই এবং অ্যান্ড্রয়েড ফ্রেমওয়ার্ক অবস্থান এপিআই দুটি অ্যাপের মধ্যে পার্থক্য রয়েছে

FusedLocationProviderClient

  1. 1 ম আনার জন্য, অবস্থানটি অবশ্যই শূন্য হওয়া উচিত নয় (অর্থাত: অন্য কোনও অ্যাপ্লিকেশনটিকে গুগলপ্লে সার্ভিস ডাটাবেসে সর্বশেষ জ্ঞাত অবস্থান আপডেট করতে হবে it এটি যদি শূন্য হয়, তবে চারপাশে কাজ করা দরকার)
  2. পরবর্তী ক্রমিক ক্রমের জন্য, এটি requestLocationUpdates()স্থানটি আনতে পদ্ধতি ব্যবহার করে ।
  3. অবস্থান আনয়নটি শুধুমাত্র ব্যবহারকারী অবস্থান পরিবর্তনের উপর ভিত্তি করে নয় locationRequest.setInterval(milliseconds)এবং এর setFastestInterval(milliseconds)উপর ভিত্তি করে
  4. প্রত্যাবর্তিত ল্যাটল্যাং মানটি কেবলমাত্র 7 দশমিক মান (যেমন: 11.9557996, 79.8234599) রয়েছে, সঠিক হিসাবে নয়
  5. প্রস্তাবিত, যখন আপনার অ্যাপ্লিকেশন প্রয়োজনীয়তা বর্তমান অবস্থানের দূরত্বের তুলনায় নগন্য (50 - 100 মিটার নির্ভুলতা) নেয়
  6. ব্যাটারি ব্যবহারে কার্যকর।

লোকেশনম্যানেজার এপি

  1. ব্যবহারকারীর অবস্থান আনতে লোকেশন ম্যানেজ.আরএফয়েস্টলোকেশনআপডেটস () ব্যবহার করে অনুরোধ করা হয়েছে
  2. ব্যবহারকারীর অবস্থান পরিবর্তন এবং সময়ের ব্যবধানের ভিত্তিতে লোকেশনটি আনতে হবে locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, milliseconds, mindistance, Mylocationlistener)

  3. প্রত্যাবর্তিত ল্যাটল্যাং মানটিতে 14 দশমিক মান রয়েছে (যেমন: 11.94574594963342 79.81166719458997) সঠিক অবস্থানের মান

  4. অবস্থান ভিত্তিক অ্যাপের জন্য প্রস্তাবিত , যখন মিটারেও আরও নির্ভুলতার প্রয়োজন।
  5. ব্যাটারির ব্যবহার আনার ব্যবধান এবং আনার দূরত্বের ভিত্তিতে

Hey! 1 সর্বাধিক 111_111 মিটার (20_000_000 / 180)। সুতরাং, 0.0000001 ° 0.011 মি = 1 সেমি। আপনার আরও ভাল জিপিএস রেজোলিউশন কোথায় দরকার তা আমি জানি না। এবং আমি জানি না, কীভাবে আপনি আরও ভাল জিপিএস রেজোলিউশন অর্জন করতে পারেন।
বাবা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.