小工具知识网

当前位置: 首页 > 行业知识 > Android : GPS定位 获取当前位置—简单应用

行业知识

Android : GPS定位 获取当前位置—简单应用

2026-11-08 12:36:26 来源:互联网转载

示例图:

MainActivity.java

package com.example.mygpsapp;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import androidx.core.content.ContextCompat;import android.Manifest;import android.content.pm.PackageManager;import android.location.Criteria;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import java.util.List;public class MainActivity extends AppCompatActivity {    private Button button, btnGetData;    //系统位置管理对象    private LocationManager locationManager;    private TextView textView;    private EditText editText;    private ListView listView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = findViewById(R.id.btn_get_provider);        textView = findViewById(R.id.tv_see);        listView = findViewById(R.id.list_view);        btnGetData = findViewById(R.id.btn_get_data);        editText = findViewById(R.id.et_content);        //1.获取系统 位置管理对象  LocationManager        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);        // 2. 获取所有设备名字        List providerName = locationManager.getAllProviders();        //2.1获取指定设备 gps//        LocationProvider gpsProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER);        //3 把数据放到listView 中显示        /**3个         * passive: 代码表示:LocationManager.PASSIVE_PROVIDER         * gps:  代码表示:LocationManager.GPS_PROVIDER         * network: 网络获取定位信息  LocationManager.NETWORK_PROVIDER         * */        ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.list_layout, providerName);        listView.setAdapter(arrayAdapter);        //从6.0系统开始,需要动态获取权限        int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 0);        }        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                // Criteria 过滤 找到 定位设备                //1.获取位置管理对象  LocationManager                LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);                //2. 创建 Criteria 过滤条件                Criteria criteria = new Criteria();                //要求设备是免费的                criteria.setCostAllowed(false);                // 要求能提供高精度信息                criteria.setAltitudeRequired(true);                // 要求能提供反方向信息                criteria.setBearingRequired(true);                //   设置精度               标准不限//                criteria.setAccuracy(Criteria.NO_REQUIREMENT);                // 设置功率要求  电量               标准不限//                criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);                //获取最佳提供商                List datas = locationManager.getAllProviders();                textView.setText(datas.toString());            }        });        //获取定位信息事件        btnGetData.setOnClickListener(new View.OnClickListener() {           @SuppressWarnings("all") //警告过滤            @Override            public void onClick(View v) {                try {                    //1.获取系统 位置管理对象  LocationManager                    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);                    //2.从GPS 获取最近定位信息                    //获取到位置相关信息                    Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);                    //把信息设置到文本框中                    updatView(location);                    //设置每3秒 获取一次Gps 定位信息                    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 8, new LocationListener() {                        @Override                        public void onLocationChanged(@NonNull Location location) {                            //当GPS 位置发生改变时 执行方法                            updatView(location);                        }                        @Override                        public void onProviderDisabled(@NonNull String provider) {                            //禁用时 执行方法                            updatView(null);                        }                        @Override                        public void onProviderEnabled(@NonNull String provider) {                            // 可以用时 执行方法                            updatView(locationManager.getLastKnownLocation(provider));                        }                    });                } catch (Throwable e) {                    e.printStackTrace();                }            }        });    }    //把信息设置到文本框中    public void updatView(Location location) {        if(location != null){            StringBuilder cont = new StringBuilder();            cont.append("实时定位信息:\n");            cont.append("经度:");            cont.append(location.getLongitude());            cont.append("\n纬度:");            cont.append(location.getLatitude());            cont.append("\n高度:");            cont.append(location.getAltitude());            cont.append("\n速度:");            cont.append(location.getSpeed());            cont.append("\n方向:");            cont.append(location.getBearing());            editText.setText(cont.toString());        }else {            editText.setText("没有开启定位信息!");        }    }    //请求权限结果//    ACCESS_FINE_LOCATION  访问精细定位//    ACCESS_COARSE_LOCATION 访问粗略定位    @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        super.onRequestPermissionsResult(requestCode, permissions, grantResults);        switch (requestCode) {            case 0:                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    Toast.makeText(MainActivity.this, "访问精细定位权限授权成功", Toast.LENGTH_SHORT).show();                    //从6.0系统开始,需要动态获取权限                    int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION);                    if (permissionCheck != PackageManager.PERMISSION_GRANTED) {                        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 1);                    }                }                break;            case 1:                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    Toast.makeText(MainActivity.this, "访问粗略定位权限授权成功", Toast.LENGTH_SHORT).show();                }                break;            default:                break;        }    }}

布局文件 activity_main.xml

                            

listView 布局文件 list_layout.xml

 

权限配置 AndroidManifest.xml

            

上一篇:放假通知怎么写App?

下一篇:幻塔私人服务器怎么进?