1
我是新來的android編程。我有一個線程,我已經請求位置更新。問題是onLocationChanged(Location loc)
中的代碼從未得到執行。請解釋我如何解決這個問題。無法使用GPS
public void run() {
Looper.prepare();
while (isMyServiceRunning()) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
Log.d("spt", "read status started");
if ((Connectivity.isConnected(getApplicationContext()))) {
URL urlreadstatus = new URL("http://asd.fgh.com/status.txt");
// Log.d("spt",String.valueOf(URLUtil.isValidUrl("http://asd.fgh.com/status.txt")));
BufferedReader in = new BufferedReader(new InputStreamReader(urlreadstatus.openStream()));
str = in.readLine();
if(!str.equals(null)){
Log.d("spt", str);
}
in.close();
Log.d("spt", "read status complete");
} else {
Log.d("spt", "not connected");
break;
}
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
Log.d("spt", "IO exception");
str = "11";
e.printStackTrace();
} catch(NullPointerException e){
str="11";
}
if (str.equals(null)) {
str = "11";
}
if (str.length() == 1) {
loststatus++;
LocationManager l;
l=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = l.getBestProvider(criteria, false);
l.requestLocationUpdates("gps", 400, 1, this);
Log.d("spt", "lost status=1 requesting location updates");
} else {
loststatus = 0;
}
}
}
@Override
public void onLocationChanged(Location loc) {
// TODO Auto-generated method stub
Log.d("spt", "in loc changed");
double longi = loc.getLongitude();
double lati = loc.getLatitude();
double acc=loc.getAccuracy();
Log.d("spt", String.valueOf(acc));
if (loststatus > 0) {
HttpPost httpPost = new HttpPost(
"http://asd.fgh.com/writegps.php?value="
+ String.valueOf(lati) + ","
+ String.valueOf(longi));
// output is the variable you used in your program
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.execute(httpPost);
Log.d("spt", "writing coord to file");
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(this, String.valueOf(lati) + String.valueOf(longi),
Toast.LENGTH_SHORT).show();
}
}
您可以發佈錯誤...從日誌貓.. –
我沒有在這段代碼中得到任何錯誤..但onlocationchanged()方法沒有執行。 @ManetiVinay –
您是否在清單中設置了權限? –