我尝试在所有LocationListener属性的函数中通过非常简单的Log.i()
调用使用DDMS位置模型。启动程序时,我在LogCat中收到了Log.i()
的onStatusChanged()
消息,因此我认为我已正确注册了侦听器。但是,当我使用Eclipse中的DDMS菜单将位置放入VM时,我什么也没得到。 LogCat,控制台或虚拟机内部均未更改。好像什么也没有发生。
我什至如何开始发现问题?
这是我简单的GPS事件记录器的代码:
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);
}
}
这是清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mypackage.example.gps"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".gpsActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
另外请注意,我使用的是德语Windows XP,发现GPS软件包存在问题,因为在德语系统中,1/2的数字格式不是0.5,而是0.5,这会导致GPS错误解析器语法。但是将我的系统数字格式更改为English(US)并没有改变,我什么都没有收到任何消息,异常或结果。
最佳答案
确保在DDMS的设备菜单中选择了设备/仿真器。
编辑:
哎呀。我应该早些看过这些:
您正在使用NETWORK_PROVIDER
。为了从DDMS接收模拟位置(我也认为通过geo
的命令行),您必须注册GPS_PROVIDER
。您的代码通过更改onCreate方法的最后一行来工作:
manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2, 0,
listener);
NETWORK_PROVIDER
是通过电话网络(例如3G)或WIFI发出的信号