web-dev-qa-db-ja.com

AndroidデバイスのGPSが有効になっているかどうかを確認する方法

Android Cupcake(1.5)対応デバイスで、GPSを確認して有効にするにはどうすればよいですか?

195
Marcus

最善の方法は次のようです:

 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();
}
438
Marcus

Androidでは、LocationManagerを使用して、デバイスでGPSが有効になっているかどうかを簡単に確認できます。

チェックする簡単なプログラムを次に示します。

GPSを有効にするかどうか:-AndroidManifest.xmlに以下のユーザー許可行をアクセス場所に追加します

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

Javaクラスファイルは

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

出力は次のようになります

enter image description here

enter image description here

125
user647826

はいGPS設定はプライバシー設定であるため、プログラムで変更することはできません。GPS設定はプログラムからオンになっているかどうかを確認し、オンになっていない場合は処理する必要があります。 GPSがオフになっていることをユーザーに通知し、必要に応じてこのような方法でユーザーに設定画面を表示できます。

ロケーションプロバイダーが利用可能かどうかを確認します

    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
    }

ユーザーがGPSを有効にする場合は、この方法で設定画面を表示できます。

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

OnActivityResultで、ユーザーが有効にしたかどうかを確認できます

    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
            }
        }
    }

それがそれを行う一つの方法であり、それが役立つことを願っています。私が何か間違ったことをしているかどうかを教えてください。

36
achie

手順は次のとおりです。

ステップ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:接続を監視するためにサービスを継続的に実行します。

30
Rakesh

はい、以下のコードを確認できます:

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

ユーザーが設定でGPSの使用を許可している場合、GPSが使用されます。

これを明示的にオンにすることはできませんが、その必要はありません。これは本当にプライバシー設定なので、微調整する必要はありません。ユーザーがアプリで正確な座標を取得しても問題ない場合は、オンになります。次に、位置マネージャーAPIは、可能であればGPSを使用します。

アプリがGPSなしでは本当に役に立たず、オフになっている場合は、インテントを使用して右画面で設定アプリを開き、ユーザーが有効にできるようにします。

6
Mike Hearn

このメソッドは、LocationManagerサービスを使用します。

ソース リンク

//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;
};
3
Code Spy

LocationListenerで、onProviderEnabledおよびonProviderDisabledイベントハンドラーを実装します。 requestLocationUpdates(...)を呼び出すときに、電話でGPSが無効になっている場合、onProviderDisabledが呼び出されます。ユーザーがGPSを有効にすると、onProviderEnabledが呼び出されます。

3

このコードはGPSステータスをチェックします

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

`

3
kashifahmad