tom-bell / bearing Goto Github PK
View Code? Open in Web Editor NEWDEPRECATED: Android location acquisition. Simplified.
Home Page: http://tom-bell.github.io/bearing
License: MIT License
DEPRECATED: Android location acquisition. Simplified.
Home Page: http://tom-bell.github.io/bearing
License: MIT License
Need to add a cache(useCache, long timeout) method
Like in onFailure for the LocationListener class, onTimeout should be called from the same thread that created it
java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
at com.google.android.gms.internal.eh.bm(Unknown Source)
at com.google.android.gms.internal.hi.a(Unknown Source)
at com.google.android.gms.internal.hi$c.bm(Unknown Source)
at com.google.android.gms.internal.hh.requestLocationUpdates(Unknown Source)
at com.google.android.gms.internal.hi.requestLocationUpdates(Unknown Source)
at com.google.android.gms.internal.hi.requestLocationUpdates(Unknown Source)
at com.google.android.gms.location.LocationClient.requestLocationUpdates(Unknown Source)
at net.atomcode.bearing.location.provider.GMSLocationProvider.internalRequestRecurringUpdates(GMSLocationProvider.java:189)
at net.atomcode.bearing.location.provider.GMSLocationProvider.access$100(GMSLocationProvider.java:25)
at net.atomcode.bearing.location.provider.GMSLocationProvider$2.run(GMSLocationProvider.java:111)
at net.atomcode.bearing.location.provider.GMSLocationProvider.onConnected(GMSLocationProvider.java:284)
at com.google.android.gms.internal.eh$c.onConnected(Unknown Source)
at com.google.android.gms.internal.ei.b(Unknown Source)
at com.google.android.gms.internal.ei.bo(Unknown Source)
at com.google.android.gms.internal.eh$h.b(Unknown Source)
at com.google.android.gms.internal.eh$h.a(Unknown Source)
at com.google.android.gms.internal.eh$b.ec(Unknown Source)
at com.google.android.gms.internal.eh$a.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
when user wants to have high precision geolocation, it'll need to add proper permissions. Suggest it in the "Getting started" menu
Thanks!
In LegacyLocationProvider you need to add in create(Context context)
if(runningRequests == null){
runningRequests = new HashMap<>();
}
Would be good to have the ability to set a timeout for the location to error after x amount of time
Currently crashes if you do not provide a listener
java.lang.NullPointerException: Attempt to invoke virtual method 'void net.atomcode.bearing.location.LocationListener.onUpdate(android.location.Location)' on a null object reference
at net.atomcode.bearing.location.CurrentLocationTask$1.onUpdate(CurrentLocationTask.java:32)
at net.atomcode.bearing.location.provider.GMSLocationProvider$5.onLocationChanged(GMSLocationProvider.java:246)
at com.google.android.gms.internal.hb$a.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
The issue is caused by the deprecation of the LocationClient in favour of the GoogleApiClient.
https://developer.android.com/google/play-services/index.html
Updated the code to use the new client should fix any issues.
Genymotion appears to not fire a manual request if last known location fails on genymotion devices
Issue raised from pull request
Exception thrown by internalRequestSingleUpdate
when the connection to Google is not yet complete.
When Bearing makes a geocoding request and a suitable service is not available on the device, it falls back to the web service. However in contrast to the geocoding service it does not populate the Address object with the returned JSON.
Apparently LocationClient has now been removed and is causing a crash when trying to fetch a users location
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/location/LocationClient;
at net.atomcode.bearing.location.provider.GMSLocationProvider.create(GMSLocationProvider.java:48)
at net.atomcode.bearing.location.LocationTask.<init>(LocationTask.java:50)
at net.atomcode.bearing.location.CurrentLocationTask.<init>(CurrentLocationTask.java:13)
at net.atomcode.bearing.Bearing.locate(Bearing.java:151)
at MainActivity.onCreate(MainActivity.java:80)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.location.LocationClient" on path: DexPathList[[zip file "/data/app/help.com.cube.emergencyhelp-1.apk"],nativeLibraryDirectories=[/data/app-lib/help.com.cube.emergencyhelp-1, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at net.atomcode.bearing.location.provider.GMSLocationProvider.create(GMSLocationProvider.java:48)
at net.atomcode.bearing.location.LocationTask.<init>(LocationTask.java:50)
at net.atomcode.bearing.location.CurrentLocationTask.<init>(CurrentLocationTask.java:13)
at net.atomcode.bearing.Bearing.locate(Bearing.java:151)
at MainActivity.onCreate(MainActivity.java:80)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.location.LocationClient
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 18 more
Caused by: java.lang.NoClassDefFoundError: Class "Lcom/google/android/gms/location/LocationClient;" not found
... 22 more
java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
at com.google.android.gms.internal.ff.bT(Unknown Source)
at com.google.android.gms.internal.hc.a(Unknown Source)
at com.google.android.gms.internal.hc$c.bT(Unknown Source)
at com.google.android.gms.internal.hb.requestLocationUpdates(Unknown Source)
at com.google.android.gms.internal.hc.requestLocationUpdates(Unknown Source)
at com.google.android.gms.internal.hc.requestLocationUpdates(Unknown Source)
at com.google.android.gms.location.LocationClient.requestLocationUpdates(Unknown Source)
at net.atomcode.bearing.location.provider.GMSLocationProvider.internalRequestSingleUpdate(GMSLocationProvider.java:258)
at net.atomcode.bearing.location.provider.GMSLocationProvider.access$000(GMSLocationProvider.java:25)
at net.atomcode.bearing.location.provider.GMSLocationProvider$1.run(GMSLocationProvider.java:89)
at net.atomcode.bearing.location.provider.GMSLocationProvider.onConnected(GMSLocationProvider.java:298)
at com.google.android.gms.internal.ff$c.onConnected(Unknown Source)
at com.google.android.gms.internal.fg.b(Unknown Source)
at com.google.android.gms.internal.fg.bV(Unknown Source)
at com.google.android.gms.internal.ff$h.b(Unknown Source)
at com.google.android.gms.internal.ff$h.a(Unknown Source)
at com.google.android.gms.internal.ff$b.eN(Unknown Source)
at com.google.android.gms.internal.ff$a.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Not sure the cause but it has something to do with this http://stackoverflow.com/questions/21107237/not-connected-call-connect-or-wait-for-onconnected-to-be-called
Calling cancel on a LocationTask object does not cancel the underlying Google location service. This appears to be because taskId is never set by subclasses and so is always null.
I believe for PeriodicLocationTask it should be set to the result of locationProvider.requestRecurringLocationUpdates?
Cheers
Let Bearing#getAddressListForQuery return a full list of results rather than just forcing one and add an additional method to return a single result
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.