定时上报GPS坐标信息至服务器

2023-10-31

本文通过一个“定时上报GPS坐标信息至服务器”的例子来讲述Android网络应用程序的开发,使用最为流行的restfull接口。
第一步、定义网络接口

  • 客户端以post方式将经纬度上传至服务器

第二步、开发服务器端接口

  • submit-location.php提交当前的gps信息
  • get-location.php获取gps信息

第三步、Android客户端通过HttpClient组件见数据上传至服务器

第四步、最终效果演示
使用Google Map展示我的当前位置。
当我开启应用的时候,你可以从如下地图中看到我实时的当前位置。
该数据每10秒钟更新一次。

 

客户端代码

package com.marslei.gpsdemo;</code>

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

/**
* @author www.marslei.com
*
*/
public class GPSDemoActivity extends Activity implements LocationListener,
android.view.View.OnClickListener {
/** Called when the activity is first created. */
private Location location;
private Button start;
private Button stop;
private boolean isStop;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
start.setOnClickListener(this);
stop.setOnClickListener(this);
LocationManager locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0,
this);
}

public void onLocationChanged(Location location) {
this.location = location;
Log.d(this.getClass().getName(), this.location.toString());
if (!isStop) {
submitLocation(location);
}
}

public void onProviderDisabled(String provider) {

}

public void onProviderEnabled(String provider) {

}

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

}

public boolean submitLocation(Location location) {
HttpPost post = new HttpPost(getString(R.string.submit_location_url));
HttpClient client = new DefaultHttpClient();
List params = new ArrayList();
params.add(new BasicNameValuePair(“longitude”, location.getLongitude()
+ “”));
params.add(new BasicNameValuePair(“latitude”, location.getLatitude()
+ “”));
try {
post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse response = client.execute(post);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
InputStream inputStream = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
Log.d(this.getClass().getName(), line);
}
inputStream.close();
return true;
} else {
Log.d(this.getClass().getName(), “请求错误”);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}

public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
isStop = false;
break;
case R.id.stop:
isStop = true;
break;
default:
break;
}

}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

定时上报GPS坐标信息至服务器 的相关文章

