অ্যান্ড্রয়েড ডিভাইসের জিপিএস সক্ষম করা আছে কিনা তা আমি কীভাবে জানতে পারি


উত্তর:


456

সেরা উপায় নিম্নলিখিত বলে মনে হচ্ছে:

 final LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );

    if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
        buildAlertMessageNoGps();
    }

  private void buildAlertMessageNoGps() {
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Your GPS seems to be disabled, do you want to enable it?")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
               public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                   startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
               }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                    dialog.cancel();
               }
           });
    final AlertDialog alert = builder.create();
    alert.show();
}

1
মূলত এটি জিপিএস কনফিগারেশন দেখার উদ্দেশ্যে লক্ষ্যবস্তু সম্পর্কে আলোচনা করার জন্য , github.com/marcust/HHPT/blob/master/src/org/thiesen/hhpt/ui/… দেখুন।
মার্কাস

3
কোডটির দুর্দান্ত স্নিপেট। আমি @ সাপ্রেস ওয়ার্নিংস সরিয়েছি এবং কোনও সতর্কতা পাচ্ছি না ... সম্ভবত এগুলি অপ্রয়োজনীয়?
স্প্যান করুন

30
আমি alertপুরো ক্রিয়াকলাপের জন্য ঘোষণা করার পরামর্শ দেব যাতে আপনি এটি মেমরির ফাঁস এড়াতে অনডেট্রয়ে এটিকে বরখাস্ত করতে পারেন ( if(alert != null) { alert.dismiss(); })
ক্যামেরন

তাহলে আমি যদি ব্যাটারি সেভিং এ থাকি তবে কি এটি এখনও কাজ করবে?
প্রখর মোহন শ্রীবাস্তব

3
@ প্রচারমোহনশ্রীবাস্তব যদি আপনার অবস্থানের সেটিংস পাওয়ার-সেভিংয়ে থাকে তবে এটি মিথ্যা LocationManager.NETWORK_PROVIDERহবে , তবে সত্যই ফিরে আসবে
টিম

129

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

এখানে যাচাই করার জন্য একটি সহজ প্রোগ্রাম।

জিপিএস সক্ষম বা না: - অবস্থান অ্যাক্সেস করতে AndroidManifest.xML এ নীচের ব্যবহারকারীর অনুমতি লাইন যুক্ত করুন

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

আপনার জাভা ক্লাস ফাইল হওয়া উচিত

public class ExampleApp extends Activity {
    /** Called when the activity is first created. */
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
            Toast.makeText(this, "GPS is Enabled in your devide", Toast.LENGTH_SHORT).show();
        }else{
            showGPSDisabledAlertToUser();
        }
    }

    private void showGPSDisabledAlertToUser(){
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setMessage("GPS is disabled in your device. Would you like to enable it?")
        .setCancelable(false)
        .setPositiveButton("Goto Settings Page To Enable GPS",
                new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int id){
                Intent callGPSSettingIntent = new Intent(
                        android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                startActivity(callGPSSettingIntent);
            }
        });
        alertDialogBuilder.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int id){
                dialog.cancel();
            }
        });
        AlertDialog alert = alertDialogBuilder.create();
        alert.show();
    }
}

আউটপুট মত দেখাচ্ছে

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

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


1
আমি যখন আপনার ফাংশনটি চেষ্টা করি তখন কিছুই হয় না। আমি এটি পরীক্ষা করার সময় কোনও ত্রুটি পাই নি।
এরিক

আমি এটা কাজ পেয়েছিলাম! :) অনেক ধন্যবাদ তবে আপনি নিজের উত্তর সম্পাদনা না করা পর্যন্ত আমি ভোট দিতে পারব না: /
এরিক

3
সমস্যা নেই @ এরিক এডগ্রেন আপনি সমাধান পান তাই খুব খুশি এনজয় করুন ... !!

@ ব্যবহারকারী 647826: দুর্দান্ত! সুন্দরভাবে কাজ করে। আপনি আমার রাত বাঁচিয়েছেন
অ্যাডি 21

1
এক টুকরো পরামর্শ: alertপুরো ক্রিয়াকলাপের জন্য ঘোষণা করুন যাতে onDestroy()মেমরি ফাঁস ( if(alert != null) { alert.dismiss(); })) এড়াতে আপনি এটিকে বরখাস্ত করতে পারেন
নেক্সা

38

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

অবস্থান সরবরাহকারী উপলব্ধ কিনা তা পরীক্ষা করে দেখুন

    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
    if(provider != null){
        Log.v(TAG, " Location providers: "+provider);
        //Start searching for location and update the location text when update available
        startFetchingLocation();
    }else{
        // Notify users and show settings if they want to enable GPS
    }

