2012-04-22 19 views
0

Привет, я хочу реализовать коммуникационные функции gps-устройств в устройствах Android, но я не знаю, как эти устройства взаимодействуют с сервером, который использует данные этих устройств и сохраняет эти данные на сервере. Я должен задать вопрос о эти устройства
1-Может ли сервер подключать эти устройства и получать данные и сохранять данные на сервере? Или эти устройства подключаются к серверу и отправляют данные на сервер.
этот вопрос важен для меня, потому что я хочу написать приложение для устройств Android, которые имитируют функции gps-устройств на устройствах Android!
2: Я изучаю, как подключиться с сервера к устройствам Android и получить информацию о mqtt! могу ли я подключиться с сервера к устройствам Android с помощью mqtt?
для имитации этих функций устройств на устройствах Android необходимо знать, какой из серверов или устройств подключиться к другим и отправлять данные?Функциональность связи устройств GPS с сервером

+0

Если устройства генерируют данные, лучше отправить их на сервер, а не объединять пул каждого устройства через некоторое время для данных. Сервер, взаимодействующий с клиентом, хорош, когда серверу есть что сказать устройству или запрашивает устройство для нечастых данных. Если ваши данные GPS действительно редки или вы хотите собирать их только время от времени (например, если эти устройства находятся прямо сейчас), используйте mqtt. – Hassan

+0

И, насколько мне известно о MQTT, это базовая коммуникационная модель sms, в которой ваше приложение будет перехватывать SMS-сообщения и обрабатывать их в определенном формате с вашего сервера. В ответ вы можете отправить данные обратно на сервер через интернет-запрос или SMS. – Hassan

+1

Спасибо за вашу помощь. Я хочу создать веб-сайт, на котором есть члены с устройствами Android, и собрать их местоположение и показать свою информацию о местоположении на веб-сайте, например, я хочу получить местонахождение транспортного средства Транспортной компании и показать свою информацию для администраторов! есть сайты для этой цели, которые используют gps-устройства для получения информации от транспортных средств, но я не знаю, какие из серверов или gps-устройств подключаются к другим и отправлять информацию !. Я хочу получить своевременное расположение транспортных средств и показать администраторам для этой цели сервер подключается к устройствам или устройствам, подключается к серверам и отправляет данные? – user1344766

ответ

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

+0

@ user1344766, они предоставляют продукт, поэтому, если вы можете купить его, не имеет значения технология, стоящая за ним, но решает ли он вашу проблему или нет. Поскольку вы размещаете здесь вопрос, связанный с Android, я думаю, что вы хотите сделать сам, поэтому мой ответ предоставит вам голые кости для вас. Я думаю, вы можете это сделать, если требования так же просты, как отправить информацию о местоположении. Если мой ответ соответствует вашим потребностям, отметьте его так. – Eduardo

+0

Могу ли я масштабировать это решение для других платформ, таких как мобильные устройства iphone или windows? – user1344766

Смежные вопросы