Android:从 DDMS 接收错误的值

Posted

技术标签:

【中文标题】Android:从 DDMS 接收错误的值【英文标题】:Android: Receive wrong values from DDMS 【发布时间】:2012-03-27 10:37:06 【问题描述】:

我想从 DDMS 接收一个浮点值,但它发送一个整数 示例:

经度:2.351696 纬度:48.857593

但我收到:

经度:2.0 纬度:48.0

我怎样才能做到这一点?

这是我的代码:

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);

    


    @Override
    public void onLocationChanged(Location location) 
        latitude = location.getLatitude();
        longitude = location.getLongitude();
        if (location != null) 
            Toast.makeText(this, "ma position :" + latitude + ", " + longitude,
                    Toast.LENGTH_LONG).show();
            Log.i("latitude", "" + latitude);
            Log.i("longitude", "" + longitude);

        

日志:

03-27 09:25:20.163: I/纬度(793): 48.0 03-27 09:25:20.163: I/经度(793): 2.0


private double getDistanceBetweenPoints(double lat1, double long2, double arrive_lat,double arrive_long) 

        int R = 6371; // km

        double dLat = Math.toRadians(arrive_lat - lat1);
        double dLon = Math.toRadians(arrive_long - long2);

        double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
                + Math.cos(Math.toRadians(lat1))
                * Math.cos(Math.toRadians(arrive_lat)) * Math.sin(dLon / 2)
                * Math.sin(dLon / 2);
        double c = 2 * Math.asin(Math.sqrt(a));
        double d = R * c;

        return d*1000;
    

【问题讨论】:

DDMS 是 ADK 调试监视器服务。您只是在 Logcat 输出中看到整数吗?如果是这样,请发布输出消息的代码 我使用这些值来计算 2 点 gps 之间的距离,我得到了错误的结果,因此来自 DDMS 的值是错误的。 Location.getLatitude() 返回一个 double,并且在 logcat (48.0) 中输出一个 double。我会调试你的应用程序并在运行时检查纬度和经度的值。 另外,你是在模拟器还是带 GPS 的手机上运行它? Log.i("distance1", ""+this.getDistanceBetweenPoints(48.857593,2.351696,48.858786, 2.348435)); Log.i("distance2", ""+this.getDistanceBetweenPoints(纬度,经度,48.858786, 2.348435));当我输入静态纬度和经度时,第一个距离是正确的,但是当我使用来自 DDMS 的值时,第二个距离是错误的 【参考方案1】:

在模拟器中运行是这里的问题。您的 PC 没有 GPS 芯片,因此您无法获得非常准确的坐标。

有关如何模拟准确地理位置的更多信息和帮助: http://developer.android.com/guide/topics/location/obtaining-user-location.html

之前在***上讨论过...... GPS accuracy of Android Emulator

【讨论】:

Log.i("distance1", ""+this.getDistanceBetweenPoints(48.857593,2.351696,48.864694, 2.351922)); Log.i("distance2", ""+this.getDistanceBetweenPoints(latitude,longitude,48.864694, 2.351922));当我输入静态值时第一个距离是正确的,但当我使用来自 DDMS 的值时第二个是错误的 您需要在 getDistanceBetweenPoints() 方法中发布代码,然后我才能对其发表评论;) 我贴了但是方法的代码没有错;问题是我如何从 ddms 接收浮点值而不是整数:) 我建议你编写一些单元测试来断言你的 distanceBetweenTwoPoints 方法的输出,并发现它是否真的正常工作。 它起作用了,因为我在日志“distance1”中返回了正确的结果

以上是关于Android:从 DDMS 接收错误的值的主要内容,如果未能解决你的问题,请参考以下文章

DDMS

开发调试工具----DDMS

如何从 DDMS 中的 Android 可穿戴设备获取 logcat 消息/堆栈跟踪

android逆向-DDMS logcat 包名显示问号--坎坷解决

android逆向-DDMS logcat 包名显示问号--坎坷解决

android DDMS工具的正确使用方法