DDMS无法将位置发送到仿真程序。我试过只从DDMS发送位置,但模拟器仍然无法接收位置。当我单击“发送”按钮时,DDMS日志上不会显示任何内容。
我试着从telnet发送geo-fix,它返回ok,但实际上没有更新位置,或者如果它更新了,我无法通过我的应用程序读取它。
应用程序在设备中正常工作,能够捕获测试位置的详细信息,但无法捕获通过DDMS或Telnet发送到模拟器的位置数据。
我正在android 2.2模拟器上测试。有人能告诉我怎么了吗?
我的应用程序(下面)是用C语言编写的,用于Android,可能需要修复(我是一个新手,所有的东西都是Android的,所以我可能错过了一些东西)。onlocationchanged(location-location)似乎根本没有启动,就好像侦听器没有正确定义一样。感谢任何帮助。
注意:第一次运行此活动时,locationmanager.getLastKnownLocation为空,但无法访问测试提供程序内容。当我再次运行它时,getLastKnowLocation仍然为空,但是测试提供程序的内容被访问和设置。奇怪的。

[Activity(Label = "Location Demo")]
public class LocationActivity : Activity, ILocationListener
{
    private TextView _locationText;
    private LocationManager _locationManager;
    private StringBuilder _builder;
    private Geocoder _geocoder;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.LocationActivity);
        _geocoder = new Geocoder(this);
        _locationText = FindViewById<TextView>(Resource.Id.TextView1);
        _locationManager = (LocationManager)GetSystemService(LocationService);

        if (_locationManager.GetLastKnownLocation("gps") == null)
        {
            _locationManager.AddTestProvider("gps", false, false, false, false, false, false, false, 0, 5);
            _locationManager.SetTestProviderEnabled("gps", true);
            Location loc = new Location("gps");
            loc.Latitude = 50;
            loc.Longitude = 50;
            _locationManager.SetTestProviderLocation("gps", loc);
        }
        Location lastKnownLocation = _locationManager.GetLastKnownLocation("gps");

        if (lastKnownLocation != null)
        {
            _locationText.Text += string.Format("Last known location, lat: {0}, long: {1}", lastKnownLocation.Latitude, lastKnownLocation.Longitude);
        }
        else
        {
            _locationText.Text += string.Format("Last location unknown");
        }
        _locationManager.RequestLocationUpdates("gps", 5000, 2, this);
    }
    public void OnLocationChanged(Location location)
    {
        _locationText.Text += string.Format("Location updated, lat: {0}, long: {1}", location.Latitude, location.Longitude);
    }
    public void OnProviderDisabled(string provider){}
    public void OnProviderEnabled(string provider){}
    public void OnStatusChanged(string provider, Android.Locations.Availability availability, Bundle extras){}

}

感谢你让我走这么远。

最佳答案

我想问题可能在于你怎么打电话给RequestLocationUpdates()。第三个参数是设备在获得更新之前需要移动的最小距离,因此您告诉系统仅在设备移动2米后发送更新。如果它在一个真正的设备上工作,可能是因为你移动了超过6英尺。:)
尝试从RequestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this)开始。这将在实际设备上启动更新流,但在DDMS中按“发送”时仅会启动一个更新流。一旦成功了,我会从那里了解你多久得到一次更新。
此外,启动模拟器时,GetLastKnownLocation()始终为空。它更适合于设备,因为它可以将网络位置作为初始估计发送给您,或者如果最近有其他程序正在使用它,则发送给GPS位置。
编辑
这也可能是权限问题。通常,您需要更改AndroidManifest.xml以获取GPS访问。线路是

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

查看文档here

关于android - 使用DDMS,telnet或任何其他方式将GPS坐标发送到Android仿真器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8897387/

10-11 22:14
查看更多