Android - 模拟器上的错误测试GPS

时间:2011-11-25 05:10:05

标签: android android-emulator android-manifest

我想在我的Android模拟器上测试GPS,但是当我尝试在模拟器上运行时,我发现我的应用程序有错误“意外停止”。

这里有一些我的代码 的AndroidManifest.xml

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

和main.java

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    LocationManager locationManager;
    String context = Context.LOCATION_SERVICE;
    locationManager = (LocationManager)getSystemService(context);

    String provider = LocationManager.GPS_PROVIDER;
    Location location = locationManager.getLastKnownLocation(provider);
    updateWithNewLocation(location);
}

private void updateWithNewLocation(Location location){
    String latLongString;
    TextView myLocationText;
    myLocationText = (TextView)findViewById(R.id.myLocationText);
    if(location != null){
        double lat = location.getLatitude();
        double lng = location.getLongitude();
        latLongString = "Lat:" + lat + "\nLong:" + lng;
    }else{
        latLongString = "No location found";
    }
    myLocationText.setText("Your Current Position is: \n" + latLongString);
}

导入我的main.java

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;

当你试图在我的模拟器上运行时,你会告诉我为什么我的应用程序会出现错误“意外停止”吗?

感谢您帮助我:)

跟踪错误:“java.lang.NullPointerException” 我一直在使用DDMS来设置long和lat: 长:112.8010100 lat:-7.2950700

1 个答案:

答案 0 :(得分:2)

您可以在模拟器中模拟位置

提供模拟位置数据

在开发应用程序时,您肯定需要测试一下 获取用户位置的模型有效。这是最容易完成的 使用真正的Android驱动 设备。但是,如果您没有设备,您仍然可以测试您的设备 基于位置的功能,通过在Android模拟器中模拟位置数据。 发送应用程序模拟位置数据有三种不同的方法: 在模拟器控制台中使用Eclipse,DDMS或“geo”命令。

注意:提供模拟位置数据作为GPS位置数据注入,  所以你必须从GPS_PROVIDER请求位置更新才能进行模拟  位置数据工作。

使用Eclipse

选择窗口&gt;显示视图&gt;其他&gt;仿真器控制。

在“模拟器控制”面板中,输入GPS坐标 在位置控制下作为单独的纬度/经度坐标,  用于路由回放的GPX文件或用于的KML文件 多个地方标记。 (确保选择了设备  在“设备”面板中 - 可从Window&gt;获得显示视图&gt;其他&gt;设备)。

使用DDMS

使用DDMS工具,您可以通过几种不同的方式模拟位置数据:

手动将单独的经度/纬度坐标发送到设备。 使用描述要回放到设备的路由的GPX文件。 使用描述序列的单个位置标记的KML文件 播放到设备。 有关使用DDMS欺骗位置数据的更多信息,请参阅使用DDMS。

在模拟器控制台中使用“geo”命令

从命令行发送模拟位置数据:

在Android模拟器中启动您的应用程序并打开终端/控制台  在SDK的/ tools目录中。 连接到模拟器控制台: telnet localhost 发送位置数据: geo fix发送固定的地理位置。 此命令接受十进制度数的经度和纬度  可选的海拔高度(米)。例如: geo fix -121.45356 46.51119 4392 geo nmea发送NMEA 0183句子。 此命令接受单个“$ GPGGA”类型的NMEA句子(修复数据)或 '$ GPRMC'(公交数据)。例如: geo nmea $ GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E * 62 有关如何连接到模拟器控制台的信息,请参阅使用 模拟器控制台。