2012-04-22 72 views
0

您好我想在Android设备实现GPS设备通信功能,但我不知道这些设备如何与使用这些设备数据的服务器进行通信并将这些数据保存在server.I不得不质疑这些设备
1- Can服务器连接这些设备并获取数据并将数据保存在服务器上?或者这些设备连接到服务器并将数据发送到服务器。
这个问题对我来说很重要,因为我想为Android设备编写模拟gps设备功能的Android设备应用程序!
2:我研究如何从服务器连接到android设备并获取有关mqtt的信息!我可以使用mqtt从服务器连接到Android设备吗?
模拟Android设备上的这些设备功能需要知道哪个服务器或设备连接到其他并发送数据?全球定位系统设备与服务器的通信功能

+0

如果设备生成数据,最好将它发送到服务器,而不是在一段时间后将数据发送到服务器池。与服务器通信的服务器是好的,当服务器有东西要告诉设备或要求设备不频繁的数据。如果您的GPS数据真的很少,或者您只想在有些时候收集它(例如现在使用这些设备),请使用mqtt。 – Hassan 2012-04-22 22:44:55

+0

据我所知,MQTT告诉我,这是一种基于短信的通信模式,在这种模式下,您的应用程序将拦截SMSes并从服务器处理特定格式的内容。作为回应,您可以通过互联网请求或SMS将数据发送回服务器。 – Hassan 2012-04-22 22:48:48

+1

感谢您的帮助,我想创建一个拥有Android设备会员的网站,并收集他们的位置并在网站上显示他们的位置信息,例如我想要获取交通公司的车辆位置并向管理员显示他们的信息!有这样的网站使用GPS设备从车辆获取信息,但我不知道哪些服务器或GPS设备连接到其他,并发送信息!我想获得及时的车辆位置和显示管理员为此目的服务器连接到设备或设备连接到服务器并发送数据? – user1344766 2012-04-23 08:13:26

回答

1

首先,您需要获取设备上的位置位置,然后将其发送到您的服务器,以便您可以显示此信息。务实的代码,你需要的东西,如来获得设备上的位置:

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
locationManager.requestLocationUpdates("gps", 60000, 0, locationListener); 

private final LocationListener locationListener = new LocationListener() { 
     public void onLocationChanged(Location location) { 
      // Here you have both location.getLatitude() and location.getLongitude() 
     } 
     public void onProviderDisabled(String provider){} 
     public void onProviderEnabled(String provider) {} 
     public void onStatusChanged(String provider, int status, Bundle extras) {} 
}; 

了解有关在Android上位置的详细信息,请参阅官方文档上User Location

当你完成位置部分,你可以开始发送它到你的服务器。考虑为此使用JSON。

让我们看看你有一个字符串行“latitudelongitude”,则需要先构建JSON对象:

public JSONObject buildJSONObject(String line) { 
     String[] toJson = line.split(" "); 
     JSONObject object = new JSONObject(); 
     try { 
      object.put("latitude", toJson[0]); 
      object.put("longitude", toJson[1]); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return object; 
} 

然后您可以像这样的东西它发送给服务器:

public boolean sendTraceLineToServer(JSONObject line) { 
    // The mock server IP is 10.0.2.2, just for testing purposes 
    // This server receives a JSON with format {"location":{"latitude":xx.xx, "longitude":yy.yy}} 
    HttpPost httpPost = new HttpPost("http://10.0.2.2:3000/locations"); 
    DefaultHttpClient client = new DefaultHttpClient(); 
    JSONObject holder = new JSONObject(); 

    boolean sent = false; 

    try { 
     holder.put("location", line); 

     StringEntity se = new StringEntity(holder.toString()); 
     httpPost.setEntity(se); 
     httpPost.setHeader("Content-Type","application/json"); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    HttpResponse response = null; 

    try { 
     response = client.execute(httpPost); 
     sent = true; 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
     Log.e("ClientProtocol",""+e); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     Log.e("IO",""+e); 
    } 

    HttpEntity entity = response.getEntity(); 

    if (entity != null) { 
     try { 
      entity.consumeContent(); 
     } catch (IOException e) { 
      Log.e("IO E",""+e); 
      e.printStackTrace(); 
     } 
    } 
    return sent; 
} 

Here你有更多关于如何发布JSON到服务器的例子。

在服务器上,对我来说,我写在Rails,我创建接收JSON一样简单的方法:

# POST /locations 
# POST /locations.xml 

def create 
    @location = Location.new(params[:location]) 
    respond_to do |format| 
     if @location.save 
     format.json { render :json => @location, :status => :created, :location => @location } 
     else 
     format.json { render :json => @location.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

,就是这样,在设备上的位置,利用它发送HTTP与JSON,并在示例Rails服务器上接收。

+0

感谢您在这些代码中的帮助设备发送信息到服务器我不知道在http://gpstrackit.com/这样的站点中使用了哪种机制设备发送信息到服务器或服务器获取特定车辆的信息? – user1344766 2012-04-23 08:59:52

+0

@ user1344766,他们提供的产品,所以如果你可以购买它并不重要背后的技术,但它是否解决你的问题。既然你在这里发布了一个与Android有关的问题,我认为你想自己动手,因此,我的答案为你提供了完成这个任务的基本框架。我认为你可以这样做,如果要求像发送位置信息那么简单。如果我的答案符合您的需求,请将其标记为如此。 – Eduardo 2012-04-23 09:07:16

+0

我可以为iPhone或Windows移动设备等其他平台扩展此解决方案吗? – user1344766 2012-04-23 10:31:44