Я с трудом пытаюсь реализовать геокодер в Android в классе Runnable: я так и сделал:
Geocoder geocoder = new Geocoder(context, Locale.ENGLISH);
List<Address> list = geocoder.getFromLocation(
(int)(coord.getLat()), (int)(coord.getLon()), 1);
if (list != null && list.size()>0 ){
Address address=list.get(0);
String result = address.getAddressLine(0) + ", " + address.getLocality();
}
Мой класс, Runnable, на самом деле является потоком, который подключается к удаленному серверу.и получает оттуда данные с помощью буфера.
И вот моя проблема:
Соединение с сервером является или было достаточно хорошим, пока я не поместил строку с геокодером внутри своего кода.
Теперь, когда я добавил строки геокодера, эта сторона моего соединения с сервером разрывается !!!
Теперь я точно знаю, что это из-за геокодера, потому что только сегодня я добавилэто к моему приложению, и до сих пор мое приложение работало очень хорошо, и связь была сильной ....
Вот весь мой код, и если кто-то может сказать, как я могу реализовать Geocoder лучше, пожалуйста, сделайте:
public class ClientThread_special implements Runnable {
int serverPort = 6500;
private String serverIpAddress = "10.0.2.2";
Coordinate coord;
ObjectInputStream is;
boolean stop = false;
DBAdapter db;
boolean t = false;
int id;
Context context;
PrintStream strReturnedAddress;
public ClientThread_special(DBAdapter db, Context context) {
this.db = db;
this.context = context;
}
public void run() {
Geocoder geocoder = new Geocoder(context, Locale.ENGLISH);
try {
InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
Socket socket = new Socket(serverIpAddress, serverPort);
is = new ObjectInputStream(socket.getInputStream());
try {
while (!stop) {
coord = (Coordinate) is.readObject();
System.out.println("Date de la clientul de monitorizare:"
+ coord.getLat());
List<Address> list = geocoder.getFromLocation(
(int)(coord.getLat()), (int)(coord.getLon()), 1);
if (list != null && list.size()>0 ){
Address address=list.get(0);
String result = address.getAddressLine(0) + ", " + address.getLocality();
}
System.out.println("adresa returnata folosind geocoder:"
+ strReturnedAddress);
....................................................
}
} catch (Exception e) {
e.printStackTrace();
}
is.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void stop() {
this.stop = true;
}
}
С сервера я читаю какой-то объект .... Если это необходимо, другие подробности я здесь