我嘗試在Android下爲我的應用程序獲取GPS位置失敗。我想知道我可能做錯了什麼。到目前爲止我嘗試以下方法:Android GPS應用程序無法在模擬器上工作
- Get GPS Location instantly via Android app
- http://www.javacodegeeks.com/2010/09/android-location-based-services.html
- http://about-android.blogspot.de/2010/04/find-current-location-in-android-gps.html
以及許多其他人,但一切都是徒勞。
考慮到所有的解決方案,上述工作過一段或其他人,我會用這一個調試:
package my.namespace;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class HomeActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new mylocationlistener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
}
private class mylocationlistener implements LocationListener {
public void onLocationChanged(Location location) {
if (location != null) {
Log.d("LOCATION CHANGED", location.getLatitude() + "");
Log.d("LOCATION CHANGED", location.getLongitude() + "");
Toast.makeText(HomeActivity.this,
location.getLatitude() + "" + location.getLongitude(),
Toast.LENGTH_LONG).show();
}
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
}
有@override
註釋的3種方法onProviderDisabled
,onProviderEnabled
和onStatusChanged
。我不得不刪除它們,因爲Eclipse給出了這些方法不覆蓋超類的錯誤。
我在清單文件(ACCESS_FINE_LOCATION
,ACCESS_MOCK_LOCATION
,ACCESS_COARSE_LOCATION
和INTERNET
)中添加了權限。
有沒有人有一個想法,我可能會做錯什麼?
編輯: 在模擬器中運行(Android 2.2的API 8)
謝謝你的答覆。我不認爲我可以添加NETWORK_PROVIDER,因爲我正在模擬器上進行測試。我已經將GPS_PROVIDER作爲參數傳遞給requestLocationUpdates方法。 – gkris 2012-04-26 11:27:55
意味着您正在emmulator中測試您的基於gps的應用程序? – MAC 2012-04-26 11:31:44
是的,但如果你願意,你可以使用這兩個提供者。無論如何,如果你正在模擬器上測試它,你是否通過模擬位置修復?無論是從命令行還是從eclipse。因爲在模擬器上,只有在模擬位置修復時,應用纔會獲得位置更新。 – binW 2012-04-26 11:31:45