您的位置:首页 > 移动开发 > Android开发

手机GPS定位

2017-10-22 20:18 155 查看
[html] view
plain copy

  

1.获取权限

[html] view
plain copy

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

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

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

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

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

2.主函数

[html] view
plain copy

public class MainActivity extends AppCompatActivity {  

    private LocationManager syst;  

<
1a68f
span style="margin:0px;padding:0px;border:none;color:#000000;background-color:inherit;">    private TextView tv;  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_main);  

        syst = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  

        tv = (TextView) findViewById(R.id.tv);  

        if (!syst.isProviderEnabled(LocationManager.GPS_PROVIDER)) {  

            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);  

            startActivityForResult(intent, 1);  

            return;  

        }  

//        String best = syst.getBestProvider(getcriteria(), true);  

        syst.addGpsStatusListener(gps);  

  

//        syst.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, lo);  

        syst.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, lo);  

    }  

    // 位置监听  

    LocationListener lo = new LocationListener() {  

        /**  

         * 位置信息变化时触发  

         */  

        @Override  

        public void onLocationChanged(Location location) {  

                    up(location);  

//            Log.d("aa", "时间:" + location.getTime());  

//            Log.d("aa", "经度:" + location.getLongitude());  

//            Log.d("aa", "纬度:" + location.getLatitude());  

//            Log.d("aa", "海拔:" + location.getAltitude());  

        }  

        /**  

         * GPS状态变化时触发  

         */  

        @Override  

        public void onStatusChanged(String s, int i, Bundle bundle) {  

  

        }  

        /**  

         * 位置信息变化时触发  

         */  

        @Override  

        public void onProviderEnabled(String s) {  

  

        }  

        /**  

         * GPS禁用时触发  

         */  

        @Override  

        public void onProviderDisabled(String s) {  

  

        }  

    };  

    // 状态监听  

   GpsStatus.Listener gps=new GpsStatus.Listener() {  

       @Override  

       public void onGpsStatusChanged(int i) {  

//           switch (i) {  

//               case GpsStatus.GPS_EVENT_FIRST_FIX:  

//                   Log.d("aa", "第一次定位");  

//                   break;  

//               case GpsStatus.GPS_EVENT_SATELLITE_STATUS:  

//                   Log.d("aa", "卫星状态改变");  

//                   // 获取当前状态  

//                   GpsStatus gpsStatus = syst.getGpsStatus(null);  

//                   // 获取卫星颗数的默认最大值  

//                   int maxSatellites = gpsStatus.getMaxSatellites();  

//                   // 创建一个迭代器保存所有卫星  

//                   Iterator<GpsSatellite> iters = gpsStatus.getSatellites()  

//                           .iterator();  

//                   int count = 0;  

//                   while (iters.hasNext() && count <= maxSatellites) {  

//                       GpsSatellite s = iters.next();  

//                       count++;  

//                   }  

//                   System.out.println("搜索到:" + count + "颗卫星");  

//                   break;  

//  

//               case GpsStatus.GPS_EVENT_STARTED:  

//                   Log.d("aa", "定位启动");  

//                   break;  

//               case GpsStatus.GPS_EVENT_STOPPED:  

//                   Log.d("aa", "定位停止");  

//                   break;  

//           }  

       }  

   };  

//    public Criteria getcriteria(){  

//        Criteria criteria = new Criteria();  

//        criteria.setAccuracy(Criteria.ACCURACY_FINE);  

//        return criteria;  

//    }  

    public void up(Location lo){  

  

        tv.setText(String.valueOf(lo.getLongitude()));  

//        tv.setText(String.valueOf(lo.getLatitude()));  

    }  

  

}  

3.主布局

[html] view
plain copy

<?xml version="1.0" encoding="utf-8"?>  

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"  

    android:layout_width="match_parent" android:layout_height="match_parent"  

    tools:context="com.example.myapplication.MainActivity"  

    android:orientation="vertical">  

  

    <TextView  

        android:id="@+id/tv"  

        android:layout_width="wrap_content"  

        android:layout_height="wrap_content"  

        android:text="Hello World!" />  

</LinearLayout>  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java android 高德地图