在Android中向服务器发送位置更新

在Android中向服务器发送位置更新,android,gps,tracking,Android,Gps,Tracking,我正在学校开发一个概念验证应用程序,我需要开发一个简单的应用程序,让家长跟踪孩子的android设备。我现在已经知道如何使用GPS来获取位置更新了。什么是弥合父母设备和孩子设备之间差距的最佳方法?应用程序如何知道谁是家长,谁是孩子?另外,最好使用getLastKnownLocation(best)将孩子的数据发送到远程服务器,然后再发送到家长,还是有更简单的方法 提前谢谢 2012年3月25日*********更新*********************** 好的,根据你们的建议,我在一个文件

我正在学校开发一个概念验证应用程序,我需要开发一个简单的应用程序,让家长跟踪孩子的android设备。我现在已经知道如何使用GPS来获取位置更新了。什么是弥合父母设备和孩子设备之间差距的最佳方法?应用程序如何知道谁是家长,谁是孩子?另外,最好使用getLastKnownLocation(best)将孩子的数据发送到远程服务器,然后再发送到家长,还是有更简单的方法

提前谢谢

2012年3月25日*********更新***********************

好的,根据你们的建议,我在一个文件中有php代码

<?php
$thisString = $_POST["action"]; // Variable to receive the request from 
echo $thisString;
?>

我将字符串发送到web服务,并在方法中使用此代码

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://kre8tiveinspired.com/android/simpleTest.php");
    // This is the data to send
    String MyName = **"String Test"**; //any data to send
    try {
    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    nameValuePairs.add(new BasicNameValuePair("action", MyName));

    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

    // Execute HTTP Post Request
    ResponseHandler<String> responseHandler = new BasicResponseHandler();
    String response = httpclient.execute(httppost, responseHandler);

    //This is the response from a php application
    String reverseString = response;
    Toast.makeText(this, "response " + reverseString, Toast.LENGTH_LONG).show();

    }...
HttpClient-HttpClient=newdefaulthttpclient();
HttpPost HttpPost=新的HttpPost(“http://kre8tiveinspired.com/android/simpleTest.php");
//这是要发送的数据
字符串MyName=**“字符串测试”**//有要发送的数据吗
试一试{
//添加您的数据
List nameValuePairs=新的ArrayList(1);
添加(新的BasicNameValuePair(“action”,MyName));
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
//执行HTTP Post请求
ResponseHandler ResponseHandler=新BasicResponseHandler();
String response=httpclient.execute(httppost,responseHandler);
//这是来自php应用程序的响应
字符串反向限制=响应;
Toast.makeText(这是“response”+reverseString,Toast.LENGTH_LONG).show();
}...
它让我干杯说“响应字符串测试”。 好的,现在它可以工作了,但是我如何发送两个不同的变量,比如long和lat,然后在执行
httpclient.execute(httppost,responseHandler命令。

一个简单的方法是在子设备上运行服务。每隔一段时间,in会获取当前位置,并向服务器发送更新。然后,您将在父设备上有一个应用程序,该应用程序可以根据请求运行,或者在另一个服务中定期轮询更新

这是最简单的方法,但应该可以实现您想要的。至于确定哪个设备是您应该能够在应用程序级别控制的设备(可以是两个不同的应用程序,或者是同一个应用程序,其中一个设置为客户端(子级))在配置中,可能需要一个键来更改设置,或者可能需要从服务器中提取设置。您还需要某种配对,以便确保父设备查看正确的子设备信息。这可以简单到在初始设置期间在两台设备上生成并显示pin码以供确认


我会简单地开始,并随着需求的发展而扩展。

您可能应该让您的应用注册一个闹钟,唤醒子手机上安装了应用的服务。此服务应该将位置数据发送到服务器,服务器会将其推送到父手机。该应用还需要在父手机上安装一个服务来接收数据通知

要决定哪个是家长,哪个是孩子,您很可能需要在每部手机上分别配置应用程序,即让家长在其手机和子手机上安装应用程序,并将子手机设置为孩子,将其设置为家长。您可以使用密码保护此设置。另一个选项是开发两个应用程序,我的孩子(追踪)和我的孩子(父母)在哪里

最后,您需要一个在服务器上运行的系统来管理来自子设备的数据。然后,该系统将向父设备发送相关信息。您还可以让父设备创建一个帐户,然后让他们登录父设备和子设备,以便服务器知道将信息发送到何处


这不是一个容易的项目。如果你想做一些商业或分销的东西,这将需要相当多的工作。如果这只是你提到的概念证明,你可以走一些弯路。不管怎样,我概述的内容几乎是你需要的最低限度。

非常感谢!我现在就开始尝试。我很高兴如果我在途中遇到任何问题,我都会回来。再次感谢。是的,这是一个概念证明,所以我一定要走捷径。对你和@broschb来说,一个问题是如何配置服务器。我有自己的托管帐户,它使用cpanel。设置什么样的系统来接收数据最好?PHP或Rails中的任何东西都可以工作非常出色。基本上,您可以设置不同的网页作为服务器的“API”。您的应用程序将调用不同的网页(或一个大网页)当我将坐标发送到php Web服务时,它们是保存到我请求的变量中,还是需要保存在字典的“code@中?”中,你应该单独问这个问题。但是,如果我理解你的意图,我不是一个精通php的程序员如果您不想做(这可能不是您应该尝试做的),则流程将被记录。