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