当前位置: 首页 > 面试题库 >

位置返回NULL

闻人树
2023-03-14
问题内容

我正在编写一个返回经度和纬度的Android应用,但是location保留Null值。

请看看您是否能了解原因,整天困扰着我。代码如下:

public class example extends Activity {

    public static double latitude;
    public static double longitude;
    LocationManager lm;
    LocationListener ll;
    Location location;


  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.questions);


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

      ll = new MyLocationListener();

      lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
      //location = lm.getLastKnownLocation(lm.getBestProvider(criteria, true));

      Button b = (Button) findViewById(R.id.button2);
      b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
             int index1 = provider.indexOf("gps");
             if(index1 < 0)
                 // gps not enabled, call msgbox    
                 showMsgBox("GPS is off", "GPS is off. Turn it on?", "Turn on");
             else
            areWeThereYet(); }});
}

  private void areWeThereYet()
  {
      if(weAreThere())
      {
          toastMsg("in correct place");     
      }
      else if(location!=null)
          toastMsg("not there yet");
  }

private boolean weAreThere() {

     location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

    if (location!=null)
    {
        longitude = location.getLongitude();
        latitude = location.getLatitude();
        toastMsg(latitude + " " + longitude);
        return inCorrectPlace(question);
    }
    else
    {
        toastMsg("Location not ready yet");
        return false;
    }
}

private void toastMsg(String msg) {
        Toast toast = Toast.makeText(this, msg, 2000);
        toast.setGravity(Gravity.BOTTOM, 0, 0);
            toast.show();
}
}

问题答案:

如果自设备启动以来GPS从未获得过位置,则位置对象将为null。您可以做的一件事是尝试获取GPS位置和网络位置,然后检查两个位置是否都很好(或哪个更好)并使用该位置。



 类似资料:
  • 当我输入echo$JAVA_HOME时,我得到的是$JAVA_HOME,而不是jdk的位置。我正确设置了环境变量的路径: 变量名:JAVA_HOME变量值:C:\Program Files\Java\jdk1.70_25 我做错了什么?

  • 我有一个包含水平回收视图的具有底部表行为的碎片。回收视图由SnapHelper调整以实现页面效果。它看起来像这样: 在片段中的onCreateView事件中,我设置了Adapter和LayoutManager: 在我设置适配器之后,在MyRecycorAdapter类对象中触发onCreateViewHolder事件,然后是onBindViewHolder: 当我第一次创建这个片段并配置Recyc

  • 我一直在尝试获取我当前的位置更新,并按照Google的建议使用了融合位置提供商,但我无法获得任何更新。我在网上彻底搜索了,但找不到任何解决方案。融合提供商返回的位置甚至不接近我所在的位置,它显示了其他一些国家。有人能在这里帮我吗?

  • 当使用Vim和内置的netrw文件浏览支持浏览本地目录时,我想打开一个文件来查看它,然后返回文件列表中打开文件前的相同位置。 我通常浏览文件的方式是在netrw中按打开文件,然后当我完成查看文件,并且我想返回文件列表时,我按返回netrw视图,但是光标总是回到文件列表的顶部,这在我浏览典型目录时非常不方便。我想回到文件列表中我按Enter打开文件时所在的相同位置。 我知道我可以通过在netrw文件

  • 我想从我的回收器视图中的给定项目位置获取视图,但持有者总是为空,我不知道为什么。

  • 我有一个配置,我想从指定位置返回自定义错误。然而,我收到的却是标准的nginx错误页面。不过,我可以从未命名的位置获取自定义错误。 为了重现这个问题,我创建了这个简单的基于docker的设置: Dockerfile: 违约形态: 50x错误在这里并不有趣,我已经从nginx docker映像中调整了配置。 使用404以外的东西重定向到指定位置并没有什么区别。 404.html: 然后启动docke