106 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| 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() {
 | |
|         }
 | |
|     }
 | |
| }
 |