1d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall/* 2d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * Copyright 2014 The Android Open Source Project 3d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * 4d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * Licensed under the Apache License, Version 2.0 (the "License"); 5d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * you may not use this file except in compliance with the License. 6d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * You may obtain a copy of the License at 7d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * 8d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * http://www.apache.org/licenses/LICENSE-2.0 9d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * 10d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * Unless required by applicable law or agreed to in writing, software 11d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * distributed under the License is distributed on an "AS IS" BASIS, 12d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * See the License for the specific language governing permissions and 14d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall * limitations under the License. 15d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall */ 16d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 17d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wallpackage com.example.android.powerprofile.gpson; 18d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 19d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wallimport android.app.Activity; 20d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wallimport android.content.Context; 21d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wallimport android.content.pm.PackageManager; 22d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wallimport android.location.Location; 23d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wallimport android.location.LocationManager; 24d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wallimport android.location.LocationListener; 25d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wallimport android.os.Bundle; 26d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wallimport android.support.v4.app.ActivityCompat; 27d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wallimport android.support.v4.content.ContextCompat; 28d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wallimport android.util.Log; 29d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 30d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wallpublic class GpsActivity extends Activity { 31d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 32d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall private static final int LOCATION_INTERVAL = 1000; 33d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall private static final float LOCATION_DISTANCE = 0f; 34d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall private static final int ACCESS_FINE_LOCATION_PERMISSION = 0; 35d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall private LocationManager mLocationManager; 36d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall private LocationListener mLocationListener; 37d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 38d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall protected void onCreate(Bundle savedInstanceState) { 39d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall super.onCreate(savedInstanceState); 40d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 41d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall int permissionsCheck = ContextCompat.checkSelfPermission(this, 42d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall android.Manifest.permission.ACCESS_FINE_LOCATION); 43d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 44d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall if (permissionsCheck != PackageManager.PERMISSION_GRANTED) { 45d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall ActivityCompat.requestPermissions(this, 46d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 47d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall ACCESS_FINE_LOCATION_PERMISSION); 48d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } 49d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } 50d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 51d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall @Override 52d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall public void onRequestPermissionsResult(int requestCode, String permissions[], 53d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall int[] grantResults) { 54d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall switch (requestCode) { 55d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall case ACCESS_FINE_LOCATION_PERMISSION: { 56d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall if (grantResults.length > 0 57d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 58d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 59d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall initLocation(); 60d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } 61d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall break; 62d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } 63d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } 64d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } 65d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 66d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall private void initLocation() { 67d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall mLocationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 68d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 69d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall mLocationListener = new LocationListener() { 70d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall public void onLocationChanged(Location location) {} 71d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 72d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall public void onStatusChanged(String provider, int status, Bundle extras) {} 73d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 74d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall public void onProviderEnabled(String provider) {} 75d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 76d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall public void onProviderDisabled(String provider) {} 77d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall }; 78d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } 79d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 80d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall @Override 81d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall protected void onResume() { 82d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall super.onResume(); 83d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 84d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall if (mLocationManager == null || mLocationListener == null) { 85d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall return; 86d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } 87d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 88d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall try { 89d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 90d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall LOCATION_INTERVAL, LOCATION_DISTANCE, mLocationListener); 91d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } catch (SecurityException e) { 92d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall e.printStackTrace(); 93d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } 94d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } 95d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 96d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall @Override 97d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall protected void onPause() { 98d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall super.onPause(); 99d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 100d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall if (mLocationManager == null || mLocationListener == null) { 101d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall return; 102d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } 103d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 104d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall mLocationManager.removeUpdates(mLocationListener); 105d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall } 106d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall 107d865193ea7d72873c5f147644179c4383aee5cf5Marissa Wall} 108