GPS 学习

package com.sea.chapter8_1;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class GPSPractice extends Activity {

    private TextView mTextView;
    private LocationManager mLocationManager;
    private LocationProvider mLocationProvider;

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

        mTextView = (TextView) findViewById(R.id.gps_textview);
        mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        // 返回所有的location提供者的名字的list ,一般有gps,network可以作位置提供者
        List<String> list = mLocationManager.getAllProviders();
        StringBuffer buffer = new StringBuffer("定位提供者:\n");
        for (String li : list) {
            buffer.append("                 " + li + "\n");
        }
        mTextView.setText(buffer.toString());
        // 根据指定的名字返回一个locationProvider 作为内容提供者,具体怎样获得还是由mLocationManager设置
        mLocationProvider = mLocationManager
                .getProvider(LocationManager.GPS_PROVIDER); // 由gps做location提供者

        // //由系统决定获取位置的方式:gps和网络
        // // 创建一个criteria对象
        // Criteria criteria = new Criteria();
        // // 设置经纬度的精准度,可选参数有ACCURACY_FINE准确或ACCURACY_COARSE粗略
        // criteria.setAccuracy(Criteria.ACCURACY_FINE);
        // // 设置是否需要获取海拔数据
        // criteria.setAltitudeRequired(false);
        // // 设置是否需要获得方向信息
        // criteria.setBearingRequired(false);
        // // 设置是否允许定位过程中产生资费,比如流量等
        // criteria.setCostAllowed(true);

        // // 设置耗电量的级别
        // criteria.setPowerRequirement(Criteria.POWER_LOW);
        // // 返回满足给定的criteria(标准)的最佳provider
        // String provider = locationManager.getBestProvider(criteria, true);

        // mLocationProvider =
        // mLocationManager.getProvider(LocationManager.NETWORK_PROVIDER);
        // //由网络做location提供者
        // mLocationProvider =
        // mLocationManager.getProvider(LocationManager.PASSIVE_PROVIDER);
        // //与其他应用一起使用,其他应用做location提供者

        update();

        LocationListener mLocationListener = new LocationListener() {
            @Override
            public void onStatusChanged(String provider, int status,
                    Bundle extras) {
            }

            @Override
            public void onProviderEnabled(String provider) {
            }

            @Override
            public void onProviderDisabled(String provider) {
            }

            @Override
            public void onLocationChanged(Location location) {
                update();
                Toast.makeText(getApplicationContext(), " 位置信息已更新……", 3000)
                        .show();
            }
        };

        // 设置监听器,自动更新的最小时间为间隔N秒(1秒为1*1000,这样写主要为了方便)或最小位移变化超过N米
        mLocationManager.requestLocationUpdates(mLocationManager.GPS_PROVIDER,
                3 * 1000, 500, mLocationListener);
        Toast.makeText(getApplicationContext(), " ok", 3000).show();
    }

    protected void update() {
        // 这里还有一个类,判断最好的提供者

        // //上一次的位置信息
        // Location mLocation = new Location(mLocationProvider.getName()); //
        // 获取一个location对象// 接下来通过locationProvider获取location ,定位信息由location提供
        Location mLocation = mLocationManager
                .getLastKnownLocation(mLocationProvider.getName()); // 如果要不停地更新,需要使用这个方法,location由manager设置

        double altitude = mLocation.getAltitude(); // 定位信息的高度
        float bear = mLocation.getBearing(); // 获取定位信息的方向
        double latitude = mLocation.getLatitude(); // 获取定位信息的纬度信息
        double longitude = mLocation.getLongitude(); // 获取定位信息的经度信息
        String provider = mLocation.getProvider(); // 定位信息的提供者
        float speed = mLocation.getSpeed(); // 速度
        TextView show = (TextView) findViewById(R.id.gps_textview1);
        show.setText("高度:" + altitude + "\n方向:" + bear + "\n纬度:" + latitude
                + "\n经度:" + longitude + "\n提供者:" + provider + "\n速度:" + speed);
    }

}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值