possoal,
a ideia do aplicarivo é pegar a posição do GPS do celular e enviar para um servidor na web, e esse servidor redistribui as posições do GPS para outros celulares que tenham o mesmo aplicativo, seguindo uma determinada loogica de negocio…
o meu problema esta em criar uma conexao tcp com o servidor… se eu retiro a conexao com o servidor, o programa roda corretamente…
[code]classe principal:
public class UseGps extends Activity
{
TcpEnviaPanicoController enviaPanico = new TcpEnviaPanicoController("localhost",2011);
TcpOuvePanicoController ouvePanico = new TcpOuvePanicoController("localhost",2012);
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ouvePanico.start();
LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
}
/* Class My Location Listener */
public class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc)
{
//Toast.makeText( getApplicationContext(),ouvePanico.getName(),Toast.LENGTH_LONG).show();
loc.getLatitude();
loc.getLongitude();
//enviaPanico.setComando(" Latitude = " + loc.getLatitude() + "Longitude = " + loc.getLongitude());
String Text = "Minha posição geografica é: " + "Latitude = " + loc.getLatitude() + "Longitude = " + loc.getLongitude();
Toast.makeText( getApplicationContext(),Text,Toast.LENGTH_LONG).show();
}
@Override
public void onProviderDisabled(String provider)
{
Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show();
}
@Override
public void onProviderEnabled(String provider)
{
Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
}
} [/code]
classe TcpOuvePanicoController:
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import br.com.teste.panico.cilentes.TransmissorPanico;
public class TcpOuvePanicoController extends Thread
{
private int porta;
private String ip;
private Socket clientSocket;
private BufferedReader inFromServer;
private DataOutputStream outToServer;
private static TransmissorPanico transmissorPanico;
private static boolean leituraPermitida;
public TcpOuvePanicoController (String ip,int porta)
{
try
{
setPorta (porta);
setIp(ip);
conectar(); // aqui ja da pau... o emulador trava e nao exibe a mensagem de hello world
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void run ()
{
try
{
while (true)
{
ouvirPanico ();
sleep(30000);
}
}
catch (Exception e)
{
try {
clientSocket.close();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}
public void conectar () throws IOException
{
clientSocket = new Socket(ip, porta);
outToServer = new DataOutputStream(clientSocket.getOutputStream());
inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
}
public void ouvirPanico () throws IOException
{
System.out.println("_________________________ conectou");
leituraPermitida = false;
outToServer.write(1);
transmissorPanico = new TransmissorPanico ();
transmissorPanico.setNome("walter");
transmissorPanico = TransmissorPanico.toTransmissorPanico(inFromServer);
leituraPermitida = true;
}
public int getPorta() {
return porta;
}
public void setPorta(int porta) {
this.porta = porta;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public static TransmissorPanico getTransmissorPanico() {
return transmissorPanico;
}
public static boolean isLeituraPermitida() {
return leituraPermitida;
}
}
AndroidManifest.xml:
[code]
<?xml version="1.0" encoding="utf-8"?><application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".UseGps"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
[/code]
alguem pode me ajudar? tenho que conseguir pelo menos essa conexao ate amanhaa a noite!