我尝试在所有LocationListener属性的函数中使用DDMS位置模型和非常简单的Log.i()
调用。当我启动程序时,我在LogCat中收到Log.i()
的{{1}}消息,所以我认为我正确地注册了监听器。但是当我使用Eclipse中的DDMS菜单将位置放入VM时,我什么也得不到。 LogCat,控制台或VM内部没有变化。好像根本没有发生任何事情。
我怎么能开始发现问题?
以下是我的简单GPS事件记录器的代码:
onStatusChanged()
这里的清单:
public class gpsActivity extends Activity {
private static final String TAG="gpsActivity";
private static TextView label;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
label = (TextView) findViewById(R.id.label);
LocationManager manager = (LocationManager) this
.getSystemService(LOCATION_SERVICE);
LocationListener listener = new LocationListener() {
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
Log.i(TAG, "onStatusChanged: "+arg0);
}
@Override
public void onProviderEnabled(String arg0) {
Log.i(TAG, "onProviderEnabled: "+arg0);
}
@Override
public void onProviderDisabled(String arg0) {
Log.i(TAG, "onProviderDisabled: "+arg0);
}
@Override
public void onLocationChanged(Location location) {
Log.i(TAG, "onLocationChanged");
}
};
manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2, 0,
listener);
setContentView(R.layout.main);
}
}
另外另外注意,我使用的是德国Windows XP并发现GPS套件存在问题,因为在德国系统中,1/2的数字格式不是0.5而是0.5,这会导致错误在GPS解析器语法中。但是,将我的系统编号格式更改为英语(美国)也没有改变,我根本没有得到任何消息,例外或结果。
答案 0 :(得分:1)
确保在DDMS的设备菜单中选择了您的设备/ emmulator。
编辑:
糟糕。我应该早些看到这些:
您正在使用NETWORK_PROVIDER
。为了从DDMS接收模拟位置(我还想通过geo
命令行),您必须注册GPS_PROVIDER
。您的代码通过更改onCreate方法的最后一行来工作:
manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2, 0,
listener);
NETWORK_PROVIDER
是通过电话网络(例如3G)或WIFI
答案 1 :(得分:1)
涉及3个问题。因为找到所有这些都花了超过12个小时的纯研究时间,请原谅我甚至不会再尝试找到相应的来源。
问题涉及:
Google API <version>
作为目标,而不是Android <version>
,因为后者没有激活必要的东西。祝所有尝试这种错误的人好运!