Данные sqlite отправляют через объект json для API - PullRequest
0 голосов
/ 06 декабря 2018

Я новичок здесь ... я хотел бы знать, возможно ли мое дело, потому что у меня нет справки о том, как это сделать ....

на моем помощнике по базе данных:

      public boolean saveLocationToLocalDatabase(String serialNumber, String 
      latitude, String longitude, String dateTime, String speed, String 
       port, SQLiteDatabase db)
      {
    ContentValues contentValues = new ContentValues();
    contentValues.put(SERIALNUMBER, serialNumber);
    contentValues.put(LATITUDE, latitude);
    contentValues.put(LONGITUDE, longitude);
    contentValues.put(DATE_TIME, dateTime);
    contentValues.put(SPEED, speed);
    contentValues.put(PORT, port);
    long locationResult=db.insert(TABLE_FLEET_LOCATION, null, 
     contentValues);
    if (locationResult == -1)
        return false;
    else
        return true;
   }

это мой onclicklistener и получение моих данных для извлечения из моей базы данных sqlite.

  locate.setOnClickListener(new View.OnClickListener() {
     @Override
      public void onClick( View view) {

                mMap.setOnMyLocationChangeListener(new 
                GoogleMap.OnMyLocationChangeListener() {
                    @Override
    public void onMyLocationChange(Location location) {
          CameraUpdate center = CameraUpdateFactory.newLatLng(new 
          LatLng(location.getLatitude(), location.getLongitude()));
          CameraUpdate zoom = CameraUpdateFactory.zoomTo(15);
          mMap.clear();
          MarkerOptions mp = new MarkerOptions();
          mp.position(new LatLng(location.getLatitude(), 
          location.getLongitude()));
          mp.title("");
          mMap.addMarker(mp);
          mMap.moveCamera(center);
          mMap.animateCamera(zoom);

   String gg =Settings.Secure.getString(getApplicationContext()
    .getContentResolver(),Settings.Secure.ANDROID_ID);
    lat = Double.toString(location.getLatitude());
    lon = Double.toString(location.getLongitude());
    well = String.valueOf(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",                   
     java.util.Locale.getDefault()).format(new java.util.Date()));
    speed="0000";
    port="9090";
 }

это мое сохранение данных в моей базе данных:

       DatabaseHelper databaseHelper = new            
       DatabaseHelper(getApplicationContext());
       SQLiteDatabase db = databaseHelper.getWritableDatabase();
       boolean accepted = databaseHelper.saveLocationToLocalDatabase(gg,lat, 
       lon, well,speed,port, db);
    if (accepted == true)
        Log.w("Data Entered:","MAIN");
}

, если я нахожусь на моемdata: это мой пример поля в моей базе данных sqlite: note: если вы заметили, что я сохранял 5 данных перед изменением данных, потому что, поскольку данные я хотел бы сохранять их каждую секунду перед извлечением других данных.enter image description here

и это мой случай, возможно ли это сделать? "Мне нравится получать все данные и создавать их все с помощью объекта json и отправлять в API с помощью модернизации"

кстати, мой последний код получал только те данные, которые я получал только из моего прослушивателя onclick, но мне нравится делать это другим способом (сохраняя данные, такие как 5-10 данных, и отправляя их все в api).через модификацию) для моих сообщений об ошибках.

предыдущий код модификации: private void sendAllToApi () {

                    MapDetails mapDetails = new MapDetails(gg, lat, lon, 
                    well, "0", portInts); //Data ive get once ive pressed 
                     onclicklistener
                    List<MapDetails> data = new ArrayList<>();
                    data.add(mapDetails);

                    Retrofit.Builder builder = new Retrofit.Builder()
                            .baseUrl("http://" + ADDRESS + ":" + PORT)//this 
                        is my configuration for api link

                   .addConverterFactory(GsonConverterFactory.create());

                    Retrofit retrofit = builder.build();

                    Api locate = retrofit.create(Api.class);

                    Call<MapDetails> call = locate.mapDetailLocation(data);     

                    call.enqueue(new Callback<MapDetails>() {
                        @Override
                        public void onResponse(Call<MapDetails> call, 
                        Response<MapDetails> response) {
                            Snackbar.make(view, "" + response,
                                    Snackbar.LENGTH_INDEFINITE)
                                    .setAction("Action", null).show();
                        }

                        @Override
                        public void onFailure(Call call, Throwable t) {
                            Snackbar.make(view, "" + t.getMessage(),
                                    Snackbar.LENGTH_INDEFINITE)
                                    .setAction("Action", null).show();

                           }
                        });
         }
...