我想测试一下在Android上使用GPS的简单简介。所以我写了一个简单的代码:
public class main extends Activity{
LocationManager mLocationManager;
TextView tv;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.myLocationText);
mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String locationprovider = mLocationManager.getBestProvider(criteria, true);
Location mLocation = mLocationManager.getLastKnownLocation(locationprovider);
tv.setText("Last location lat:" + mLocation.getLatitude() + "long:" + mLocation.getLongitude());
}
}
另外,在AndroidManifest上我添加了如下使用权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
但是当我尝试在Android模拟器上运行时,我得到错误“意外停止”并关闭此应用程序。我也加入了DDMS的尝试。但我对这个错误一无所知。
答案 0 :(得分:2)
我在实际设备中也遇到了类似的问题。听众接收新位置的频率太高,无法更新我的TextViev。我通过一些同步解决了它,如果当时正在刷新,则跳过View刷新。
在您的情况下,由于您没有使用听众,我会检查NullPointerExceptions
。
答案 1 :(得分:1)
您可能没有将Android API用于Android模拟器,这就是为什么您无法访问GoogleMapAPı并导致崩溃的原因。
选中此项以获取有关设置模拟器以供地图使用的更多信息。
http://code.google.com/android/add-ons/google-apis/maps-overview.html
答案 2 :(得分:1)
这是因为您在模拟器中使用它并且它没有任何与gps相关的硬件。
这是一个解决方案
从命令行发送模拟位置数据:
在Android模拟器中启动您的应用程序,并在SDK的/ tools目录中打开终端/控制台。 连接到模拟器控制台:
telnet localhost <console-port>
发送位置数据: 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
来源:http://developer.android.com/guide/topics/location/obtaining-user-location.html
另见此链接:http://developer.android.com/guide/developing/devices/emulator.html#console
答案 3 :(得分:0)
这是API KEY
个问题。您可以尝试在Google地图API密钥上申请新的API KEY
您的代码是正确的,没有显示任何错误。
也许这个答案可以帮助您解决问题。