onLocationChanged()不能被调用?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (1485)

我正在编写一个代码,它会带来当前的位置,但它不会给我这个位置,因为它从来不会调用onLocationChanged()。是否有任何方法可以找到位置。

mobileLocation在这种情况下即将到达0,所以执行进入else块。

我的代码是

public class FindLocation {
private LocationManager locManager;
private LocationListener locListener;
private Location mobileLocation;
private String provider;

public FindLocation(Context ctx){
    locManager = (LocationManager) ctx.getSystemService(Context.LOCATION_SERVICE);
    locListener = new LocationListener() {
        @Override
        public void onStatusChanged(String provider, int status,
                Bundle extras) {
        }
        @Override
        public void onProviderEnabled(String provider) {
        }
        @Override
        public void onProviderDisabled(String provider) {
        }
        @Override
        public void onLocationChanged(Location location) {
            System.out.println("mobile location is in listener="+location);
            mobileLocation = location;
        }
    };
    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, locListener);              
    if (mobileLocation != null) {
        locManager.removeUpdates(locListener); 
        String londitude = "Londitude: " + mobileLocation.getLongitude();
        String latitude = "Latitude: " + mobileLocation.getLatitude();
        String altitiude = "Altitiude: " + mobileLocation.getAltitude();
        String accuracy = "Accuracy: " + mobileLocation.getAccuracy();
        String time = "Time: " + mobileLocation.getTime();
        Toast.makeText(ctx, "Latitude is = "+latitude +"Longitude is ="+londitude, Toast.LENGTH_LONG).show();
    } else {
        System.out.println("in find location 4");
        Toast.makeText(ctx, "Sorry location is not determined", Toast.LENGTH_LONG).show();
    }
}
   }
提问于
用户回答回答于

可能是你的代码比LocationManager更快,后者可能还没有调用onLocationChanged()。更改代码以获得最后一个已知位置,或等到你的locListener被调用时:

locManager.requestLocationUpdates(
  LocationManager.GPS_PROVIDER, 1000, 1, locListener);
mobileLocation = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (mobileLocation != null) {

热门问答

智聆口语评测返回结果里面的评分为0?

1,音频文件要符合16khz采样率16bit位深单声道,如果是mp3文件码率要高于48kbps,否则评分可能会出现偏低或者0 2,VoiceType是否和传入的音频文件一致,文本和音频是否一致. 3,看下sessionId是否在每次评测的时候都是一样的结果导致的   4,在初次...... 展开详请

MGOBE Team Room 和Room 的区别是什么?

推荐已采纳
您好,createRoom 的 teamNumber 为1,如果需要使用不同的teamId区分玩家,可以使用createTeamRoom。roomType这个参数是标志,例如在matchRoom接口就需要输入roomtype作为参数,之后从房间列表中找到 roomType和max...... 展开详请

信鸽推送支持各大厂商的离线推送,点击离线消息怎么做到先启动应用到首页再跳转到要打开的消息界面?

您好,有两种方式实现: 方式一:直接使用默认打开app,然后在receiver里面解析参数再跳转到指定的页面。 方式二:使用intent打开主页面,然后在主页面里面解析参数再跳转到指定的页面。 参考文档配置:https://cloud.tencent.com/document/p...... 展开详请

基于腾讯云区块链平台开发了区块链应用,上线前,还需要提供其它材料备案么?

Nancy WU

腾讯云 · 高级产品经理 (已认证)

腾讯云区块链产品经理,与区块链一同成长,欢迎交流
推荐

腾讯云区块链TBaaS服务已获国家互联网信息办公室第一批境内区块链信息服务备案,基于TBaaS开发上线后的区块链应用程序建议根据《区块链信息服务管理规定》等有关规定获取备案相关信息。

【有奖互动】新年将至,如何过一个技术范的新年?

气象学家气象学家记录气象文献阅读、编程和气象相关资讯。感谢关注!欢迎加入气象AI和Python交流群!
;************************************************* ; Happy_new_year_2021.ncl ;************************************************ ; ; Concepts ...... 展开详请

Linux系统加了弹性网卡却不能从外部访问?

推荐
回答来自于问答智囊团成员:Htroy 专栏:https://cloud.tencent.com/developer/column/89781 为了给云服务器增加一个外网IP,实现单主机多 IP 部署,或者在一个CVM上接入到多个私有网络中,我们可以通过绑定弹性网卡的方式实现。...... 展开详请

所属标签

扫码关注云+社区

领取腾讯云代金券