尽快获得GPS

时间:2011-05-29 07:24:19

标签: android

目前我正在研究使用gps处理频率的项目:-)。我想尽快从GPS / Wifi获取GPS信息。我也希望尽可能以最高频率获得它。我的目标是从这些数据中弄清楚频率。目前我这样试试

final public void run() {
        Looper.prepare();
        while(gps){

            mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mLocationListener);
            mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener);




            try {
                Thread.sleep(100) ;
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            mLocationManager.removeUpdates(mLocationListener);

        }
        Looper.loop();
    }//run

有没有更好的方法来获得更快的“采样率”?

2 个答案:

答案 0 :(得分:0)

来自http://developer.android.com/guide/topics/location/obtaining-user-location.html

  

您可以使用第二个和第三个参数控制侦听器接收更新的频率 - 第二个是通知之间的最小时间间隔,第三个是通知之间距离的最小更改 - 将两个请求都设置为零尽可能频繁地发送位置通知

requestLocationUpdates为您提供所需内容。不确定你想用while循环做什么。

答案 1 :(得分:0)

每10分钟使用GPS进行长时间的拉动。

//  Des: Start Device's GPS and get current latitude and longitude
    public void GPS() throws IOException {

//  Des: This is a background service and called after every 10 minutes and fetch                    latitude-longitude values
     background = new Thread(new Runnable() {
        @Override
        public void run() {             
            for (int i = 0; i < j; i++) {
                if (ProjectStaticVariable.GPSExit == true ) {
                try {
                    Thread.sleep(600000);   //10 minutes
                    mainhandler.sendMessage(mainhandler.obtainMessage());
                    j++;
                }
                catch (Exception e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
                 }
               }
            }
         }
    });

    background.start();
    mainhandler = new Handler() {
        public void handleMessage(Message msg) {

   //   Check Internet status
            isInternetPresent = cd.isConnectingToInternet();
            if (isInternetPresent) {

                lat_long_Service_flag = true;                   
                mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                mlocListener = new MyLocationListener(getApplicationContext());
                mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 0,  mlocListener);

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

            }
        }
    };
}

  //   Des: Location Listener through which we get current latitude and longitude
public class MyLocationListener implements LocationListener {

    public MyLocationListener(Context mContext) {}

    public MyLocationListener(Runnable runnable) {}

    @Override
    public void onLocationChanged(Location loc) {

        longitude = loc.getLongitude();
        latitude = loc.getLatitude();
        final_latitude = Double.toString(latitude);
        final_longitude = Double.toString(longitude);

    }

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

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