本问题已经有最佳答案,请猛点这里访问。

在以下场景中获取android当前位置的最佳方法是什么,

如果GPS不可用,请从网络提供商处获取位置

如果GPS可用并且可以获得当前位置,请从GPS提供商处获取位置

如果GPS可用但无法获得当前位置(即连续搜索位置),请从网络提供商处获取位置。

现在如果gps不可用,我可以从网络获取位置,我们非常感谢满足上述情况的最佳答案。 提前致谢。

查看此库:code.google.com/p/little-fluffy-location-library

你有没有看看旧帖子1. stackoverflow.com/questions/1513485/… 2. stackoverflow.com/questions/3145089/…

最简单的方法是使用这样的高级库:github.com/delight-im/Android-SimpleLocation

好吧,你可以使用Timer和TimerTask类。

LocationManager manager;

TimerTask mTimertask;

GPSLocationListener mGPSLocationListener;

int i = 0; //Here i works as counter;

private static final int MAX_ATTEMPTS = 250;

public void getCurrentLocation() {

manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

mGPSLocationListener = new GPSLocationListener();

manager.addGpsStatusListener(mGPSStatusListener);

mTimerTask = new LocTimerTask(LocationManager.GPS_PROVIDER);

if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

Log.v(TAG,"GPS ENABLED");

manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L,

50.0f, mGPSLocationListener);

} else {

turnGPSOn();

manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L,

50.0f, mGPSLocationListener);

}

if(manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {

manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000L,

50.0f, mNetworkLocationListener);

}

if (manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {

Log.v(TAG,"GPS ENABLED");

manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,

1000L, 50.0f, mGPSLocationListener);

}

myLocTimer = new Timer("LocationRunner", true);

myLocTimer.schedule(mTimerTask, 0, 500);

}

GPSStatusListener

private GpsStatus.Listener mGPSStatusListener = new GpsStatus.Listener() {

@Override

public synchronized void onGpsStatusChanged(int event) {

switch (event) {

case GpsStatus.GPS_EVENT_SATELLITE_STATUS:

Log.v(TAG,"GPS SAtellitestatus");

GpsStatus status = manager.getGpsStatus(null);

mSattelites = 0;

Iterable list = status.getSatellites();

for (GpsSatellite satellite : list) {

if (satellite.usedInFix()) {

mSattelites++;

}

}

break;

case GpsStatus.GPS_EVENT_FIRST_FIX:

/*

* Toast.makeText(getApplicationContext(),"Got First Fix",

* Toast.LENGTH_LONG).show();

*/

break;

case GpsStatus.GPS_EVENT_STARTED:

/*

* Toast.makeText(getApplicationContext(),"GPS Event Started",

* Toast.LENGTH_LONG).show();

*/

break;

case GpsStatus.GPS_EVENT_STOPPED:

/*

* Toast.makeText(getApplicationContext(),"GPS Event Stopped",

* Toast.LENGTH_LONG).show();

*/

break;

default:

break;

}

}

};

LocationListener的

public class GPSLocationListener implements LocationListener {

@Override

public void onLocationChanged(Location argLocation) {

location = argLocation;

}

public void onProviderDisabled(String provider) {

}

public void onProviderEnabled(String provider) {

}

public void onStatusChanged(String provider, int status, Bundle extras) {

}

}

TimerTask类

