6

我没有成功尝试让 GPS 位置在 Android 下为我的应用程序工作。我想知道我可能做错了什么。到目前为止,我已经尝试了以下方法:

以及许多其他人,但都是徒劳的。

考虑到上述所有解决方案都适用于某些人或其他人,我将使用这个来调试:

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 种方法都有注释onProviderDisabledonProviderEnabled并且onStatusChanged. 我不得不删除它们,因为 Eclipse 给出了一个错误,即这些方法没有覆盖超类。

我已在清单文件(ACCESS_FINE_LOCATION、、ACCESS_MOCK_LOCATION和)ACCESS_COARSE_LOCATION中添加了权限。INTERNET

有谁知道我可能做错了什么?

编辑:在模拟器上运行(Android 2.2 API 8)

4

1 回答 1

3

确保在测试应用时启用 GPS。如果同时使用 NETWORK_PROVIDER 和 GPS_PROVIDER 也会有所帮助。这样当 GPS 不可用时,您仍然可以使用 NETWORK_PROVIDER 获得位置。

更新:此外,如果您使用模拟器来测试您的应用程序,请确保您从命令行或使用 Eclipse 模拟 GPS 修复。这是有关如何执行此操作的 stackoverflow 问题的链接How to emulate GPS location in the Android Emulator?

于 2012-04-26T11:22:12.033 回答