যদি ব্যবহারকারী জিপিএস সক্ষম করতে চান আপনি এইভাবে সেটিংসের স্ক্রিনটি প্রদর্শন করতে পারেন।

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, REQUEST_CODE);

এবং আপনার অনঅ্যাক্টিভিটি রেজাল্টে আপনি দেখতে পাবেন যে ব্যবহারকারী এটি সক্ষম করেছে কিনা

    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if(requestCode == REQUEST_CODE && resultCode == 0){
            String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
            if(provider != null){
                Log.v(TAG, " Location providers: "+provider);
                //Start searching for location and update the location text when update available. 
// Do whatever you want
                startFetchingLocation();
            }else{
                //Users did not switch on the GPS
            }
        }
    }

এটি করার একটি উপায় রয়েছে এবং আমি আশা করি এটি সাহায্য করবে। আমি কোনও ভুল করছি কিনা তা আমাকে জানান।


2
হাই, আমারও একই সমস্যা ... আপনি কি সংক্ষেপে ব্যাখ্যা করতে পারবেন, "REQUEST_CODE" কী এবং এর জন্য কী?
poeschlorn

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

2
providerএকটি খালি স্ট্রিং হতে পারে। আমাকে চেকটি পরিবর্তন করতে হয়েছিল(provider != null && !provider.isEmpty())
পাওয়ান

সরবরাহকারী হিসাবে "" হতে পারে, int মোড = সেটিংস ব্যবহার করার কথা বিবেচনা করুন ec যদি মোড = 0 জিপিএস বন্ধ থাকে
লেভন পেট্রোসায়ান

31

পদক্ষেপগুলি এখানে:

পদক্ষেপ 1: পটভূমিতে চলমান পরিষেবাগুলি তৈরি করুন।

পদক্ষেপ 2: আপনারও ম্যানিফেস্ট ফাইলে নিম্নলিখিত অনুমতি প্রয়োজন:

android.permission.ACCESS_FINE_LOCATION

পদক্ষেপ 3: কোড লিখুন:

 final LocationManager manager = (LocationManager)context.getSystemService    (Context.LOCATION_SERVICE );

if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) )
  Toast.makeText(context, "GPS is disabled!", Toast.LENGTH_LONG).show(); 
else
  Toast.makeText(context, "GPS is enabled!", Toast.LENGTH_LONG).show();

পদক্ষেপ 4: বা কেবল আপনি ব্যবহার করে পরীক্ষা করতে পারেন:

LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE );
boolean statusOfGPS = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);

পদক্ষেপ 5: সংযোগ নিরীক্ষণ করতে আপনার পরিষেবা অবিচ্ছিন্নভাবে চালান।


5
এটি জানায় যে জিপিএস বন্ধ থাকলেও সক্ষম করা হয় enabled
ইভান ভি

15

হ্যাঁ আপনি নীচের কোডটি যাচাই করতে পারেন:

public boolean isGPSEnabled (Context mContext){
    LocationManager locationManager = (LocationManager)
                mContext.getSystemService(Context.LOCATION_SERVICE);
    return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}

9

এই পদ্ধতিটি লোকেশনম্যানেজার পরিষেবাটি ব্যবহার করবে ।

উত্স লিঙ্ক

//Check GPS Status true/false
public static boolean checkGPSStatus(Context context){
    LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE );
    boolean statusOfGPS = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    return statusOfGPS;
};

6

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

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

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


6

এই টুকরো কোডটি জিপিএস স্থিতি পরীক্ষা করে

final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE );
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
    buildAlertMessageNoGps();
}

`


3

আপনার মধ্যে LocationListener, বাস্তবায়ন onProviderEnabledএবং onProviderDisabledইভেন্ট হ্যান্ডলার। আপনি যখন কল করবেন তখন requestLocationUpdates(...)ফোনে জিপিএস অক্ষম থাকলে, কল করা onProviderDisabledহবে; যদি ব্যবহারকারী জিপিএস সক্ষম করে, onProviderEnabledতাকে ডাকা হবে।


2
In Kotlin: - How to check GPS is enable or not

 val manager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
        if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            checkGPSEnable()

        } 


 private fun checkGPSEnable() {
        val dialogBuilder = AlertDialog.Builder(this)
        dialogBuilder.setMessage("Your GPS seems to be disabled, do you want to enable it?")
                .setCancelable(false)
                .setPositiveButton("Yes", DialogInterface.OnClickListener { dialog, id
                    ->
                    startActivity(Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS))
                })
                .setNegativeButton("No", DialogInterface.OnClickListener { dialog, id ->
                    dialog.cancel()
                })
        val alert = dialogBuilder.create()
        alert.show()
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.