嘿伙计们,所以我试图在用户和他们可以看到的卡片上的某个地方显示gps距离。问题是,我认为主线程一次分裂或做两件事。在下面的代码中,Android在if(flag)语句中执行代码时进行祝酒...所以它在不获取用户坐标的情况下干扰GPS差异...如何使它成为如此,如果(flag)语句首先继续在if语句之后和之外做吐司?
@Override
public void onResume()
{
super.onResume();
ImagePath = getIntent().getStringExtra("imagePath");
if(ImagePath == null)
{
Toast.makeText(this,"hello everyone",Toast.LENGTH_LONG).show();
}
if(newCardAdded)
{
flag = displayGpsStatus();
if(flag)
{
editLocation.setText("Please!! move your device to" +
" see the changes in coordinates." + "\nWait..");
pb.setVisibility(View.VISIBLE);
locationListener = new MyLocationListener();//LocationListener actually physically gets your location
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, locationListener);
}
else
{
alertbox("Gps Status!!", "Your GPS is: OFF");
}
Global_Class.getInstance().getValue().getlatitude = place_lat;
Global_Class.getInstance().getValue().getlongitutde = place_lon;
String gps_distance = String.valueOf(gps_difference(user_lon, user_lat,place_lon,place_lat));
Toast.makeText(this, gps_distance, Toast.LENGTH_LONG).show();
}
}
答案 0 :(得分:1)
LocationManager#requestLocationUpdates
您的locationListener
必须实施onLocationChanged(Location)
方法,该方法将针对每个位置更新进行调用。然后计算距离并在该方法中祝酒。由于requestLocationUpdates(...)
在另一个帖子中运行,因此无法确认它是否在Toast.makeText(...)
之前完成,因此您必须使用MyLocationListener
。