Android Open Source - GeoNFC T C P Connection






From Project

Back to project page GeoNFC.

License

The source code is released under:

GNU General Public License

If you think the Android project GeoNFC listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.nfc.geo.geonfc.tcp;
/*ww w.j a  v  a 2 s  .c om*/
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Handler;
import android.os.Message;

import com.nfc.geo.geonfc.database.InfoEntity;
import com.nfc.geo.geonfc.database.QueryInsertUpdate;
import com.nfc.geo.geonfc.deviceinfo.DeviceInformation;

public class TCPConnection{

  private static final int NFC = 0;
  private static final int GPS = 1;
  private static final int PUERTO = 5043;
  private static final String IP = "your-url";
  private DeviceInformation dinfo;
  private Activity acti;
  private QueryInsertUpdate queryInsert;
  private InfoEntity infEnti;
  private boolean hasSent = true;
  Socket socket = null;
  DataOutputStream dataOutputStream = null;
  DataInputStream dataInputStream = null;
  private Handler handler;

  public TCPConnection(Activity act, DeviceInformation dinf)
  {    
    dinfo = dinf;
    acti = act;

    handler = new Handler(){
      @Override
      public void handleMessage(Message msg) {        
        queryInsert = new QueryInsertUpdate(acti);
        queryInsert.open();
        ArrayList<InfoEntity> ii = queryInsert.getInfo();

        boolean isInDB = false;

        if(!ii.isEmpty())
        {
          for (InfoEntity infoEntity : ii) {
            if(infoEntity.getTimestamp().equals(infEnti.getTimestamp()))
              isInDB =true;
          }

          if(!isInDB)
          {
            queryInsert.insertInfo(infEnti);
          }
        }else{
          queryInsert.insertInfo(infEnti);
        }
        queryInsert.close();
        setHasSent(false);
        
        final AlertDialog alertDialog = new AlertDialog.Builder(acti).create();
        alertDialog.setTitle("Erro en lo servidor o no GPRS conexion disponible!");
        alertDialog.setMessage("Activa tu GPRS conexion se no estaba activada!");
        alertDialog.setButton("Ok", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int which) {
            alertDialog.dismiss();
          } });
        alertDialog.show();
      }
    };
  }

  /**
   * Mtodo para el envo de los datos
   * @param info Los datos a serem enviados
   * @return true si server responde, false si ninguna respuesta de server
   */
  public void sendInfo(String info)
  {
    Thread a = new Thread(new SendData(info));
    a.start();
  }

  class SendData implements Runnable {

    private String inf = "";

    public SendData(String ii){
      inf = ii;
    }

    @Override
    public void run(){
      try {    
        socket = new Socket(IP,PUERTO); 

        dataOutputStream = new DataOutputStream(socket.getOutputStream());

        dataInputStream = new DataInputStream(socket.getInputStream());

        dataOutputStream.writeUTF(inf);        

        socket.close();
        dataOutputStream.close();
        dataInputStream.close();
        setHasSent(true);
      } catch (UnknownHostException e) {
        handler.sendEmptyMessage(0);
      } catch (IOException e) {
        handler.sendEmptyMessage(0);
      }
    }
  }



  /**
   * Mtodo para la construccin de la info
   * @param id El id si es nfc o gps
   * @param tag_id El ID tag
   * 
   * @return String con la informacion
   */
  public String buildData(int id, String tag_id, InfoEntity infoe)
  {
    String pre_info = "";

    if(infoe != null)
      infEnti = infoe;

    switch (id) {
    case NFC:
      pre_info = ""+ dinfo.getDeviceImei(acti)+",,NFC,"+infEnti.getTimestamp()+","
          +infEnti.getTag_id()+",,,,,,,"+dinfo.getBatteryInfo(acti)+",";
      infEnti = new InfoEntity(tag_id, dinfo.getTimestamp(),0,0,0,0,0,"NFC");
      String nfc_info = "$AN"+pre_info.length()+","+pre_info+"\r\n";
      return nfc_info;
    case GPS:
      if(infoe != null)
      {
        if(infoe.getLatitude() != 0.0)
          pre_info = ""+ dinfo.getDeviceImei(acti)+",,GPS,"+infoe.getTimestamp()+
          ",,"+infoe.getLatitude()+","+infoe.getLongitude()+",A,"+infoe.getHdpo()+","+infoe.getNum_sattelites()+","
          +infoe.getSpeed()+","+dinfo.getBatteryInfo(acti)+",";
        else
          pre_info = ""+ dinfo.getDeviceImei(acti)+",,GPS,"+infoe.getTimestamp()+
          ",,"+infoe.getLatitude()+","+infoe.getLongitude()+",V,"+infoe.getHdpo()+","+infoe.getNum_sattelites()+","
          +infoe.getSpeed()+","+dinfo.getBatteryInfo(acti)+",";

        infEnti = new InfoEntity(null, infoe.getTimestamp(), infoe.getLatitude(),infoe.getLongitude(),infoe.getHdpo()
            , infoe.getSpeed(), infoe.getNum_sattelites(),"GPS");
      }else{
        pre_info = ""+ dinfo.getDeviceImei(acti)+",,GPS,"+dinfo.getTimestamp()+",,,,V,,,,,"+dinfo.getBatteryInfo(acti)+",";
        infEnti = new InfoEntity(tag_id, dinfo.getTimestamp(),0,0,0,0,0,"GPS");
      }
      String gps_info = "$AN"+pre_info.length()+","+pre_info+"\r\n";
      return gps_info;
    default:
      break;
    }
    return null;
  }

  public InfoEntity getInfEnti() {
    return infEnti;
  }

  public void setInfEnti(InfoEntity infEnti) {
    this.infEnti = infEnti;
  }

  public boolean isHasSent() {
    return hasSent;
  }

  public void setHasSent(boolean hasSent) {
    this.hasSent = hasSent;
  }
}




Java Source Code List

com.nfc.geo.geonfc.Eventos.java
com.nfc.geo.geonfc.GPSPestana.java
com.nfc.geo.geonfc.MainActivity.java
com.nfc.geo.geonfc.Settings.java
com.nfc.geo.geonfc.Tabs.java
com.nfc.geo.geonfc.builder.DataBuilder.java
com.nfc.geo.geonfc.database.Database.java
com.nfc.geo.geonfc.database.InfoEntity.java
com.nfc.geo.geonfc.database.QueryInsertUpdate.java
com.nfc.geo.geonfc.deviceinfo.DeviceInformation.java
com.nfc.geo.geonfc.interfaces.DeviceInterface.java
com.nfc.geo.geonfc.interfaces.MainInterface.java
com.nfc.geo.geonfc.tcp.EnviarDatos.java
com.nfc.geo.geonfc.tcp.FTPConnection.java
com.nfc.geo.geonfc.tcp.TCPConnection.java
com.nfc.geo.geonfc.utils.FileHandler.java