服务器如何接收GPS定位器发送过来的数据

服务器如何接收GPS定位器发送过来的数据,第1张

架设服务器平台,很简单;这里介绍一个 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设备里面的,是存在厂家服务器的,这个和硬盘容量有关,一般可以保存半年获得更好的精度,该已知点就是手机的位置。通过三颗已知位置的卫星和它们到手机的距离,通过对比星历文件与手机中的时间信息获

得时间差,一般会使用四颗以上的卫星进行平差解算,这个距离因为各种原因是带有误差的,但对于普通用户来说,导航电文中包含着卫星位置信息和时间信息,如果是测量型卫星接收机,则需要误差改正才能使用,当然,当然,用户导航信息接收模块接收到导航卫星信号后进行跟踪解算,乘上电磁波速度即可以求出卫星到手机的距离,就可以求得一个已知点,这些误差是可以忍受的导航卫星信号通过广播导航电文的形式发送


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/686037.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-31
下一篇2023-07-31

发表评论

登录后才能评论

评论列表(0条)

    保存