【问题标题】:Android GPS app not working on EmulatorAndroid GPS 应用无法在模拟器上运行
【发布时间】:2012-05-06 23:23:34
【问题描述】:

我没有成功尝试让 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) {
    }
    }
}

onProviderDisabledonProviderEnabledonStatusChanged 三种方法都有 @override 注释。我不得不删除它们,因为 Eclipse 给出了这些方法没有覆盖超类的错误。

我已在清单文件中添加了权限(ACCESS_FINE_LOCATIONACCESS_MOCK_LOCATIONACCESS_COARSE_LOCATIONINTERNET)。

有人知道我做错了什么吗?

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

【问题讨论】:

    标签: android android-emulator


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。我不认为我可以添加 NETWORK_PROVIDER,因为我正在模拟器上测试它。而且我已经将 GPS_PROVIDER 作为参数传递给 requestLocationUpdates 方法。
    • 表示您正在模拟器中测试基于 gps 的应用程序?
    • 是的,但如果您愿意,您可以同时使用这两个提供商。无论如何,如果您在模拟器上对其进行测试,您是否通过然后模拟位置修复?从命令行或eclipse。因为在模拟器上,只有当您模拟位置修复时,应用才会获得位置更新。
    • 是的,我正在使用模拟器来测试这个应用程序。我不知道模拟器的位置模拟。这就像传递一些论点吗?我会搜索如何做到这一点。非常感谢。
    • @gkris 很高兴能提供帮助。如果有帮助,请记住接受答案。我添加了一个关于在模拟器上模拟 gps 修复的问题的链接。您可以使用它来执行此操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    相关资源
    最近更新 更多