Não consigo fazer o envio de dados do app Android para Web Service com PHP+MySQL

Olá Experts!

Sei que já tem um tópico aqui de 12/2017:

No qual ninguém respondeu, pode ser que porque tem muito material e porque o cara só colocou sua duvida, porém eu já tenho o app feito mas não estou conseguindo fazer a comunicação, poderia por gentileza me auxiliar?

Tenho na MainActivity:
package br.com.claytoncalixto.seemyobject;

//Vesão do Projeto 30042018_14_43

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONObject;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Timer;

public class MainActivity extends AppCompatActivity {

Calendar calander;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss",Locale.getDefault());
TextView txtToken, txtLatitude, txtLongitude, txtAltitude, txtData_Hora;
String data_hora, curDay, curTime, data, horas, d, m, a, hor, min, sec;
Thread iniReloj = null;
Runnable r;
boolean isUpdate = false;
int dia, mes, ano, hora = 0, minuto = 0, segundo = 0;
String strData;
Timer timer;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    txtToken     = (TextView)findViewById(R.id.txtToken);
    txtLatitude  = (TextView)findViewById(R.id.txtLatitude);
    txtLongitude = (TextView)findViewById(R.id.txtLongitude);
    txtAltitude  = (TextView)findViewById(R.id.txtAltitude);
    txtData_Hora = (TextView)findViewById(R.id.txtData_Hora);
    r = new RefreshClock();
    iniReloj = new Thread(r);
    iniReloj.start();
    calander = Calendar.getInstance();
    simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.getDefault( ));
    data_hora = simpleDateFormat.format(calander.getTime());
    txtData_Hora.setText(data_hora);

    pedirPermissoes();

    //new Reminder(1);

    //new RemindTask();

    // ItsTime sdf = new ItsTime();
    // strData = sdf.initClock();
    //ItsTime sdf = new ItsTime();
    //strData =  new ItsTime.Reminder(1);
    //txtData_Hora.setText(strData);

    txtToken.setText("SMO_0001");

}

/*No método pedirPermissoes():
O IF verifica se o app já possui permissão para a cessar a localização do usuário:
- FINE = localização precisa.
- COARSE = localização imprecisa.
Se já tiver  permissão, chama o metodo configurarServiço().
*/
private void pedirPermissoes(){
    if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
            && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1);
    }
    else
        configurarServico();
}//pedirPermissoes

/*O método onRequestPermissionsResult():
 * Vai disparar para o usuário uma solicitação padrão de perimissão, informando qual o app esta pedindo a permissão.
 * Para que se possa capturar a reposta do usuário, deve-se sobrescrever o metodo onRequestPermissionResult
 * */
public void onRequestPermissionResult(int requestCode,
                                      String permission[], int[] grantResults){
    switch (requestCode){
        case 1:{
            if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                configurarServico();
            }else{
                Toast.makeText(this, "Não vai funcionar!!!",Toast.LENGTH_LONG).show();
            }
            return;
        }
    }
}//onRequestPermissionResult

/*Método configurarServico():
 * Lê o serviço do GPS do Android, invocando o objeto LocationManager.
 * Ele carrega o serviço de localização do dispositivo.
 * O listener ficará atento as mudanças do GPS e fará um refresh na tla
 * */
public void configurarServico(){
    try{
        LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        LocationListener locationListener = new LocationListener() {
            @RequiresApi(api = Build.VERSION_CODES.O)
            @Override
            public void onLocationChanged(Location location) {
                atualizar(location);
            }
            public void onStatusChanged (String provider, int status, Bundle extras){}

            public void onProviderEnabled(String provider) { }

            public void onProviderDisabled(String provider){}
        };
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
    }catch (SecurityException ex){
        Toast.makeText(this, ex.getMessage(), Toast.LENGTH_LONG).show();
    }
}//configurarServico

/*Método atualizar():
 * No Atualizar(), pega o método Location enviado pelo serviço de GPS.
 * Estas informções são enviadas para os TextViews contido no metodo.
 * */

