【发布时间】:2014-05-09 14:45:31
【问题描述】:
我现在正在一个项目中工作,我想使用 gps 获取用户的当前位置。我已经阅读了很多教程并尝试编写代码。该代码在模拟器中运行良好。每次我使用 DDMS 发送纬度和经度时,模拟器都会检测到。主要问题是它不适用于真实设备。虽然,我尝试过的设备可以访问互联网并且 GPS 是打开的。我已在清单文件中添加了所需的权限。
public class MainActivity extends Activity {
TextView lat;
TextView lon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lat=(TextView)findViewById(R.id.textView2);
lon=(TextView)findViewById(R.id.textView4);
LocationManager lm=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener ll=new myLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0, ll);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
class myLocationListener implements LocationListener{
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if(location!=null){
double pLat=location.getLatitude();
double pLong=location.getLongitude();
lat.setText(Double.toString(pLat));
lon.setText(Double.toString(pLong));
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
}
清单文件中的权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
我需要帮助。
【问题讨论】:
-
您可以将此库用于更简单的位置 API:github.com/delight-im/Android-SimpleLocation
-
@Marco W github.com/delight-im/Android-SimpleLocation 无法正常工作,它总是返回 0.0 纬度和经度。
-
@TejaDroid 这两个支持问题应该对您有所帮助:github.com/delight-im/Android-SimpleLocation/issues/3 和 github.com/delight-im/Android-SimpleLocation/issues/4