На устройстве с поддержкой Android Cupcake (1.5), как я могу проверить и активировать GPS?
Как узнать, включен ли GPS-устройство Android?
Ответ 1
Лучший способ выглядит следующим образом:
 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();
}
Ответ 2
В android мы можем легко проверить, включен ли GPS в устройстве или нет с помощью LocationManager.
Вот простая программа для проверки.
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();
    }
}
Результат будет выглядеть как
 
 
Ответ 3
да Настройки 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
            }
        }
    }
Это один из способов сделать это, и я надеюсь, что это поможет. Дайте мне знать, если я делаю что-то неправильно.
Ответ 4
Вот шаги:
Шаг 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
Да, вы можете проверить ниже код:
public boolean isGPSEnabled (Context mContext){
    LocationManager locationManager = (LocationManager)
                mContext.getSystemService(Context.LOCATION_SERVICE);
    return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
Ответ 6
GPS будет использоваться, если пользователь разрешил использовать его в своих настройках.
Вы не можете явно переключать это, но вам не нужно - это настройка конфиденциальности, поэтому вы не хотите ее настраивать. Если пользователь в порядке с приложениями, получающими точные координаты, он будет включен. Тогда API-интерфейс менеджера местоположений будет использовать GPS, если это возможно.
Если ваше приложение действительно не полезно без GPS, и вы можете открыть приложение настроек на правом экране, используя намерение, чтобы пользователь мог его включить.
Ответ 7
В LocationListener, реализуйте обработчики событий onProviderEnabled и onProviderDisabled. Когда вы вызываете requestLocationUpdates(...), если GPS отключен на телефоне, будет вызван onProviderDisabled; если пользователь включит GPS, будет вызван onProviderEnabled.
Ответ 8
Этот фрагмент кода проверяет статус GPS
final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE );
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
    buildAlertMessageNoGps();
}
`
Ответ 9
Этот метод будет использовать сервис 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;
};
