dependencies { implementation 'com.google.android.gms:play-services-tasks:17.2.0' } import com.google.android.gms.tasks.OnSuccessListener; import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.TaskCompletionSource; import com.google.android.gms.tasks.Tasks; import android.app.Activity; import android.content.pm.PackageManager; import android.location.Location; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; public class MainActivity extends Activity { private static final int PERMISSION_REQUEST_CODE = 1; @Override protected void onStart() { super.onStart(); if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST_CODE); } else { getLocation(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == PERMISSION_REQUEST_CODE) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { getLocation(); } } } private void getLocation() { Task<Location> task = getLastKnownLocation(); task.addOnSuccessListener(new OnSuccessListener<Location>() { @Override public void onSuccess(Location location) { if (location != null) { double latitude = location.getLatitude(); double longitude = location.getLongitude(); } } }); } private Task<Location> getLastKnownLocation() { final TaskCompletionSource<Location> source = new TaskCompletionSource<>(); Task<Location> task = source.getTask(); // ... return task; } }


上一篇:
下一篇:
切换中文