【发布时间】:2014-02-07 07:32:26
【问题描述】:
我正在开发一个应用程序,在该应用程序中,按下屏幕上的按钮后,我正在将纬度和经度上传到服务器,异步任务正在启动并执行操作并将纬度和经度上传到服务器端口。 现在的问题是gps找不到纬度和经度。它在服务器端口上抛出 null 。请帮助我,我的代码如下所示...... 提前致谢
class Server extends AsyncTask<String, Integer, String> implements LocationListener{
@Override
protected String doInBackground(String... arg0) {
Looper.myLooper();
Looper.prepare();
for(int i=0;i<9898;i++){
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,this);
sendstring=phonenumber+latitude+longitude+"12345467788";
System.out.println(sendstring+"4532748");
stopUsingGPS();
try {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
StrictMode.setThreadPolicy(policy);
Socket socket = null;
try {
int REDIRECTED_SERVERPORT=31997;
InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
socket = new Socket(serverAddr, REDIRECTED_SERVERPORT);
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println(sendstring);
/*latitude=0.0;
longitude=0.0;*/
}
catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
catch (Exception e) {
}
}
return call1;
}
@Override
public void onLocationChanged(Location location) {
latitude=location.getLatitude();
longitude=location.getLongitude();
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
public void stopUsingGPS(){
if(locationManager != null){
locationManager.removeUpdates(this);
}
}
【问题讨论】:
-
@Mayank Saini 如何在不使用网络提供商的情况下使用?
-
我已经在没有网络提供商的情况下发布了答案。只是它使用 GPS,如果 GPS 不可用,它使用网络提供商。我已经在下面发布的答案中删除了网络提供商。