为什么我的NETWORK_PROVIDER突然停止呼叫onLocationChanged? [英] Why has my NETWORK_PROVIDER suddenly stopped calling onLocationChanged?

查看:260
本文介绍了为什么我的NETWORK_PROVIDER突然停止呼叫onLocationChanged?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的GPS应用我的 NETWORK_PROVIDER 已停止工作突然。它无关,与我的互联网连接,因为我的手机上所有其他应用程序使用互联网。我试了一下用 GPS_PROVIDER 和它的作品完美的罚款,并在此基础之上,要求在 onLocationChanged 它能够检索从互联网上的位置,所以这进一步恢复了,互联网作品。

我的电话:


  • 三星Galaxy S2

  • Android版本4.0.3

事情我都试过无济于事:


  • 清理项目

  • 测试在不同的位置之外。再次同,GPS工作原理,但网络服务提供者不支持。

  • 重新启动手机/ ON OFF开关电话

  • 在手机应用程序卸载后重新安装

  • 在谈到互联网和关闭

我再说一遍,一切工作正常,然后突然停止它没有理由的工作。我在此过渡期间并没有改变我的code,无论如何都没有。

不过,这里是我的code的部分在这里它是在引擎收录 http://pastebin.com/itrXgWr7

这是第一次调用,它能够进入如果(networkEnabled),然后在LogCat中它打印出从网络提供商获取更新

  networkEnabled = providerHandler.isNetworkEnabled();
GPSEnabled = providerHandler.isGPSEnabled();如果(GPSEnabled&安培;!&安培;!networkEnabled)
{
    Toast.makeText(这一点,错误:此应用程序需要一个GPS或网络连接
            Toast.LENGTH_SHORT).show();
}
其他
{
    如果(GPSEnabled)
    {
        locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,这一点);
    }
    否则,如果(networkEnabled)
    {
        的System.out.println(充分利用网络提供商的更新);
        locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,这一点);
    }
}

这是LocationListener的。 onLocationChanged从未被称为与 NETWORK_PROVIDER 。我再次重申,它习惯叫它但现在不是了。什么,当我关闭GPS发生,而不是在于onProviderDisabled被称为马上,给我禁用提供商网络的敬酒消息。这是与WiFi和移动互联网接通:

  //获取当前位置的经度和纬度,并用它来获得周围的标记。
@覆盖
公共无效onLocationChanged(地点)
{
    //获取坐标
    双纬度=(location.getLatitude());
    双经度=(location.getLongitude());
    Log.d(MainActivity,得到的位置:+纬度+:+ LNG);
    //获取最近的位置
    新的getLocations()执行(SharedVariables.root + SharedVariables.locationsController + SharedVariables.getNearestMethod +纬度+/+ LNG)。    //放大,动画镜头标记已放置后,
    map.animateCamera(CameraUpdateFactory.newLatLngZoom(新经纬度(纬度,经度),10));
    的System.out.println(纬度=+纬度+,LNG =+ LNG);     //停止监听更新。我们只想做一次。
     locManager.removeUpdates(本);
}
公共无效onProviderDisabled(字符串提供商)
{
  Toast.makeText(MainActivity.this,残疾人提供+供应商,
        Toast.LENGTH_SHORT).show();
}公共无效onProviderEnabled(字符串提供商)
{
      Toast.makeText(MainActivity.this,已启用新的供应商+供应商,
                Toast.LENGTH_SHORT).show();
}公共无效onStatusChanged(字符串提供商,INT状态,
                              捆绑演员)
{
  //所需的接口,而不是使用
}

我在XML文件中的所有必要的权限,你可以看到:

 <使用许可权的android:NAME =com.example.neatspots.permission.MAPS_RECEIVE/>
<使用许可权的android:NAME =android.permission.INTERNET对/>
<使用许可权的android:NAME =android.permission.WRITE_EXTERNAL_STORAG​​E/>
<使用许可权的android:NAME =com.google.android.providers.gsf.permission.READ_GSERVICES/>
<使用许可权的android:NAME =android.permission.ACCESS_COARSE_LOCATION/>
<使用许可权的android:NAME =android.permission.ACCESS_FINE_LOCATION/>
<使用许可权的android:NAME =android.permission.ACCESS_NETWORK_STATE/>