public void enviDados(Localization localization){

    //txtLatitude.setText(String.valueOf(txtAltitude.getText()));

   // localization.doInBackGround(txtToken.toString());
   // localization.doInBackGround(txtLatitude.toString());
   // localization.doInBackGround(txtLongitude.toString());
   // localization.doInBackGround(txtAltitude.toString());
   // localization.doInBackGround(txtData_Hora.toString());



    //RequestQueue queue = Volley.newRequestQueue(this);
    //String HttpURL = "http://localhost/www/insertDevice.php";
    String HttpURL = "http://claytoncalixto.orgfree.com/insertDevice.php";
    //String HttpURL = "http://127.0.0.1/www/insertDevice.php";

    //Connected to the target VM, address: 'localhost:8622', transport: 'socket'

    StringRequest postRequest = new StringRequest(Request.Method.POST, HttpURL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    return;
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            return;
        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> postDataParams = new HashMap<String, String>();
            postDataParams.put("token", txtToken.getText().toString());
            postDataParams.put("latitude", txtLatitude.getText().toString());
            postDataParams.put("longitude", txtLongitude.getText().toString());
            postDataParams.put("altitude", txtAltitude.getText().toString());
            postDataParams.put("data_hora", txtData_Hora.getText().toString());

            new Localization().execute(String.valueOf(postDataParams));

            return postDataParams;
        }
     };
}

@RequiresApi(api = Build.VERSION_CODES.O)

public void atualizar(Location location){

    Double latPoint = location.getLatitude();
    Double lngPoint = location.getLongitude();
    Double altPoint = location.getAltitude();

    txtLatitude.setText(latPoint.toString());
    txtLongitude.setText(lngPoint.toString());
    txtAltitude.setText(altPoint.toString());



    RequestQueue queue = Volley.newRequestQueue(this);
    String HttpURL = "http://localhost/www/insertDevice.php";
    //String HttpURL = "http://claytoncalixto.orgfree.com/insertDevice.php";
    //String HttpURL = "http://127.0.0.1/www/insertDevice.php";

    //Connected to the target VM, address: 'localhost:8622', transport: 'socket'

    StringRequest postRequest = new StringRequest(Request.Method.POST, HttpURL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    return;
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            return;
        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> postDataParams = new HashMap<String, String>();
            postDataParams.put("token", txtToken.getText().toString());
            postDataParams.put("latitude", txtLatitude.getText().toString());
            postDataParams.put("longitude", txtLongitude.getText().toString());
            postDataParams.put("altitude", txtAltitude.getText().toString());
            postDataParams.put("data_hora", txtData_Hora.getText().toString());

            return postDataParams;
        }
    };

    // Add the request to the RequestQueue.
    queue.add(postRequest);

    // HttpURL = "http://my-json-feed";
    // HttpURL = "http://localhost/www/insertDevice.php";
    //HttpURL = "http://claytoncalixto.orgfree.com/insertDevice.php";
    //HttpURL = "http://127.0.0.1/www/insertDevice.php";

    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
            (Request.Method.POST, HttpURL, null, new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    Map<String, String> postDataParams = new HashMap<String, String>();
                    postDataParams.put("token", txtToken.getText().toString());
                    postDataParams.put("latitude", txtLatitude.getText().toString());
                    postDataParams.put("longitude", txtLongitude.getText().toString());
                    postDataParams.put("altitude", txtAltitude.getText().toString());
                    postDataParams.put("data_hora", txtData_Hora.getText().toString());
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    // TODO: Handle error

                }
            });

    // Access the RequestQueue through your singleton class.
    ///MySingleton.getInstance(this).addToRequestQueue(jsonObjectRequest);


}//atualizar

/**
 * Método initClock():
 * Basicamente, é aquele que faz a limpeza do layout a cada segundo, um simples IF é o
 *   que identifica se é atualizado o tempo de ajustes, se tiver que seguir
 *   mostrando a hora atual, o isUpdate mostra o valor que foi enviado da classe.
 */
private void initClock() {
    runOnUiThread(new Runnable() {
        public void run() {
            try {

                if (isUpdate) {
                    settingNewClock();
                } else {
                    updateTime();
                }

                Calendar cal = Calendar.getInstance();
                SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.getDefault());
                String strDate = sdf.format(cal.getTime());
                txtData_Hora.setText(strDate);

            } catch (Exception e) {
            }
        }
    });
}

/*Classe RefreshClock{}:
Class RefreshLock in java.lang.Object
http://jade.cselt.it/wade/doc/api/index.html?com/tilab/wade/lock/LockTableImpl.html
*/

/**
 * Método settingNewClock():
 * É o responsável em passar a hora de modo que quando atinge as 24:59:59 retorna os valores de 00:00:00,
 * embora na prática como mencionado em um comentário anterior, este é definido como 0: 0: 0, mas depois restaurado para
 * 00:00:01
 */
