getting location instantly in android(在android中立即获取位置)
问题描述
I want to click a button and receive the current location, i understand that i can't instantly get the location , so this is what i did : the click event :
public void onClick(View v)
{
ProgressDialog MyDialog = ProgressDialog.show( MainPage.this, " " , " Loading. Please wait ... ", true);
MyActionsHandler myActionsHandler = new myActionsHandler(MainPage.this);
myActionsHandler.startSearch();
MyDialog.dismiss();
Intent intent = new Intent(MainPage.this, ResultPage.class);
startActivity(intent);
}
and this is the handler that searches for the location
public void startSearch(long timeInterval,float distanceInterval)
{
LocationManager lm = (LocationManager)_context.getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, timeInterval,
distanceInterval, this);
while(!_locationFound)
{
//wait till location is found
}
}
public void onLocationChanged(Location location)
{
if (location != null)
{
double latitude = location.getLatitude();
double longitude = location.getLongitude();
float speed = location.getSpeed();
float bearing = location.getBearing();
Log.d("LOCATION CHANGED", location.getLatitude() + "");
Log.d("LOCATION CHANGED", location.getLongitude() + "");
try
{
doTheProcess(_searchType,latitude, longitude, speed, bearing);
_locationFound = true;
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
I understand that this doesn't work, because the loop is in the same thread, so what do you suggest the best solution to do it?
in the javadoc of requestLocationUpdates , there is "The calling thread must be a Looper thread such as the main thread of the calling Activity." but i haven't found any example so i don't know if it's the right solution.
one more question,
does the getLastKnownLocation()
work even i fi never called the locationManager before?
thanks
I have same problem before..but I have got the solution..this is the simplest way to get location instantly.
public class LocationFinder extends Activity {
TextView textView1;
Location currentLocation;
double currentLatitude,currentLongitude;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView1 = (TextView) findViewById(R.id.textView1);
Log.i("@@@@@@@@@@ Inside LocationFinder onCreate", "LocationFinder onCreate");
FindLocation();
}
public void FindLocation() {
LocationManager locationManager = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
updateLocation(location);
Toast.makeText(
LocationFinder.this,
String.valueOf(currentLatitude) + "
"
+ String.valueOf(currentLongitude), 5000)
.show();
}
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
public void onProviderEnabled(String provider) {
}
public void onProviderDisabled(String provider) {
}
};
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
}
void updateLocation(Location location) {
currentLocation = location;
currentLatitude = currentLocation.getLatitude();
currentLongitude = currentLocation.getLongitude();
textView1.setText(String.valueOf(currentLatitude) + "
"
+ String.valueOf(currentLongitude));
}
}
这篇关于在android中立即获取位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在android中立即获取位置
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
- android 4中的android RadioButton问题 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- Android - 拆分 Drawable 2022-01-01