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