private void settingNewClock() {
    segundo += 1;

    setZeroClock();

    if (segundo >= 0 & segundo <= 59) {

    } else {
        segundo = 0;
        minuto += 1;
    }
    if (minuto >= 0 & minuto <= 59) {

    } else {
        minuto = 0;
        hora += 1;
    }
    if (hora >= 0 & hora <= 24) {

    } else {
        hora = 0;
    }

}

/**
 * Método updateTime():
 * Este é o método inicial do relógio, a partir do qual o tempo é exibido cada segundo é o Java.Util.Calendar
 */

private void updateTime() {

    Calendar c = Calendar.getInstance();
    dia = c.get(Calendar.DAY_OF_MONTH);
    mes = c.get(Calendar.MONTH);
    ano = c.get(Calendar.YEAR);
    hora = c.get(Calendar.HOUR_OF_DAY);
    minuto = c.get(Calendar.MINUTE);
    segundo = c.get(Calendar.SECOND);
    setZeroClock();

}

/**
 * Método setZeroClock():
 * É definir o número 0 nesses valores menores que 10, mas não consegui resolver um pequeno inconveniente no momento da chegada
 *  de 0: 0: 0, portanto, em seus derivados, embora não seja por falta de lógica, revisei muito bem, mas se encontrar
 * um arranjo melhor, atualizo este método.
 */
private void setZeroClock() {
    if (hora >= 0 & hora <= 9) {
        hor = "0";
    } else {
        hor = "";
    }

    if (minuto >= 0 & minuto <= 9) {
        min = ":0";
    } else {
        min = ":";
    }

    if (segundo >= 0 & segundo <= 9) {
        sec = ":0";

    } else {
        sec = ":";
    }
}

class RefreshClock implements Runnable {
    //@Override
    public void run() {
        while (!Thread.currentThread().isInterrupted()) {
            try {
                initClock();
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            } catch (Exception e) {
            }
        }
    }
}

}//MaiActivity

E a classe Locatiozation.java(mas não sei se tudo isso esta certo e como consigo testar sem ser pelo web service para até mapear onde funciona):
package br.com.claytoncalixto.seemyobject;

import android.app.ProgressDialog;
import android.os.AsyncTask;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;

class Localization extends AsyncTask<String, String, String> {

//String HttpURL = "http://localhost/www/insertDevice.php";
private String strToken = "", strLatitude = "", strLongitude = "", strAltitude = "", strData_Hora = "";
private ProgressDialog pDialog;
private HTTPURLConnection service;
private JSONObject json;
private int sucess = 0;




    String response = "";

    //Create hashmap Object to send parameters to web service
    HashMap<String, String> postDataParams;


 @Override
 protected String doInBackground(String... strings) {
     HttpURLConnection urlConnection =  null;
     BufferedReader reader =  null;

     try{
         URL url = new URL("http://claytoncalixto.orgfree.com/insertDevice.php");
         //URL url = new URL("http://localhost/www/insertDevice.php");
         urlConnection = (HttpURLConnection) url.openConnection();
         urlConnection.setRequestMethod("POST");
         urlConnection.connect();

         postDataParams = new HashMap<String, String>();
         postDataParams.put("token", strToken);
         postDataParams.put("latitude", strLatitude);
         postDataParams.put("longitude", strLongitude);
         postDataParams.put("altitude", strAltitude);
         postDataParams.put("data_hora", strData_Hora);
         //Call ServerData() method to call webservice and store result in response
         //response = service.ServerData(HttpURL, postDataParams);
         try {
             json = new JSONObject(response);
             //Get Values from JSONObject
             System.out.println("sucesso=" + json.get("sucesso"));
             sucess = json.getInt("sucesso");
         } catch (JSONException e) {
             e.printStackTrace();
         }

     } catch (Exception e) {
         e.printStackTrace();
         if (urlConnection != null) {
             urlConnection.disconnect();
         }


     }

     return null;
 }

 @Override
    protected void onPreExecute() {
        super.onPreExecute();

        pDialog.setMessage("Aguarade...");
        pDialog.setCancelable(false);
        pDialog.show();
    }




    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        if (pDialog.isShowing()) {
            pDialog.dismiss();
        }
        if (sucess == 1) {
            //Toast.makeText(getApplicationContext(), "Dados adicionados com sucesso!!!", Toast.LENGTH_LONG).show();
        }
    }

}