class LocTimerTask extends TimerTask {

String provider;

public LocTimerTask(String provider) {

this.provider = provider;

}

final Handler mHandler = new Handler(Looper.getMainLooper());

Runnable r = new Runnable() {

@Override

public void run() {

i++;

Log.v(TAG,"Timer Task run" + i);

location = manager.getLastKnownLocation(provider);

if (location != null) {

Log.v(TAG,"in timer task run in if location not null");

isGPS = true;

onLocationReceived(location);

myLocTimer.cancel();

myLocTimer.purge();

mTimerTask.cancel();

return;

} else {

Log.v(TAG,"in timer task run in else location null");

isGPS = false;

if (location == null && i == MAX_ATTEMPTS) {

Log.v(TAG,"if 1 max attempts done");

turnGPSOff();

location = manager

.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

if (location != null) {

Log.v(TAG,

"if 1 max attempts done Location from network not null");

Log.v(TAG,

"if 1 max attempts done Location from network not null coordinates not null");

onLocationReceived(location);

myLocTimer.cancel();

myLocTimer.purge();

mTimerTask.cancel();

return;

}

} else {

return;

}

}

i = 0;

}

};

public void run() {

mHandler.post(r);

}

}

这里计时器已经安排在每500毫秒运行一次。意味着,每500毫秒执行一次计时器任务的run method。在运行方法尝试获取GPS提供商的位置特定号码。尝试(此处为MAX_ATTEMPTS)表示5或10.如果它在指定的no内获得位置。然后,如果counter(Here i)值超过MAX_ATTEMPTS,则尝试使用该位置,然后从Network Provider获取位置。在获取位置时,我已将该位置传递给回调方法onLocationReceived(Location mLoc),您可以在其中进一步处理位置数据。以下是使用回调方法的方法:

倾听者

public interface OnLocationReceivedListener {

public void onLocationReceived(Location mLoc); //callback method which will be defined in your class.

}

您的类应该实现上面定义的侦听器。在你的班上:

@Override

public void onLocationReceived(Location mLoc) {

//Do your stuff

}

希望能帮助到你。如果有人有更好的方法,请告诉我。

班级成员boolean mIsGpsFix;

请求Gps位置更新并设置倒数计时器

mCountDown.start();

private CountDownTimer mCountDown = new CountDownTimer(time to wait for Gps fix, same as right)

{

@Override

public void onTick(long millisUntilFinished)

{

}

@Override

public void onFinish()

{

// No fix after the desire amount of time collapse

if (!mIsGpsFix)

// Register for Network

}

};

If GPS is available and can get current location,

对于上述问题,您可以尝试这样做..

使用此功能,您可以获取当前位置的纬度和经度,然后传递该值以获取地图。

public class MyLocationListener implements LocationListener

{

@Override

public void onLocationChanged(Location loc)

{

loc.getLatitude();

loc.getLongitude();

String Text ="My current location is:" +

"Latitud =" + loc.getLatitude() +

"Longitud =" + loc.getLongitude();

Toast.makeText( getApplicationContext(),

Text,

Toast.LENGTH_SHORT).show();

}

@Override

public void onProviderDisabled(String provider)

{

Toast.makeText( getApplicationContext(),

"Gps Disabled",

Toast.LENGTH_SHORT ).show();

}

@Override

public void onProviderEnabled(String provider)

{

Toast.makeText( getApplicationContext(),

"Gps Enabled",

Toast.LENGTH_SHORT).show();

}

@Override

public void onStatusChanged(String provider, int status, Bundle extras)

{

}

}

}

