代码之家  ›  专栏  ›  技术社区  ›  Kibi

在没有WiFi或SIM卡的情况下使用此处定位

  •  0
  • Kibi  · 技术社区  · 6 年前

    我已经建立了一个简单的应用程序,从这里获得位置(这里的开发者支持给予了一些帮助),问题是 answered here

    此代码在我的手机上运行良好,可以在我的日志中每分钟生成一次地理位置。

    我现在正试图在我的目标平板电脑上运行此代码。平板电脑很旧(运行Android5.1),没有GPS,也没有SIM卡或电话连接。唯一可能的定位方法是使用wifi。我已经在平板电脑上测试了here测试应用程序,它根据wifi连接找到了一个很好的近似位置——这是我试图复制的。

    当我试图用GPS定位方法或GPS网络或网络初始化PositionManager时,我得到了相同的错误

    对于这些行:

        PositioningManager pm = PositioningManager.getInstance();
        PositioningManager.LocationStatus  ls = pm.getLocationStatus(PositioningManager.LocationMethod.GPS);
        Log.i("Position", "Setting up positioning");
        if (ls ==  PositioningManager.LocationStatus.AVAILABLE) {
            Log.i("Position", "Positioning is available");
        } else {
            Log.w("Position", "Positioning not available right now: " + ls.toString());
        }
        boolean ret = pm.start(PositioningManager.LocationMethod.GPS);
        Log.i("Position", "Positioning start returns " + ret);
    

    我得到这些日志:

    01-27 06:00:21.656 16636-16636/? I/Position: Setting up positioning
    01-27 06:00:21.657 16636-16636/? W/Position: Positioning not available right now: OUT_OF_SERVICE
    01-27 06:00:21.660 16636-16636/? W/System.err: java.lang.IllegalArgumentException: provider doesn't exist: network
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.os.Parcel.readException(Parcel.java:1550)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.os.Parcel.readException(Parcel.java:1499)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:582)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.location.LocationManager.requestLocationUpdates(LocationManager.java:899)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.location.LocationManager.requestLocationUpdates(LocationManager.java:500)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at com.here.android.mpa.internal.v.a(DeviceLocation.java:117)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at com.here.android.mpa.internal.ea.a(PositioningManagerImpl.java:224)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at com.here.android.mpa.common.PositioningManager.start(PositioningManager.java:153)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at com.company.app.MainActivity.setUpPositioning(MainActivity.java:63)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at com.company.app.MainActivity.onRequestPermissionsResult(MainActivity.java:137)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at com.company.app.MainActivity.checkPermissions(MainActivity.java:108)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at com.company.app.MainActivity.onCreate(MainActivity.java:39)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.app.Activity.performCreate(Activity.java:5990)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.app.ActivityThread.access$800(ActivityThread.java:151)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.os.Looper.loop(Looper.java:135)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5258)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at java.lang.reflect.Method.invoke(Method.java:372)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    01-27 06:00:21.661 16636-16636/? W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
    01-27 06:00:21.666 16636-16636/? I/Position: Positioning start returns true
    

    每一分钟我都会检查位置

                GeoPosition pos = PositioningManager.getInstance().getPosition();
    

    它是空的。如果我将locationMethod设置为空,我不会得到异常,但仍然不会得到任何地理位置。

    如何在他们的测试应用程序中管理它,以便仅从wifi获取位置?

    0 回复  |  直到 6 年前