You are here Android > 开发者 > 开发讨论 > 关于如何获取gps星历数据的办法

机器人


93.089%

disconnected
登录后回复主题 | 跳到回复

关于如何获取gps星历数据的办法

... by 机器人 ... 29 月 9 天前 ... 1095 次点击

关于如何获取gps星历数据的办法,首先要定义一个gpsstatalistener,加入到loactionlistener中间去,然后启动监听,代码如下:


public class GpsStatusLisnter implements Listener {

? ? ? ? @Override
? ? ? ? public void onGpsStatusChanged(int event) {
? ? ? ? ? ? ? ? // TODO Auto-generated method stub
? ? ? ? ? ? ? ? switch ( event)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? case GpsStatus.GPS_EVENT_STARTED:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case GpsStatus.GPS_EVENT_FIRST_FIX:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case GpsStatus.GPS_EVENT_STOPPED :
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? }
}



package com.android.Navi;

import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import android.content.Context;
import android.location.GpsSatellite;
import android.location.GpsStatus;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.util.Log;

public class LocationHandler implements LocationListener {

? ? ? ?
? ? ? ? private final String GPS_TAG = "Gps tag111111111111111-------------";
? ? ? ? public final static long INTERVAl_TIME = 500;
? ? ? ? public final static float INTERVAl_DIS = 0f;
? ? ? ?

? ? ? ? private LocationManager locManager;
? ? ? ? private LocationProvider locProvider;
? ? ? ? private Context mContext = null;
? ? ? ? private boolean isActive = false;
? ? ? ? private int mGpsStaus;
? ? ? ? private GpsHandler mGpsHandler;
? ? ? ? private GpsStatus mGpsStatus;
? ? ? ? private GpsStruct gpsInfo = new GpsStruct();
? ? ? ? private Calendar c = Calendar.getInstance();
? ? ? ? private Iterable<GpsSatellite>??itGpsStatellites;
? ? ? ?
? ? ? ?
? ? ? ? //添加一个gpsstatuslistener
? ? ? ? private final GpsStatus.Listener gpsStatusListener = new GpsStatus.Listener(){
? ? ? ? ? ? ? ? public??void??onGpsStatusChanged (int event ) {
? ? ? ?? ?? ? ? ? ? ? ? ?? ?switch(event){
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ? case GpsStatus.GPS_EVENT_STARTED:
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ?? ? // mGpsStaus =0;
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ?? ???Log.e(GPS_TAG,String.valueOf(event)+"---GPS_EVENT_STARTED");
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ?
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ? case GpsStatus.GPS_EVENT_STOPPED:
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? //mGpsStaus =2;
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ? Log.e(GPS_TAG,String.valueOf(event)+"---GPS_EVENT_STOPPED");
? ? ? ? ? ? ? ?? ???? ? ? ? ? ? ? ? ? ? ? ?? ?break;
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ???case GpsStatus.GPS_EVENT_FIRST_FIX:
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ?? ? //??mGpsStaus =1;
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ? Log.e(GPS_TAG,String.valueOf(event)+"---GPS_EVENT_FIRST_FIX");
? ? ? ? ? ? ? ?? ???? ? ? ? ? ? ? ? ? ? ? ?? ?break;
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ? case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ? mGpsStatus = locManager.getGpsStatus(null);
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? itGpsStatellites = mGpsStatus.getSatellites();
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? Iterator it = itGpsStatellites.iterator();
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? int iPos = 0;
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? while(it.hasNext()){
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GpsSatellite gpsS = (GpsSatellite)it.next();
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? gpsInfo.iID[iPos] = gpsS.getPrn();
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? gpsInfo.iAzimuth[iPos] = (int)gpsS.getAzimuth();
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? gpsInfo.iElevation[iPos] =(int)gpsS.getElevation();
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? gpsInfo.iSN[iPos] = (int)gpsS.getSnr();
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? iPos++;
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? gpsInfo.iStateNum = iPos;
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ? ? ? ? ? mGpsHandler.setGpsInfo(gpsInfo);
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?//Log.e(GPS_TAG,String.valueOf(event)+"---GPS_EVENT_SATELLITE_STATUS");
? ? ? ? ? ? ? ?? ???? ? ? ? ? ? ? ? ? ? ? ?? ?break;
? ? ? ? ? ? ? ?? ?? ? ? ? ? ? ? ?? ?? ? ? ? default:
? ? ? ? ? ? ? ?? ???? ? ? ? ? ? ? ? ? ? ? ?? ?break;
? ? ? ?? ?? ? ? ? ? ? ? ?? ?}
??? ? ? ?? ?? ? ? ? }
? ? ? ? };
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ? public LocationHandler(Context contx,GpsHandler gpsHandler) {
? ? ? ? ? ? ? ? mContext = contx;? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? mGpsHandler = gpsHandler;
? ? ? ? }
? ? ? ?
? ? ? ? public void Init(){
? ? ? ? ? ? ? ? locManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
? ? ? ? ? ? ? ? List<String> pList = locManager.getProviders(true);
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? if(pList.size() > 0){
? ? ? ? ? ? ? ? ? ? ? ? for(int i =0;i< pList.size();i++){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(locManager.isProviderEnabled(pList.get(i))){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? locProvider = locManager.getProvider(pList.get(i));
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? locManager.requestLocationUpdates(locProvider.getName(), INTERVAl_TIME, INTERVAl_DIS, this);? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? locManager.addGpsStatusListener(gpsStatusListener);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? isActive = true;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else {
? ? ? ? ? ? ? ? ? ? ? ? isActive = false;
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ?
? ? ? ? }
? ? ? ?
? ? ? ? public float[] getLocation(){
? ? ? ? ? ? ? ? if(locManager.isProviderEnabled(locProvider.getName())){
? ? ? ? ? ? ? ? ? ? ? ? float[] loc = new float[2];
? ? ? ? ? ? ? ? ? ? ? ? Location l = locManager.getLastKnownLocation(locProvider.getName());
? ? ? ? ? ? ? ? ? ? ? ? if(l!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? loc[0] =??(float)l.getLongitude();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? loc[1] =??(float)l.getLatitude();
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? return loc;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return null;
? ? ? ? }
? ? ? ?
? ? ? ?
? ? ? ?
//? ? ? ? @Override
? ? ? ? public void onLocationChanged(Location location) {
? ? ? ? ? ? ? ? // TODO Auto-generated method stub
? ? ? ? ? ? ? ? if(location==null){
? ? ? ? ? ? ? ? ? ? ? ? return;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? Log.e(GPS_TAG,"------onLocationChanged");
? ? ? ? ? ? ? ? gpsInfo.iGpsStatus = mGpsStaus;
? ? ? ? ? ? ? ? gpsInfo.fAltitude = (float)location.getAltitude();
? ? ? ? ? ? ? ? gpsInfo.fLogitude = (float)location.getLongitude();
? ? ? ? ? ? ? ? gpsInfo.fLatitude = (float)location.getLatitude();
? ? ? ? ? ? ? ? gpsInfo.fDirection = (float)location.getBearing();
? ? ? ? ? ? ? ? gpsInfo.fSpeed = (float)(location.getSpeed()*3.6);
? ? ? ? ? ? ? ? if(location.getTime()>0){? ?? ?? ?? ?? ? ? ? ? ? ? ?? ?? ?? ?? ? ? ? ? ?? ?
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? c.setTimeInMillis(location.getTime());
? ? ? ? ? ? ? ? ? ? ? ? gpsInfo.iYear =c.get(Calendar.YEAR);
? ? ? ? ? ? ? ? ? ? ? ? gpsInfo.iMonth = (c.get(Calendar.MONTH))+1;
? ? ? ? ? ? ? ? ? ? ? ? gpsInfo.iDay = c.get(Calendar.DAY_OF_MONTH);
? ? ? ? ? ? ? ? ? ? ? ? gpsInfo.iHour =??c.get(Calendar.HOUR_OF_DAY);
? ? ? ? ? ? ? ? ? ? ? ? gpsInfo.iMinute = c.get(Calendar.MINUTE);
? ? ? ? ? ? ? ? ? ? ? ? gpsInfo.iSecond = c.get(Calendar.SECOND);
? ? ? ? ? ? ? ? ? ? ? ? Log.e(GPS_TAG,String.valueOf("Time:" + gpsInfo.iSecond));
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //
? ? ? ? ? ? ? ? mGpsHandler.setGpsInfo(gpsInfo);
? ? ? ? }

? ? ? ? //@Override
? ? ? ? public void onProviderDisabled(String provider) {
? ? ? ? ? ? ? ? // TODO Auto-generated method stub
? ? ? ? ? ? ? ? mGpsStaus = 2;
? ? ? ? ? ? ? ? Log.e(GPS_TAG,"---PROVIDER disabled");
? ? ? ? }

//? ? ? ? @Override
? ? ? ? public void onProviderEnabled(String provider) {
? ? ? ? ? ? ? ? // TODO Auto-generated method stub
? ? ? ? ? ? ? ? mGpsStaus = 1;
? ? ? ? ? ? ? ? Log.e(GPS_TAG,"---PROVIDER enabled");
? ? ? ? }

? ? ? ? //@Override
? ? ? ? public void onStatusChanged(String provider, int status, Bundle extras) {
? ? ? ? ? ? ? ? // TODO Auto-generated method stub
? ? ? ? ? ? ? ???switch(status){
? ? ? ? ? ? ? ? ? ? ? ? case 0: { //--OUT_OF_SERVICE-
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mGpsStaus =0;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Log.e(GPS_TAG,String.valueOf(status)+"---PROVIDER OUT_OF_SERVICE");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? case 1: {//--TEMPORARILY_UNAVAILABLE--
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mGpsStaus =2;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? gpsInfo = new GpsStruct();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? gpsInfo.iGpsStatus = mGpsStaus;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mGpsHandler.setGpsInfo(gpsInfo);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Log.e(GPS_TAG,String.valueOf(status)+"---PROVIDER TEMPORARILY_UNAVAILABLE");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? case 2: {//{--AVAILABLE--
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mGpsStaus =1;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Log.e(GPS_TAG,String.valueOf(status)+"---PROVIDER AVAILABLE");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? }

}

目前这个主题还没有回复,或许你可以帮楼主加盖一层?

在回复之前你需要先进行登录
电子邮件或昵称
密码
当前热门主题  有谁想学习利用ksoap2连接webService远程接口吗? ... 12 篇回复
© 2009 A Nanshapo Production   -   About
a site powered by Project Babel