这是我的LogCat中:

  03-08 14:27:58.663:D / dalvikvm(4176):GC_CONCURRENT释放223K,3%的自由9072K / 9351K,暂停2MS + 2ms的
03-08 14:27:58.823:D / dalvikvm(4176):GC_CONCURRENT释放272K,4%免​​费9239K / 9607K,暂停2MS + 2ms的
03-08 14:27:58.948:D / dalvikvm(4176):GC_CONCURRENT释放263K,4%免​​费9545K / 9863K,暂停2MS + 3ms的
03-08 14:27:59.018:D / dalvikvm(4176):GC_FOR_ALLOC释放76K,3%的自由9742K / 9991K,暂停29ms
03-08 14:27:59.048:我/的System.out(4176):GPS:假的
03-08 14:27:59.048:我/的System.out(4176):网络:真
03-08 14:27:59.048:我/的System.out(4176):从网络提供商获取更新
03-08 14:27:59.063:D /的SensorManager(4176):====>>>>>民传感器:1
03-08 14:27:59.063:D /的SensorManager(4176):====>>>>>民传感器:2
03-08 14:27:59.068:D /的SensorManager(4176):====>>>>>民传感器:3
03-08 14:27:59.068:D /的SensorManager(4176):====>>>>>民传感器:4
03-08 14:27:59.068:D /的SensorManager(4176):====>>>>>民传感器:5
03-08 14:27:59.068:D /的SensorManager(4176):====>>>>>民传感器:6
03-08 14:27:59.068:D /的SensorManager(4176):====>>>>>民传感器:7
03-08 14:27:59.068:D /的SensorManager(4176):====>>>>>民传感器:8
03-08 14:27:59.068:D /的SensorManager(4176):====>>>>>民传感器:9
03-08 14:27:59.068:D /的SensorManager(4176):====>>>>>民传感器:10
03-08 14:27:59.068:D /的SensorManager(4176):====>>>>>民传感器:0
03-08 14:27:59.068:D /的SensorManager(4176):registerListener ::手柄= 0名= K3DH加速度传感器延迟= 20000 =监听maps.h.a@414cb1e0
03-08 14:27:59.068:E /的SensorManager(4176):线程启动
03-08 14:27:59.068:E /的SensorManager(4176):=======>>>传感器螺纹跑步与LT;<< ========
03-08 14:27:59.208:D / libEGL(4176):加载/system/lib/egl/libEGL_mali.so
03-08 14:27:59.213:D / libEGL(4176):加载/system/lib/egl/libGLESv1_CM_mali.so
03-08 14:27:59.218:D / libEGL(4176):加载/system/lib/egl/libGLESv2_mali.so
03-08 14:27:59.228:D /(4176):设备驱动程序API匹配
03-08 14:27:59.228:D /(4176):设备驱动程序API版本:10
03-08 14:27:59.228:D /(4176):用户空间API版本:10
03-08 14:27:59.233:D /(4176):马里:版本=的Linux r2p4-02rel0 BUILD_DATE =周一3月5日9点47分55秒KST 2012
03-08 14:27:59.303:D / dalvikvm(4176):GC_FOR_ALLOC释放143K,3%的自由10004K / 10247K,暂停14MS
03-08 14:27:59.368:D / dalvikvm(4176):GC_CONCURRENT释放194K,免费4%10276K / 10631K,暂停1毫秒+ 2ms的
03-08 14:27:59.418:D / dalvikvm(4176):GC_FOR_ALLOC释放598K,8%的免费10022K / 10823K,暂停23MS
03-08 14:27:59.523:D / dalvikvm(4176):GC_CONCURRENT释放365K,免费7%10162K / 10823K,暂停2MS + 3ms的
03-08 14:27:59.643:D / dalvikvm(4176):GC_CONCURRENT释放579K,免费7%10094K / 10823K,暂停2MS + 3ms的
03-08 14:27:59.783:D / dalvikvm(4176):GC_CONCURRENT释放241K,免费5%10338K / 10823K,暂停2MS + 2ms的
03-08 14:27:59.938:D / dalvikvm(4176):GC_FOR_ALLOC释放92K,免费10464K / 10823K 4%,暂停26ms
03-08 14:27:59.943:I / dalvikvm堆(4176):成长堆(frag的情况下),以11.271MB为1048592字节分配
03-08 14:27:59.973:D / dalvikvm(4176):GC_FOR_ALLOC释放46K,免费11442K / 11911K 4%,暂停18毫秒
03-08 14:28:00.023:D / dalvikvm(4176):GC_CONCURRENT释放1K,免费4%11443K / 11911K,暂停2MS + 2ms的
03-08 14:28:00.108:D / dalvikvm(4176):GC_FOR_ALLOC释放1090K,13%免费10647K / 12103K,暂停21ms
03-08 14:28:00.108:I / dalvikvm堆(4176):成长堆(frag的情况下),以11.449MB为1048592字节分配
03-08 14:28:00.133:D / dalvikvm(4176):GC_FOR_ALLOC释放< 1K,免费11670K / 12103K 4%,14ms的暂停
03-08 14:28:00.193:D / dalvikvm(4176):GC_CONCURRENT释放21K,免费11677K / 12103K 4%,暂停1毫秒+ 2ms的
03-08 14:28:00.293:D / dalvikvm(4176):GC_FOR_ALLOC释放1288K,13%免费10649K / 12167K,暂停16ms的
03-08 14:28:00.293:I / dalvikvm堆(4176):成长堆(frag的情况下),以11.452MB为1048592字节分配
03-08 14:28:00.3​​08:D / dalvikvm(4176):GC_FOR_ALLOC释放174K,6%免费11499K / 12167K,暂停16ms的
03-08 14:28:00.3​​58:D / dalvikvm(4176):GC_CONCURRENT释放1K,免费5%11603K / 12167K,暂停1毫秒+ 2ms的
03-08 14:28:00.458:D / dalvikvm(4176):GC_FOR_ALLOC释放1084K,14%免费10570K / 12167K,暂停40毫秒
03-08 14:28:00.458:I / dalvikvm堆(4176):成长堆(frag的情况下),以11.374MB为1048592字节分配
03-08 14:28:00.498:D / dalvikvm(4176):GC_FOR_ALLOC释放82K,免费11511K / 12167K 6%,暂停31毫秒
03-08 14:28:00.548:D / dalvikvm(4176):GC_CONCURRENT释放19K,免费11514K / 12167K 6%,暂停2MS + 3ms的


