GReaper / MadridLive

Madrid Live repository
0 stars 0 forks source link

Geolocalización de usuario #64

Closed GReaper closed 10 years ago

GReaper commented 10 years ago

Es necesario probar cuanto antes la geolocalización de Facebook para saber si nos será útil para tomar posiciones de usuario. Esta localización debería ser bloqueante. Es decir, no debería funcionar con el método de "enviar peticion -> esperar callback". Es posible que haya que recurrir a FQL o la API Graph y generar una función. Por todo esto hay que probarlo cuanto antes. Sólo en última instancia se tomará la posición con GPS.

rMarinf commented 10 years ago

Dejo posibles links para saber como plantear esta issue:

https://developers.facebook.com/docs/reference/fql/user --> Se utiliza FQL para esta búsqueda, te devuelve la latitud y la longitud actual del usuario.

http://stackoverflow.com/questions/13373794/graph-api-not-getting-location-from-facebook-sdk-in-android --> En este también hablan de FQL y por lo que veo solo te devuelve la ciudad o sitio que ha fijado el usuario. Puede servir si de alguna manera podemos después sacar la localización

Seguiré investigando a ver si encuentro más.

GReaper commented 10 years ago

Me asigno issue. Es uno de los puntos críticos ahora. Trataré de finalizarla cuanto antes.

GReaper commented 10 years ago

Autoanotación http://stackoverflow.com/questions/13145284/how-to-send-a-fql-query-with-the-new-android-sdk

GReaper commented 10 years ago

Autoanotación http://stackoverflow.com/questions/14422718/how-to-read-fql-response-in-android

GReaper commented 10 years ago

Autoanotación https://developers.facebook.com/docs/graph-api/using-graph-api/

GReaper commented 10 years ago

Actualizo He generado una llamada a FQL de Facebook para tomar la posición. Hay que probarla cuanto antes. El problema es que no puedo ver si va bien porque no soy capaz de saber cómo tomar la sesión actual del usuario. Asigno esta parte por el momento a @rMarinf . En cuanto puedas echa un ojo y agrega el código o dime cómo tomar la sesión actual (objeto Session). Cuando esté hecho seguiré hasta terminar la parte de localización.

El código que hay que revisar está en la clase ConectorFacebook, línea 317. Ahora mismo pone Session sesion = facebook.getSession(); pero eso no funciona (devuelve siempre null como si no existiese sesión). Entiendo que no debe ser muy complicado coger la sesión pero no veo de dónde sacarla.

rMarinf commented 10 years ago

Ese getSession() si te debería de devolver una sesión si la tienes abierta, estoy yo haciendo pruebas y tengo problemas con ello y espero arreglarlo lo mas rápido posible. Si puedes, no se si lo habrás probado ya, cierra sesión y vuelve a abrirla, deberías de tener ese objeto de Session

GReaper commented 10 years ago

Probaré eso, me reasigno issue. Si sigue fallando pasaré a otro punto hasta que funcione.

rMarinf commented 10 years ago

Acabo de probar yo y si me devolvió un objeto Session pero me fallo en otro punto después

GReaper commented 10 years ago

Ahora sí, sesión funcionando. Sigo con la issue.

GReaper commented 10 years ago

Actualizo Aún con GPS y demás sigue sin coger en absoluto bien la posición, me marca Madrid. @rMarinf y @Argaide , probad esto en cuanto podáis y comprobad si coge bien vuestra latitud y longitud para descartar un problema de cobertura de GPS. Para probarlo, breakpoint en ConectorFacebook , línea 362 aprox., la que pone Double lon = localizacion.getDouble("longitude");. Para que se llame a la localización, pedid una recomendación marcando que se use la posición actual. Si os fallase y no llegase, cerrad la sesión que tuviéseis y abrid una nueva. Para comprobar qué lat, long os da y si son correctas, podéis buscar una posición por latitud y longitud en Google Maps.

Si esto no funciona, mañana/después paso a la localización por GPS del móvil.

GReaper commented 10 years ago

Autoanotación

rMarinf commented 10 years ago

No puedo comprobar nada porque me da el siguiente error:

12-17 18:35:49.751: E/AndroidRuntime(472): android.os.NetworkOnMainThreadException 12-17 18:35:49.751: E/AndroidRuntime(472): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:724) 12-17 18:35:49.751: E/AndroidRuntime(472): at java.io.BufferedOutputStream.flushInternal(BufferedOutputStream.java:185) 12-17 18:35:49.751: E/AndroidRuntime(472): at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:85) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.okhttp.internal.http.HttpTransport.flushRequest(HttpTransport.java:107) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:642) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:136) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.facebook.Response.fromHttpConnection(Response.java:301) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.facebook.Request.executeConnectionAndWait(Request.java:1564) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.facebook.Request.executeBatchAndWait(Request.java:1463) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.facebook.Request.executeBatchAndWait(Request.java:1432) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.facebook.Request.executeBatchAndWait(Request.java:1414) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.ssii.conector.ConectorFacebook.getPosicionActual(ConectorFacebook.java:329) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.ssii.localizacion.Localizador.posicionUsuarioActual(Localizador.java:26) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.ssii.madridliveapp.RecomendacionActivity.getLocalizacionUsuario(RecomendacionActivity.java:712) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.ssii.madridliveapp.RecomendacionActivity.solicitarRecomendacion(RecomendacionActivity.java:752) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.ssii.madridliveapp.RecomendacionActivity.access$2(RecomendacionActivity.java:745) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.ssii.madridliveapp.RecomendacionActivity$2.onClick(RecomendacionActivity.java:228) 12-17 18:35:49.751: E/AndroidRuntime(472): at android.view.View.performClick(View.java:4438) 12-17 18:35:49.751: E/AndroidRuntime(472): at android.view.View$PerformClick.run(View.java:18422) 12-17 18:35:49.751: E/AndroidRuntime(472): at android.os.Handler.handleCallback(Handler.java:733) 12-17 18:35:49.751: E/AndroidRuntime(472): at android.os.Handler.dispatchMessage(Handler.java:95) 12-17 18:35:49.751: E/AndroidRuntime(472): at android.os.Looper.loop(Looper.java:136) 12-17 18:35:49.751: E/AndroidRuntime(472): at android.app.ActivityThread.main(ActivityThread.java:5017) 12-17 18:35:49.751: E/AndroidRuntime(472): at java.lang.reflect.Method.invokeNative(Native Method) 12-17 18:35:49.751: E/AndroidRuntime(472): at java.lang.reflect.Method.invoke(Method.java:515) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 12-17 18:35:49.751: E/AndroidRuntime(472): at dalvik.system.NativeStart.main(Native Method)

GReaper commented 10 years ago

Pospuesta Se continuará con la issue tras #71 y haciendo uso de este módulo.

GReaper commented 10 years ago

Geolocalización para el usuario activo funcionando