如何在Android中处理屋顶下的GPS

如何在Android中处理屋顶下的GPS,android,gps,Android,Gps,我已经创建了一个应用程序,它可以在数据库中获得相关的lat和long以及更新。问题是当我在房子或购物中心这样的屋顶下。。。我一直在我的应用程序上获得GPS搜索图标 我正在使用一个按钮触发Mylocation()及其侦听器 该按钮具有以下功能: locationListener = new MyLocationListener(); location.requestLocationUpdates(LocationManager.GPS_PROVIDE

我已经创建了一个应用程序,它可以在数据库中获得相关的lat和long以及更新。问题是当我在房子或购物中心这样的屋顶下。。。我一直在我的应用程序上获得GPS搜索图标

我正在使用一个按钮触发Mylocation()及其侦听器

该按钮具有以下功能:

locationListener = new MyLocationListener();                        
location.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, locationListener);
在mylocationlistener方法下

private class MyLocationListener implements LocationListener {
    @Override
    public void onLocationChanged(Location loc) {
        try {
            Thread.sleep(1000);
            Toast.makeText(getBaseContext(),"Location: Lat:" + loc.getLatitude() + " Lng:" + loc.getLongitude(),Toast.LENGTH_SHORT).show();
            location.removeUpdates(locationListener);
            location = null;
            finish();
          }
            catch (InterruptedException e) {
            e.printStackTrace();
        }
       }
我得到的值烤正常没有任何问题,应用程序完成一个GPS图标消失,但当我在屋顶和GPS图标在顶部继续搜索GPS。图标不会消失

我该如何解决这个问题?如果Gps信号良好,是否需要设置条件启动Gps如果不只是信息Gps信号不好。如果是,怎么做


谢谢

如本问题所述

因此,假设你真的是指信号强度,你可以通过
LocationManager.getGpsStatus()
得到
GpsStatus
,这会通过
getSatellites()
给你一个卫星列表,每个卫星都有一个信噪比(
getSnr()


<>你可以考虑使用网络定位服务,或者代替GPS。你也可以考虑添加超时。

我把下面的内容放在点击:GPSSTATSGPSSTATUS = Loist.GETGPSSTATE(NULL);if(gpsStatus!=null){locationListener=new MyLocationListener();location.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,5,locationListener);}否则{locationListener=new MyLocationListener();location.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,5000,5,locationListener);}没有变化,像以前一样吗?