Android para obtener la latitud y longitud del teléfono

Crear mi aplicación

* Obtenga la instancia de LocationManager y pase el parámetro Context.LOCATION_SERVICE a través del método getSystemService.
* Obtenga proveedores de ubicación disponibles, hay tres tipos de GPS_PROVIDER, NETWORK_PROVIDER, PASSIVE_PROVIDER, los dos primeros son los más utilizados.
* Pase el proveedor de ubicación obtenido al método getManast GetLastKnownLocation para obtener información de ubicación.
Si la ubicación geográfica del dispositivo móvil continúa cambiando, la actualización en tiempo real requiere los siguientes pasos:
* Llame al método locationManager requestLocationUpdates, el primer parámetro es el proveedor de ubicación, el segundo parámetro es el intervalo de tiempo (ms) para monitorear el cambio de ubicación, el tercero Un parámetro es el intervalo de distancia (metros) para monitorear el cambio de ubicación, y el cuarto parámetro es el oyente LocationListener.
Cuando la ubicación cambia, se llama al método onLocationChanged del oyente.
* Para ahorrar energía y recursos, cuando el programa está cerrado, llame al método RemoveUpdates de LocationManager para eliminar el oyente.

Los pasos específicos son los siguientes

Abra el estudio de Android, seleccione [cerrar],
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Escriba los siguientes permisos en AndroidManfest.xml, preste atención a la aplicación.

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

3. Escriba el siguiente código en activity_main.xml en el diseño en res

<TextView
    android:id="@+id/positionView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />

Actividad principal:

paquete com.example.myapplication;

importar android.Manifest;
importar android.content.pm.PackageManager;
importar android.support.v4.app.ActivityCompat;
importar android.support.v7.app.AppCompatActivity;
importar android.os.Bundle;

importar android.app.Activity;
importar android.content.Context;
importar android.location.Location;
importar android.location.LocationListener;
importar android.location.LocationManager;
importar android.os.Bundle;
importar android.view.Menu;
importar android.widget.TextView;
importar android.widget.Toast;

import java.util.List;

clase pública MainActivity extiende la actividad {

private TextView postionView;

private LocationManager locationManager;
private String locationProvider;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //获取显示地理位置信息的TextView
    postionView = (TextView) findViewById(R.id.positionView);
    //获取地理位置管理器
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    //获取所有可用的位置提供器
    List<String> providers = locationManager.getProviders(true);
    if (providers.contains(LocationManager.GPS_PROVIDER)) {
        //如果是GPS
        locationProvider = LocationManager.GPS_PROVIDER;
    } else if (providers.contains(LocationManager.NETWORK_PROVIDER)) {
        //如果是Network
        locationProvider = LocationManager.NETWORK_PROVIDER;
    } else {
        Toast.makeText(this, "没有可用的位置提供器", Toast.LENGTH_SHORT).show();
        return;
    }
    //获取Location
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        // TODO: Consider calling
        //    ActivityCompat#requestPermissions
        // here to request the missing permissions, and then overriding
        //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
        //                                          int[] grantResults)
        // to handle the case where the user grants the permission. See the documentation
        // for ActivityCompat#requestPermissions for more details.
        return;
    }
    Location location = locationManager.getLastKnownLocation(locationProvider);
    if (location != null) {
        //不为空,显示地理位置经纬度
        showLocation(location);
    }
    //监视地理位置变化
    locationManager.requestLocationUpdates(locationProvider, 3000, 1, locationListener);

}

/**
 * 显示地理位置经度和纬度信息
 * @param location
 */
private void showLocation(Location location) {
    String locationStr = "纬度:" + location.getLatitude() + "\n"
            + "经度:" + location.getLongitude();
    postionView.setText(locationStr);
}

/**
 * LocationListern监听器
 * 参数:地理位置提供器、监听位置变化的时间间隔、位置变化的距离间隔、LocationListener监听器
 */

LocationListener locationListener = new LocationListener() {

    @Override
    public void onStatusChanged(String provider, int status, Bundle arg2) {

    }

    @Override
    public void onProviderEnabled(String provider) {

    }

    @Override
    public void onProviderDisabled(String provider) {

    }

    @Override
    public void onLocationChanged(Location location) {
        //如果位置发生变化,重新显示
        showLocation(location);

    }
};

@Override
protected void onDestroy() {
    super.onDestroy();
    if (locationManager != null) {
        //移除监听器
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return;
        }
        locationManager.removeUpdates(locationListener);
    }
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}
Lista de proyectos
Inserte la descripción de la imagen aquí

Resultado de la operación:

Inserte la descripción de la imagen aquí

Publicado 9 artículos originales · me gusta 0 · visitas 922

Supongo que te gusta

Origin blog.csdn.net/weixin_46146588/article/details/105568879
Recomendado
Clasificación