我是Android开发的新手。在过去的几个月里,我构建了一个正在运行的应用程序。现在我想改进每次打开应用程序时困扰我的所有小事情。
在这种情况下,我尝试获得GPS(仅GPS)位置。无论何时进入位置更新,都应显示。
出于任何原因,第一个位置(我可以看到它们在调试日志中进入)将被忽略,并且不会显示在我的设备上。
以下是代码:
public class GpsLogging extends Activity{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gps_logging);
LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
}
public class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc)
{
double lat = loc.getLatitude();
double lon = loc.getLongitude();
float accuracy = loc.getAccuracy();
TextView textView = (TextView) findViewById(R.id.gpsPosition);
textView.setText("My current location is: \n" +
"Latitude = " + lat +"\n"+
"Longitude = " + lon +"\n"+
"Accuracy = " + accuracy +" m");
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
}
如果有人知道为什么忽略不准确的数据会很好。
这是相应的xml请求:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.example.GpsLogging">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/gpsPosition"
android:text="Aquiring GPS Position"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="46dp" />
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
答案 0 :(得分:0)
使用
.getLastKnownLocation()
方法
示例:
Location earlierLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
原因:您只需打印onLocationChanged(新gps)。