ADD week 5
This commit is contained in:
		
							
								
								
									
										105
									
								
								02-Easy5/E5/sources/androidx/appcompat/app/TwilightManager.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								02-Easy5/E5/sources/androidx/appcompat/app/TwilightManager.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,105 @@ | ||||
| package androidx.appcompat.app; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.location.Location; | ||||
| import android.location.LocationManager; | ||||
| import android.util.Log; | ||||
| import androidx.core.content.PermissionChecker; | ||||
| import java.util.Calendar; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| class TwilightManager { | ||||
|     private static final int SUNRISE = 6; | ||||
|     private static final int SUNSET = 22; | ||||
|     private static final String TAG = "TwilightManager"; | ||||
|     private static TwilightManager sInstance; | ||||
|     private final Context mContext; | ||||
|     private final LocationManager mLocationManager; | ||||
|     private final TwilightState mTwilightState = new TwilightState(); | ||||
|  | ||||
|     static void setInstance(TwilightManager twilightManager) { | ||||
|         sInstance = twilightManager; | ||||
|     } | ||||
|  | ||||
|     static TwilightManager getInstance(Context context) { | ||||
|         if (sInstance == null) { | ||||
|             Context applicationContext = context.getApplicationContext(); | ||||
|             sInstance = new TwilightManager(applicationContext, (LocationManager) applicationContext.getSystemService("location")); | ||||
|         } | ||||
|         return sInstance; | ||||
|     } | ||||
|  | ||||
|     TwilightManager(Context context, LocationManager locationManager) { | ||||
|         this.mContext = context; | ||||
|         this.mLocationManager = locationManager; | ||||
|     } | ||||
|  | ||||
|     boolean isNight() { | ||||
|         TwilightState twilightState = this.mTwilightState; | ||||
|         if (isStateValid()) { | ||||
|             return twilightState.isNight; | ||||
|         } | ||||
|         Location lastKnownLocation = getLastKnownLocation(); | ||||
|         if (lastKnownLocation != null) { | ||||
|             updateState(lastKnownLocation); | ||||
|             return twilightState.isNight; | ||||
|         } | ||||
|         Log.i(TAG, "Could not get last known location. This is probably because the app does not have any location permissions. Falling back to hardcoded sunrise/sunset values."); | ||||
|         int i = Calendar.getInstance().get(11); | ||||
|         return i < 6 || i >= 22; | ||||
|     } | ||||
|  | ||||
|     private Location getLastKnownLocation() { | ||||
|         Location lastKnownLocationForProvider = PermissionChecker.checkSelfPermission(this.mContext, "android.permission.ACCESS_COARSE_LOCATION") == 0 ? getLastKnownLocationForProvider("network") : null; | ||||
|         Location lastKnownLocationForProvider2 = PermissionChecker.checkSelfPermission(this.mContext, "android.permission.ACCESS_FINE_LOCATION") == 0 ? getLastKnownLocationForProvider("gps") : null; | ||||
|         return (lastKnownLocationForProvider2 == null || lastKnownLocationForProvider == null) ? lastKnownLocationForProvider2 != null ? lastKnownLocationForProvider2 : lastKnownLocationForProvider : lastKnownLocationForProvider2.getTime() > lastKnownLocationForProvider.getTime() ? lastKnownLocationForProvider2 : lastKnownLocationForProvider; | ||||
|     } | ||||
|  | ||||
|     private Location getLastKnownLocationForProvider(String str) { | ||||
|         try { | ||||
|             if (this.mLocationManager.isProviderEnabled(str)) { | ||||
|                 return this.mLocationManager.getLastKnownLocation(str); | ||||
|             } | ||||
|             return null; | ||||
|         } catch (Exception e) { | ||||
|             Log.d(TAG, "Failed to get last known location", e); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private boolean isStateValid() { | ||||
|         return this.mTwilightState.nextUpdate > System.currentTimeMillis(); | ||||
|     } | ||||
|  | ||||
|     private void updateState(Location location) { | ||||
|         long j; | ||||
|         TwilightState twilightState = this.mTwilightState; | ||||
|         long currentTimeMillis = System.currentTimeMillis(); | ||||
|         TwilightCalculator twilightCalculator = TwilightCalculator.getInstance(); | ||||
|         twilightCalculator.calculateTwilight(currentTimeMillis - 86400000, location.getLatitude(), location.getLongitude()); | ||||
|         twilightCalculator.calculateTwilight(currentTimeMillis, location.getLatitude(), location.getLongitude()); | ||||
|         boolean z = twilightCalculator.state == 1; | ||||
|         long j2 = twilightCalculator.sunrise; | ||||
|         long j3 = twilightCalculator.sunset; | ||||
|         twilightCalculator.calculateTwilight(currentTimeMillis + 86400000, location.getLatitude(), location.getLongitude()); | ||||
|         long j4 = twilightCalculator.sunrise; | ||||
|         if (j2 == -1 || j3 == -1) { | ||||
|             j = currentTimeMillis + 43200000; | ||||
|         } else { | ||||
|             if (currentTimeMillis <= j3) { | ||||
|                 j4 = currentTimeMillis > j2 ? j3 : j2; | ||||
|             } | ||||
|             j = j4 + 60000; | ||||
|         } | ||||
|         twilightState.isNight = z; | ||||
|         twilightState.nextUpdate = j; | ||||
|     } | ||||
|  | ||||
|     private static class TwilightState { | ||||
|         boolean isNight; | ||||
|         long nextUpdate; | ||||
|  | ||||
|         TwilightState() { | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user