解决方案

走进设置 - >位置信息访问权限
确保
Wi-Fi和放大器;移动网络位置设置为启用

My NETWORK_PROVIDER in my GPS application has stopped working all of a sudden. It has nothing to do with my internet connection because every other application on my phone works with the internet. I tried it with GPS_PROVIDER and it works perfectly fine and on top of that, after calling onLocationChanged it IS able to retrieve locations from the internet, so this further reinstates that the internet WORKS.

My phone:

  • Samsung Galaxy S2
  • Android version 4.0.3

Things I have tried to no avail:

  • Cleaned the project
  • Testing outside in different locations. Same again, GPS works but Network provider does not.
  • Rebooting phone/Switching phone on off
  • Uninstalling app on phone then reinstalling
  • Turning internet on and off

I repeat, everything was working fine and then all of a sudden it stopped working for no reason. I did not change my code in anyway at all during this transition.

Nevertheless, here is parts of my code and here it is in pastebin http://pastebin.com/itrXgWr7:

This is called first, it is able to enter if(networkEnabled) and then in the LogCat it prints out "Getting updates from network provider".

networkEnabled = providerHandler.isNetworkEnabled();
GPSEnabled = providerHandler.isGPSEnabled();

if(!GPSEnabled && !networkEnabled)
{
    Toast.makeText(this, "Error: This application requires a GPS or network connection",
            Toast.LENGTH_SHORT).show();
}
else
{
    if(GPSEnabled)
    {
        locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
    }
    else if(networkEnabled)
    {
        System.out.println("Getting updates from network provider");
        locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
    }
}