android获取拍摄视频的gps,关于gps:Android获取当前位置的最佳方式相关推荐

  1. Android GPS应用:动态获取位置信息

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 在上文中,介绍了GPS概念及Android开发GPS应用涉及到的常用类和方法.在本文中,开发一个小应用,实时获 ...

  2. android gps 室内,如何快速获取纬度和经度或GPS数据,而我们在室内的Android手机?...

    我试图从android手机通过GPS获取纬度和经度信息,当我在室外或直接在天空下时,我可以立即获得值,但是当我在室内或室内时花费超过一分钟才能获得价值.任何人都可以帮助我在房间内使用我的应用程序时快速 ...

  3. Android 完美解决9.0的机型,必须请求GPS权限并打开GPS才可以正确获取到WIFI名称

    //获取SSID//完美解决9.0的机型,必须请求GPS权限并打开GPS才可以正确获取到WIFI名称private String getNetConfListForSSID(){String ssid ...

  4. 【Android】【GIS】通过GPS传感器获取海拔

    使用条件 打开了位置开关 授予了软件位置权限 有GPS信号,即头顶空旷的地方 室内虽然也能定位,但实际是通过wifi等进行辅助定位的 想要获取海拔,必须通过GPS定位的方式才行,即必须有卫星信号 获取 ...

  5. android中实现GPS定位功能,Android中实现GPS定位的简单例子

    今天弄了一个多小时,写了一个GPS获取地理位置代码的小例子,包括参考了网上的一些代码,并且对代码进行了一些修改,希望对大家的帮助.具体代码如下:  要实用Adnroid平台的GPS设备,首先需要添加上 ...

  6. GPS定位系统(二)——Android端

    前言 GPS系列--Android端,github项目地址 tag: gps_mine Android移动端,主要是使用高德地图定位,后台上传定位信息,然后就是想办法尽量保活. 包括两个小功能:1.上 ...

  7. Android使用Google Map服务 - 根据GPS信息在地图上定位

    Android使用Google Map服务 - 根据GPS信息在地图上定位 自暑假7月7日开始,到今天的8月7日,整个一个月,我总算是学到了Google Map这部分的内容.原本挺兴奋的,却被注册ap ...

  8. 高通MSM8255 GPS 调试分析Android系统之Broadcom GPS 移植

    http://blog.csdn.net/dwyane_zhang/article/details/6775738 没事做整理一下GPS的流程,也算给自己一个交代. 1.硬件抽象层: 高通MSM的硬件 ...

  9. android 定位 广播,android - 如何触发广播接收器在GPS开启/关闭? - SO中文参考 - www.soinside.com...

    如何触发广播接收器在GPS开启/关闭? 问题描述 投票:35回答:5 public class BootReceiver extends BroadcastReceiver { @Override p ...

最新文章

  1. 服务器维护怎么联系抖音客服,如何联系抖音客服?
  2. 哪些“双一流”更得华为偏爱?这所高校人数远超清北华五
  3. 用Python不回头也能看美女,这招你会了吗?
  4. 【Flask项目2】创建用户模块的蓝图(7)
  5. 遍历元素根据状态显示不同颜色
  6. CentOS 7 各个版本的区别
  7. IOS CoreData 简单使用CURD
  8. MapX历史轨迹回放[开发源代码]:
  9. php连接Access实例
  10. 基于iOS用CoreImage实现人脸识别
  11. java工厂模式应用场景_详解Java设计模式之《简单工厂模式》
  12. 现代制造技术——金属切削原理
  13. 宝塔解析域名至8000端口(多url)
  14. oem persist sysinfo三个分区的作用是什么?
  15. 三菱服务器显示d1d2,三菱PLC指令SMOV D2 K2 K2 D1 K3详解
  16. UiAutomator Android 的自动测试框架(基础)
  17. 获取MPU9250九轴数据--以四轴飞行器姿态解算为例
  18. Flutter自定义背景色渐变 按钮 组件
  19. 计算机是如何做加法的?(7)——回顾与总结
  20. Matlab求解定积分/不定积分/微分

热门文章

  1. 禁用计算机的网络连接无线网络连接不上,win7笔记本电脑无线网络连接不上怎么解决?...
  2. leetcode:55. 跳跃游戏【经典贪心】
  3. union和union all的性能差别居然这么大!!
  4. 大气数据计算机英语,数字大气数据计算机,DADC Digital Air Data Computer,音标,读音,翻译,英文例句,英语词典...
  5. ppt如何转换为pdf
  6. (附源码)springboot游戏道具在线交易平台 毕业设计171956
  7. 短网址生成链接接口平台推荐--新浪T.CN短链接 腾讯URL短链接生成地址
  8. NGINX中的的请求头x_real_ip和x_forwarded_for
  9. 数据库之十二星座 ---- 狮子座的獠牙
  10. 预测海藻数量(R语言)