Android 获取坐标
2012-04-24 14:32
148 查看
依赖包 android.location 关键类 LocationManager
两种方式获得坐标,GPS和Android's Newwork Location Provider,这里通过GPS获取坐标(只能在户外起作用,耗电较多,更新不及时,但是较精确)
实现步骤:
1.获得LocationManager,实现LocationListener并将LocaitonListener绑定到LocationManager
2.在manifest中获得权限
3.快速获得上次获得的坐标
4.为模拟器提供虚拟的坐标位置
在Emulator Control中配置坐标
5.如何判断当前的坐标是最新的最准确的坐标
两种方式获得坐标,GPS和Android's Newwork Location Provider,这里通过GPS获取坐标(只能在户外起作用,耗电较多,更新不及时,但是较精确)
实现步骤:
1.获得LocationManager,实现LocationListener并将LocaitonListener绑定到LocationManager
// Acquire a reference to the system Location Manager LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); // Define a listener that responds to location updates LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { // Called when a new location is found by the network location provider. makeUseOfNewLocation(location); } public void onStatusChanged(String provider, int status, Bundle extras) {} public void onProviderEnabled(String provider) {} public void onProviderDisabled(String provider) {} }; // Register the listener with the Location Manager to receive location updates locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
2.在manifest中获得权限
<manifest ... > <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ... </manifest>
3.快速获得上次获得的坐标
LocationProvider locationProvider = LocationManager.GPS_PROVIDER; Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);
4.为模拟器提供虚拟的坐标位置
在Emulator Control中配置坐标
5.如何判断当前的坐标是最新的最准确的坐标
private static final int TWO_MINUTES = 1000 * 60 * 2; /** Determines whether one Location reading is better than the current Location fix * @param location The new Location that you want to evaluate * @param currentBestLocation The current Location fix, to which you want to compare the new one */ protected boolean isBetterLocation(Location location, Location currentBestLocation) { if (currentBestLocation == null) { // A new location is always better than no location return true; } // Check whether the new location fix is newer or older long timeDelta = location.getTime() - currentBestLocation.getTime(); boolean isSignificantlyNewer = timeDelta > TWO_MINUTES; boolean isSignificantlyOlder = timeDelta < -TWO_MINUTES; boolean isNewer = timeDelta > 0; // If it's been more than two minutes since the current location, use the new location // because the user has likely moved if (isSignificantlyNewer) { return true; // If the new location is more than two minutes older, it must be worse } else if (isSignificantlyOlder) { return false; } // Check whether the new location fix is more or less accurate int accuracyDelta = (int) (location.getAccuracy() - currentBestLocation.getAccuracy()); boolean isLessAccurate = accuracyDelta > 0; boolean isMoreAccurate = accuracyDelta < 0; boolean isSignificantlyLessAccurate = accuracyDelta > 200; // Check if the old and new location are from the same provider boolean isFromSameProvider = isSameProvider(location.getProvider(), currentBestLocation.getProvider()); // Determine location quality using a combination of timeliness and accuracy if (isMoreAccurate) { return true; } else if (isNewer && !isLessAccurate) { return true; } else if (isNewer && !isSignificantlyLessAccurate && isFromSameProvider) { return true; } return false; } /** Checks whether two providers are the same */ private boolean isSameProvider(String provider1, String provider2) { if (provider1 == null) { return provider2 == null; } return provider1.equals(provider2); }
相关文章推荐
- 【Android开发技巧】 - 如何获取应用Shortcut在Launcher坐标信息
- Android高德获取逆地址编码(经纬度坐标-地址描述如省市区街道)
- Android获取view某个坐标的颜色值,更改状态栏颜色
- Android 获取View的 left、right、top、buttom、以及x、y坐标的方法
- android: onKeyDown以及获取屏幕的点的坐标
- Android获取坐标细则
- [置顶] Android必知必会-获取View坐标和长宽的时机
- Android 获取按钮Button的高度、宽度、坐标
- android项目获取经纬坐标
- 【Android】手机地图功能——利用手机GPS获取用户地理坐标
- Android 3种坐标系、View在各坐标系下获取自身坐标的方法、View的滑动和scroll方法
- android view获取在屏幕上的绝对坐标
- Android 根据坐标获取控件方法
- android获取自己定义控件位置坐标,屏幕尺寸,标题栏,状态栏高度
- Android获取基站坐标代码
- Android 根据坐标获取控件方法
- android获取控件坐标
- android 百度地图获取左上角和右下角的坐标
- android触屏获取坐标
- Android开发——后台获取用户点击位置坐标(可获取用户支付宝密码)