JSONArrayをサーバーにポストする必要があります.HttpUrlConnectionを試しましたが、私の場合はASyncTaskの使用方法がわかりません。POST JSONArrayをHttpUrlConnectionを使用してサーバーに接続する
私のonLocationChangedメソッドでは、JSONを10秒ごとにポストする必要があります。誰もこれを行う方法を知っていますか?
public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener{
private final String LOG_TAG = "iTrackerTestApp";
private TextView txtLatitude, txtLongitude, txtAltitude, txtVelocidade;
private GoogleApiClient mGoogleApiClient;
private HttpURLConnection urlConnection = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
txtLatitude = (TextView) findViewById(R.id.txtLatitude);
txtLongitude = (TextView) findViewById(R.id.txtLongitude);
txtAltitude = (TextView) findViewById(R.id.txtAltitude);
txtVelocidade = (TextView) findViewById(R.id.txtVelocidade);
}
@Override
public void onConnected(Bundle bundle) {
LocationRequest mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(1000); // Atualiza a localização a cada segundo.
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
@Override
public void onLocationChanged(Location location) {
Log.i(LOG_TAG, location.toString());
txtLatitude.setText("Latitude: " + Double.toString(location.getLatitude()));
txtLongitude.setText("Longitude: " + Double.toString(location.getLongitude()));
if(location.hasAltitude())
txtAltitude.setText("Altitude: " + Double.toString(location.getAltitude()));
if(location.hasSpeed())
txtVelocidade.setText("Velocidade: " + Float.toString(location.getSpeed()));
final JSONArray array = new JSONArray();
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("Latitude", txtLatitude.getText());
} catch (JSONException e) {
e.printStackTrace();
}
try {
jsonObject.put("Longitude", txtLongitude.getText());
} catch (JSONException e) {
e.printStackTrace();
}
array.put(jsonObject);
// I NEED TO SEND THIS JSON TO SERVER EVERY 10 SECONDS
}
@Override
protected void onStart(){
super.onStart();
mGoogleApiClient.connect();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
@Override
protected void onStop(){
mGoogleApiClient.disconnect();
super.onStop();
}
@Override
public void onConnectionSuspended(int i) {
Log.i(LOG_TAG, "Conexão com o GoogleApiClient suspensa!");
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.i(LOG_TAG, "Conexão com o GoogleApiClient falhou!");
}
}
にJSONの下に送信されます。 –
ユーザークラスは単純なPOJOです。 –
http://www.jsonschema2pojo.orgこれを使用してjsonのPOJOを作成します –