0

GPS のチェックと位置情報サービスが有効または無効になっていると、デバイスがハングします。以下は、チェックに使用したコードです。

private void initGpsObserver(final Context context, final Class<?> caller) 
{
     if (null == locationSettingsObserver)
     {
    locationSettingsObserver = new ContentObserver(null) 
        {
            @Override
        public void onChange(boolean selfChange) 
            {
            final LocationManager manager = (LocationManager) context
            .getSystemService(Context.LOCATION_SERVICE);
        if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) 
                {
            isGpsDisabled = true;
            mHandler.sendEmptyMessage(0);
        }
                else 
                {
             if (alert.isShowing()) 
                     {
            alert.dismiss();
              }
              isGpsDisabled = false;
        }

        if (!manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) 
                {
            isLocationServicesDisabled = true;
            mHandler.sendEmptyMessage(0);
        }
                else 
                {
            if (alert.isShowing()) 
                        {
                alert.dismiss();
            }
            isLocationServicesDisabled = false;
        }
    }
};
        context.getApplicationContext()
        .getContentResolver()
        .registerContentObserver(
    Settings.Secure.getUriFor(Settings.Secure.LOCATION_PROVIDERS_ALLOWED),
        true, locationSettingsObserver);
    }
}

GPS_PROVIDER と NETWORK_PROVIDER の両方が同じクラスで使用されている場合、デバイスまたはエミュレーターがハングします。

4

1 に答える 1