This is the LocationListener. onLocationChanged is never called with NETWORK_PROVIDER. I repeat again, it USED to call it but not anymore. What happens instead when I turn off GPS is that onProviderDisabled is called straight away, giving me a toast message of "Disabled provider network". This is with Wifi and mobile internet turned ON:

    //Get Latitude and Longitude of current location and use that to get the surrounding markers. 
@Override
public void onLocationChanged(Location location)
{
    //Get coordinates
    double lat = (location.getLatitude());
    double lng = (location.getLongitude());
    Log.d("MainActivity", "got location: " + lat + ": " + lng);
    //get nearest locations
    new GetLocations().execute(SharedVariables.root + SharedVariables.locationsController + SharedVariables.getNearestMethod + lat + "/" + lng); 

    // Zoom in, animating the camera after the markers have been placed
    map.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 10));
    System.out.println("lat = " + lat + ", lng = " + lng);

     //Stop listening for updates. We only want to do this once. 
     locManager.removeUpdates(this);
}


public void onProviderDisabled(String provider)
{
  Toast.makeText(MainActivity.this, "Disabled provider " + provider,
        Toast.LENGTH_SHORT).show();
}

public void onProviderEnabled(String provider)
{
      Toast.makeText(MainActivity.this, "Enabled new provider " + provider,
                Toast.LENGTH_SHORT).show();
}

public void onStatusChanged(String provider, int status,
                              Bundle extras)
{
  // required for interface, not used
}

I have all necessary permissions in my XML file as you can see:

<uses-permission android:name="com.example.neatspots.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

This is my LogCat:

03-08 14:27:58.663: D/dalvikvm(4176): GC_CONCURRENT freed 223K, 3% free 9072K/9351K, paused 2ms+2ms
03-08 14:27:58.823: D/dalvikvm(4176): GC_CONCURRENT freed 272K, 4% free 9239K/9607K, paused 2ms+2ms
03-08 14:27:58.948: D/dalvikvm(4176): GC_CONCURRENT freed 263K, 4% free 9545K/9863K, paused 2ms+3ms
03-08 14:27:59.018: D/dalvikvm(4176): GC_FOR_ALLOC freed 76K, 3% free 9742K/9991K, paused 29ms
03-08 14:27:59.048: I/System.out(4176): GPS: false
03-08 14:27:59.048: I/System.out(4176): Network: true
03-08 14:27:59.048: I/System.out(4176): Getting updates from network provider
03-08 14:27:59.063: D/SensorManager(4176): ====>>>>>Num Sensor: 1
03-08 14:27:59.063: D/SensorManager(4176): ====>>>>>Num Sensor: 2
03-08 14:27:59.068: D/SensorManager(4176): ====>>>>>Num Sensor: 3
03-08 14:27:59.068: D/SensorManager(4176): ====>>>>>Num Sensor: 4
03-08 14:27:59.068: D/SensorManager(4176): ====>>>>>Num Sensor: 5
03-08 14:27:59.068: D/SensorManager(4176): ====>>>>>Num Sensor: 6
03-08 14:27:59.068: D/SensorManager(4176): ====>>>>>Num Sensor: 7
03-08 14:27:59.068: D/SensorManager(4176): ====>>>>>Num Sensor: 8
03-08 14:27:59.068: D/SensorManager(4176): ====>>>>>Num Sensor: 9
03-08 14:27:59.068: D/SensorManager(4176): ====>>>>>Num Sensor: 10
03-08 14:27:59.068: D/SensorManager(4176): ====>>>>>Num Sensor: 0
03-08 14:27:59.068: D/SensorManager(4176): registerListener :: handle = 0  name= K3DH Acceleration Sensor delay= 20000 Listener= maps.h.a@414cb1e0
03-08 14:27:59.068: E/SensorManager(4176): thread start
03-08 14:27:59.068: E/SensorManager(4176): =======>>> Sensor Thread Running <<<========
03-08 14:27:59.208: D/libEGL(4176): loaded /system/lib/egl/libEGL_mali.so
03-08 14:27:59.213: D/libEGL(4176): loaded /system/lib/egl/libGLESv1_CM_mali.so
03-08 14:27:59.218: D/libEGL(4176): loaded /system/lib/egl/libGLESv2_mali.so
03-08 14:27:59.228: D/(4176): Device driver API match
03-08 14:27:59.228: D/(4176): Device driver API version: 10
03-08 14:27:59.228: D/(4176): User space API version: 10 
03-08 14:27:59.233: D/(4176): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Mon Mar  5 09:47:55 KST 2012 
03-08 14:27:59.303: D/dalvikvm(4176): GC_FOR_ALLOC freed 143K, 3% free 10004K/10247K, paused 14ms
03-08 14:27:59.368: D/dalvikvm(4176): GC_CONCURRENT freed 194K, 4% free 10276K/10631K, paused 1ms+2ms
03-08 14:27:59.418: D/dalvikvm(4176): GC_FOR_ALLOC freed 598K, 8% free 10022K/10823K, paused 23ms
03-08 14:27:59.523: D/dalvikvm(4176): GC_CONCURRENT freed 365K, 7% free 10162K/10823K, paused 2ms+3ms
03-08 14:27:59.643: D/dalvikvm(4176): GC_CONCURRENT freed 579K, 7% free 10094K/10823K, paused 2ms+3ms
03-08 14:27:59.783: D/dalvikvm(4176): GC_CONCURRENT freed 241K, 5% free 10338K/10823K, paused 2ms+2ms
03-08 14:27:59.938: D/dalvikvm(4176): GC_FOR_ALLOC freed 92K, 4% free 10464K/10823K, paused 26ms
03-08 14:27:59.943: I/dalvikvm-heap(4176): Grow heap (frag case) to 11.271MB for 1048592-byte allocation
03-08 14:27:59.973: D/dalvikvm(4176): GC_FOR_ALLOC freed 46K, 4% free 11442K/11911K, paused 18ms
03-08 14:28:00.023: D/dalvikvm(4176): GC_CONCURRENT freed 1K, 4% free 11443K/11911K, paused 2ms+2ms
03-08 14:28:00.108: D/dalvikvm(4176): GC_FOR_ALLOC freed 1090K, 13% free 10647K/12103K, paused 21ms
03-08 14:28:00.108: I/dalvikvm-heap(4176): Grow heap (frag case) to 11.449MB for 1048592-byte allocation
03-08 14:28:00.133: D/dalvikvm(4176): GC_FOR_ALLOC freed <1K, 4% free 11670K/12103K, paused 14ms
03-08 14:28:00.193: D/dalvikvm(4176): GC_CONCURRENT freed 21K, 4% free 11677K/12103K, paused 1ms+2ms
03-08 14:28:00.293: D/dalvikvm(4176): GC_FOR_ALLOC freed 1288K, 13% free 10649K/12167K, paused 16ms
03-08 14:28:00.293: I/dalvikvm-heap(4176): Grow heap (frag case) to 11.452MB for 1048592-byte allocation
03-08 14:28:00.308: D/dalvikvm(4176): GC_FOR_ALLOC freed 174K, 6% free 11499K/12167K, paused 16ms
03-08 14:28:00.358: D/dalvikvm(4176): GC_CONCURRENT freed 1K, 5% free 11603K/12167K, paused 1ms+2ms
03-08 14:28:00.458: D/dalvikvm(4176): GC_FOR_ALLOC freed 1084K, 14% free 10570K/12167K, paused 40ms
03-08 14:28:00.458: I/dalvikvm-heap(4176): Grow heap (frag case) to 11.374MB for 1048592-byte allocation
03-08 14:28:00.498: D/dalvikvm(4176): GC_FOR_ALLOC freed 82K, 6% free 11511K/12167K, paused 31ms
03-08 14:28:00.548: D/dalvikvm(4176): GC_CONCURRENT freed 19K, 6% free 11514K/12167K, paused 2ms+3ms

解决方案

Go into Settings -> "Location access" Make sure that "Wi-Fi & mobile network location" setting is enabled.

这篇关于为什么我的NETWORK_PROVIDER突然停止呼叫onLocationChanged?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