架设服务器平台,很简单;这里介绍一个 GPSBD卫星定位监控系统Simple版本的定位系统
他们系统是JAVA开发,首先服务器需要搭建JAVA环境,Mysql数据库,以及Reids缓存服务;
然后启动程序文件,一步一步操作即可;经过测试系统基本上市面上的各类GPS北斗定位设备都是支持的
在自己服务器搭建好GPS平台以后,就可以将设备的IP 端口配置到自己服务器对应的IP端口上,这样设备数据就会发往服务器,然后通过这套GPS定位系统就可以查看位置了
在配备Android系统的手机中,一般都配备了GPS设备。Android为我们获取GPS数据提供了很好的接口。本文来说一下如何使用Android获取GPS的经纬度。1 从Service继承一个类。
2 创建startService()方法。
3 创建endService()方法 重载onCreate方法和onDestroy方法,并在这两个方法里面来调用startService以及endService。
4 在startService中,通过getSystemService方法获取Context.LOCATION_SERVICE。
5 基于LocationListener实现一个新类。默认将重载四个方法onLocationChanged、onProviderDisabled、onProviderEnabled、onStatusChanged。对于onLocationChanged方法是我们更新最新的GPS数据的方法。一般我们的操作都只需要在这里进行处理。
6 调用LocationManager的requestLocationUpdates方法,来定期触发获取GPS数据即可。在onLocationChanged函数里面可以实现我们对得到的经纬度的最终操作。
7 最后在我们的Activity里面通过按钮来启动Service,停止Service。
示意代码如下:
package com.offbye.gpsservice
import android.app.Service
import android.content.Context
import android.content.Intent
import android.location.LocationListener
import android.location.LocationManager
import android.os.Binder
import android.os.IBinder
import android.util.Log
public class GPSService extends Service {
// 2000ms
private static final long minTime = 2000
// 最小变更距离10m
private static final float minDistance = 10
String tag = this.toString()
private LocationManager locationManager
private LocationListener locationListener
private final IBinder mBinder = new GPSServiceBinder()
public void startService() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE)
locationListener = new GPSServiceListener()
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance,
locationListener)
}
public void endService() {
if (locationManager != null &&locationListener != null) {
locationManager.removeUpdates(locationListener)
}
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return mBinder
}
@Override
public void onCreate() {
//
startService()
Log.v(tag, "GPSService Started.")
}
@Override
public void onDestroy() {
endService()
Log.v(tag, "GPSService Ended.")
}
public class GPSServiceBinder extends Binder {
GPSService getService() {
return GPSService.this
}
}
}
GPSServiceListener的实现
package com.offbye.gpsservice
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.GregorianCalendar
import java.util.TimeZone
import android.location.Location
import android.location.LocationListener
import android.location.LocationProvider
import android.os.Bundle
import android.util.Log
import android.widget.Toast
public class GPSServiceListener implements LocationListener {
private static final String tag = "GPSServiceListener"
private static final float minAccuracyMeters = 35
private static final String hostUrl = "http://doandroid.info/gpsservice/position.php?"
private static final String user = "huzhangyou"
private static final String pass = "123456"
private static final int duration = 10
private final DateFormat timestampFormat = new SimpleDateFormat("yyyyMMddHHmmss")
public int GPSCurrentStatus
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if (location != null) {
if (location.hasAccuracy() &&location.getAccuracy() <= minAccuracyMeters) {
// 获取时间参数,将时间一并Post到服务器端
GregorianCalendar greg = new GregorianCalendar()
TimeZone tz = greg.getTimeZone()
int ffset = tz.getOffset(System.currentTimeMillis())
greg.add(Calendar.SECOND, (offset / 1000) * -1)
StringBuffer strBuffer = new StringBuffer()
strBuffer.append(hostUrl)
strBuffer.append("user=")
strBuffer.append(user)
strBuffer.append("&pass=")
strBuffer.append(pass)
strBuffer.append("&Latitude=")
strBuffer.append(location.getLatitude())
strBuffer.append("&Longitude=")
strBuffer.append(location.getLongitude())
strBuffer.append("&Time=")
strBuffer.append(timestampFormat.format(greg.getTime()))
strBuffer.append("&Speed=")
strBuffer.append(location.hasSpeed())
doGet(strBuffer.toString())
Log.v(tag, strBuffer.toString())
}
}
}
// 将数据通过get的方式发送到服务器,服务器可以根据这个数据进行跟踪用户的行走状态
private void doGet(String string) {
// TODO Auto-generated method stub
//
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
GPSCurrentStatus = status
}
}
摘自 offbye的技术博客
你说的是行驶轨迹可以保存多久吗?那个不是存在gps设备里面的,是存在厂家服务器的,这个和硬盘容量有关,一般可以保存半年获得更好的精度,该已知点就是手机的位置。通过三颗已知位置的卫星和它们到手机的距离,通过对比星历文件与手机中的时间信息获
得时间差,一般会使用四颗以上的卫星进行平差解算,这个距离因为各种原因是带有误差的,但对于普通用户来说,导航电文中包含着卫星位置信息和时间信息,如果是测量型卫星接收机,则需要误差改正才能使用,当然,当然,用户导航信息接收模块接收到导航卫星信号后进行跟踪解算,乘上电磁波速度即可以求出卫星到手机的距离,就可以求得一个已知点,这些误差是可以忍受的导航卫星信号通过广播导航电文的形式发送
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)