随机推荐

  • 层层优化重复代码,我又搞了一个通用模板

    后端思维 最近工作中 我通过层层优化重复代码 最后抽出个通用模板 因此跟大家分享一下优化以及思考的过程 我会先造一个相似的例子 然后一步步带大家如何优化哈 看完一定会有帮助的 优化前的例子 第一步优化 抽取公用方法 第二步优化 反射对比字段
  • 除了李飞飞,那些影响 AI 技术发展的女性工程师

    自 1911 年以来 国际妇女节已经走过了一个多世纪 我们为一个更平等的世界努力过 并且仍将继续努力 近年来 随着数据科学和机器学习的迅猛发展 AI 从业者的需求激增 然而 人工智能领域女性从业者的数量远低于男性 根据 Wired 和 El
  • 〖Web全栈开发②〗—网络编程基础(下)

    Web全栈开发 网络编程基础 下 一 TCP 网络应用程序开发流程 1 TCP 网络应用程序开发流程的介绍 2 TCP 客户端程序开发流程的介绍 3 TCP 服务端程序开发流程的介绍 4 小结 二 socket之send和recv原理剖析
  • Java BIO API及代码测试

    文章目录 0 网络编程 1 JAVA最初的网络应用 BIO 1 1服务端代码编写 1 2客户端代码编写 1 3升级版服务端代码 支持同时处理多连接 1 4再次升级服务端代码 支持浏览器请求 2 拓展学习 ServerSocket 类 及AP
  • 蓝桥杯算法提高VIP-队列操作

    题目 题目链接 题解 模拟队列 代码 include
  • 删除vim打开文件末尾的^M

    最近在Windows下写了一个shell脚本 拿到Linux下执行的时候一直提示找不到文件 但是文件明明就存在 在Linux用vi vim 打开脚本 文件内容不为空 仔细检查脚本内容也没有出错 只是每行 末尾 多出来一个 M 符号 去掉这个
  • Qt使用QTcpSocket及QTcpServer传输文件

    服务端具体代码如下 h include
  • Python学习笔记合集(Pyhton基础总结)

    Python学习笔记合集 Python学习笔记合集 Pyhton基础总结 第一天主要讲了Python基本语句 上 第二天主要讲了Python基本语句 下 第三天主要讲了import导包 库 和Python条件语句 第四天主要讲了Python
  • 闭包【JavaScript基础面试题】

    闭包的定义 如果一个函数能访问外部的变量 那么就形成了一个闭包 闭包形成的原理 当一个普通函数执行结束之后 函数内的变量会被全部销毁 垃圾回收 但是 如果某些变量在函数外部会被用到 那么该变量就不会被销毁 因此形成了闭包 可以看下面的例子
  • [INFO] [copilotIgnore] inactive,github copilot没反应怎么解决

    在使用github copilot的时候 插件不工作 后台出现了这种输出 这种情况下就是它的激活出现了问题 如果账号的使用权没有问题的话 就将该插件disable之后再重新enable 重新观察输出 就会看到copilot在重新链接引擎了
  • C语言头文件和条件编译

    目录 一 条件编译 1 ifdef else endif 2 ifndef 用法 3 if和 elif 4 上述指令的嵌套使用 5 line 和 error 6 pragma 二 include 1 头文件被包含的方式 1 1 本地文件包含
  • 基于 pytorch的 肺部x光片疾病识别

    目录 案例主要流程 数据集下载地址 数据示例 模型结构示意图 ResNet 网络结构图
  • Python基础数据之列表知识(二)

    Python基础数据之列表知识 二 一 列表的特点 二 列表的排序 三 列表的嵌套 1 嵌套的基本使用 2 嵌套的示例 四 列表的循环删除 五 列表相关知识链接 一 列表的特点 1 有序 2 独立 3 列表中的元素可以重复 二 列表的排序
  • 【数据结构】队列的链式实现

    链式队列定义及各类操作 include
  • 目标检测之Dynamic Head: Unifying Object Detection Heads with Attentions

    cvpr2021 论文 https arxiv org pdf 2106 08322v1 pdf 代码 https github com microsoft DynamicHead 1 摘要 作者认为目标检测的头部是由三个部分组成 首先 头
  • openpyxl表格样式设置

    import pandas as pd from openpyxl import Workbook from openpyxl import load workbook from openpyxl styles import Alignme
  • Atomic Operations (standardized memory model)

    C 规范未引用任何特定的编译器 操作系统或CPU 它引用了 abstract machine 抽象机 它是对实际系统的概括 在语言规范中 程序员的工作是为抽象机编写代码 编译器的工作是在具体机器上实现该代码 通过严格按照规范进行编码 可以确
  • Visual Studio显示C4996错误,建议使用scanf_s函数

    在使用Visual Studio时编译器显示C4996错误 原因是VS编译器无法识别scanf函数 scanf s函数才是VS编译器自带的输入函数 但是scanf s函数只能在VS编译器中使用 其它编译器不支持 如果想在VS编译器中使用sc
  • 如何去除table的边框_怎么把table的外面的边框去掉

    展开全部 它有三个参数 cols rows none 当rules cols时 表格会隐藏纵向的分隔线 这样我们就只能看到表格的行 当rules rows时 则隐藏了横向62616964757a686964616fe4b893e5b19e3
  • 定时上报GPS坐标信息至服务器

    定时上报GPS坐标信息至服务器 本文通过一个 定时上报GPS坐标信息至服务器 的例子来讲述Android网络应用程序的开发 使用最为流行的restfull接口 第一步 定义网络接口 客户端以post方式将经纬度上传至服务器 第二步 开发服务