我尝试在所有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发出的信号

07-25 22:34
查看更多