PositionSource - good for open air only?
I have recently played around with PositionSource Element in a test app - it was really easy to implement and see how it works (both on simulator and on N8 device).
But what I found as a space for improvement is the way this element works indoors. It keeps trying to get position using GPS although it is clear GPS data is not available.
Is there a way to tell PositionSource that if GPS is not available as position method that it should use non-sattelite methods?
Answering here hioghlighting what I found on the issue above:
- Seems like there are a few bugs that might be preventing normal positioning for me: "link1":http://bugreports.qt.nokia.com/browse/QTMOBILITY-462
- Seems like it is possible to set preferred methods of positioning via Qt - "Link2":http://doc.qt.nokia.com/qtmobility-1.2/qgeopositioninfosource.html#setPreferredPositioningMethods
- Also seems like only at Qt Mobility 1.3 the PositionMethod in QML will become writeable and thus it will be easy to manipulate with the preferred source etc "Link3":http://bugreports.qt.nokia.com/browse/QTMOBILITY-1631
- Some confirmation of my issue above (seems like Symbian stucks to use one method and not the blend of the available methods) "Link4":http://bugreports.qt.nokia.com/browse/QTMOBILITY-1550
The preferred positioning methods are indeed the right path to head down in this case.
That particular bug was closed a while back, although this bug is likely to effect you:
if you use AllPositioningMethods on Symbian
There is a potential work-around mentioned in the bug report, although I haven't had time to test it myself and if anyone has tried it they haven't let me know how it went so far.
;) hehe I was referring to your post the same second as you appeared! - fun!
I will try to test the workaround if I have a chance this week and reply back.
Just updating this by saying that I decided to use external API (via xmlhttprequest) to obtain geo location data based on cellid. So far it solves the issue for me.
But problem i see with Qt Mobility is that Cell Id retrieving so far works only in Simulator...real N8 device returns 0 instead of cell id.
I checked 1.2 version of Qt MObility and found some traces of cell id there - is it confirmed to work on real devices when its released?
[Edit: Ignore or delete this ]
There hasn't been much of a change (beside some bug fixing) between Location on Symbian in the 1.1.3 release and the 1.2.0 release, and we have reports of cell id based location working for at least 1.2.0 and perhaps 1.1.3. There have been a few issues recently, it's hard to keep them all sorted out in my head :)
Hopefully what's happening is that one of those bugs that were fixed between releases is causing the trouble. If you still see it as a problem when 1.2.0 comes out please file a bug. If you build Qt Mobility from source and have the bug I might be able to fast track it for the 1.2.x that should come in the next SDK update. I'll certainly try my hardest to make it happen, since it supports some very important use cases.
Also - this issue and the other "cellid" issue have very little to do with each other and shouldn't be merged.
Hi David, I will certainly check that. For clarity what I have now working in Simulator on SDK 1.1 (Mobility 1.1.3) is this code:
In simulator it returns cellid stated in Simulator correctly. on the live N8 device returns 0. I will keep experimenting and update once found something...I will try with other devices as well and reply back
The NetworkInfo item has nothing to do with positioning - the use of the cell id in those two cases are potentially going through wildly different code paths in the Symbian stack. What capabilities have you set up for your test application? (See the Qt Mobility quickstart doc if you don't know what capabilities are / which capabilities to use)
Sorry for confusing the matter - in your earlier comment I though you were stating that you had a workaround that solved the problem and then revisiting the use of cellid in the position sources (rather than talking about a problem with the workaround). I clearly need to increase my caffeine intake.
Apologies to jim_kaiser as well - it turns out that these questions are related and could be merged.
Hi David, thanks for looking into this!
Yes you are right, my refer to workaround above was different. The workaround for me is exactly to rely on 3rd party service (like http://fireeagle.yahoo.net/ for instance) to obtain location in case PositionSource is not providing the location data (like if in-doors etc).
So a developer needs device's cellid retrieved to be able to communicate with that 3rd party's API.
I use the code above to get it from Symbian and it keeps returning me 0...
The capabilities I have in pro file are:
symbian:TARGET.CAPABILITY += NetworkServices Location ReadUserData WriteUserData
Is there something I am missing?
I checked some of the sources recently and found this: "Qt - get network information":http://www.developer.nokia.com/Community/Wiki/index.php/Get_Network_information_using_Qt_for_Symbian
So is it also applicable to my situation? in order to get NetworkInfo data a developer needs Developer certificate correct?
If the device returned error message I would guess that, but since it returns 0...
Please advise if that's the issue why cell id retrieval is not working (I use self signed ofc via standard SDK). Also added ReadDeviceData to my capabilities and it didn;t help..
I've been poking around in the System Info sources to try to work out what's going on, but it's not really my area of expertise.
I'd try the example you linked to, and if it doesn't work it might be worth filing a bug report.
Hi David, I actually tried to look everywhere I could for the last few weeks and it is clear that there is no proper documentation describing the way to get cellId from the device using QML.
- either documentation should state clearly cellId retrieval is subject to proper certificate (and then it works)
- or it will work once it is fixed (it is a bug then on symbian?)
But anyway my point is - retrieve cellId is quite critical thing for many LBS apps. We should clarify what is the best way for now for the developers to do.
My guess is get proper certificate and use Qt C++