Is there a way to use just a specific constellation set in Android? As far as I know the smartphone would query all available constellations & somehow pick the best one to be used further by other apps that show user location.
In my specific case, I want to get data from a specific constellation set, say GLONAS or GPS. Is that possible? (Again, as far as I know there are ways to check if the data being used is from a specific constellation, but I want the other way around, where I'm only using the data from a specific constellation?)
I'm no expert, but I was researching if it was possible to do so, and found the descrption of the method/API on this page:
https://barbeau.medium.com/gnss-interrupted-the-hidden-android-setting-you-need-to-know-d812d28a3821
Qoute:
Device with Android 7.0 and higher support an official API for pseudorange measurements and navigation messages, which allows developers to calculate positions within apps. Previously, all apps were limited to using positions calculated by the GNSS hardware, which was a black box. The European Union GNSS Agency (GSA) has even produced a how-to manual describing the technical process of using raw measurement data. Google has also open-sourced a set of tools to process and visualize measurements.
Related
I'm trying to find a good way to track location of people in a building. I would ultimately like to be able to create a graphic on demand showing where employees are in a building - which floor (elevation), and where on the floor they are located (lat/lon). I have read that elevation is relative to the WGS84 ellipsoid, not sea level necessarily, which is fine. I can define a baseline of where the first floor is, for example, and then calculate the difference of a person's current location from there. If I understand correctly, the general precision lat/lon for a GPS is as fine as 1m, which should be sufficient for me.
Part of my problem is finding a device to use for employees to carry around. The other is finding a device with a supported API (read: "free API") or other programming options. I would like this to be manufacturer-independent.
I would love to do cross-platform development - iOS, Android, PC, web, etc.
Does anyone have experience with something like this, and what recommendations can you offer on where to start? I know this is a little open ended but I'm not sure where to start.
Thanks.
This all does not work (tracking within a building).
GPS Signal is very poor or non existent within a building.
(Next time search here on Stackoverflow. It has been asked some times.)
The only robust and working solution, are BlueTooth beacons.
Such small hardware pieces are mounted within the building.
Such beacons (search for iBeacon) just send out an id.
The phone receives the id, and the approximate distance to it.
You have to administrate and know which id is at which level of the building.
Even when having good reception the GPS signal is not precise enough to determine the floor a person is location.
Some phones have a barometer, like the ipHone, this can track relative heigh changes, and may be used to determine level within a building. (Once calibrated before entering the buulding)
I would like to make a simple tile on the Microsoft Band 2 that can display the current skin temperature when the user clicks on the tile. One way to do this is to register a listener for BandSkinTemperatureEvent and constantly save the temperature, and ACTION_TILE_OPENED to detect the user click, then update the temperature back to the tile using TextBlockData. But that seems like an extremely roundabout way to display a sensor reading which essentially should already be available on the Band itself. Also, this won't work when the Android phone is not connected.
Is there a way to achieve this functionality without having to use the above method?
Short answer: No.
Longer answer: If you look at the specs of either Microsoft Band, they don't have much memory, and certainly not enough to allow the running of foreign code. So, in order to allow what you are asking for, they would need to create a new layout object. And, given that the skin temperature sensor is too close to the band's processor to ever actually be accurate, the chances of them doing that is almost zero.
Is there any library that can help me determine one mobiles devices position in relation to other?
For example:
Can one iPhone determine that there is another one laying next to it and if so which way is it facing?
I don't know of a way to do what you are asking.
NFC requires the devices to basically touch. Wifi and GPS location services probably don't have the granularity to determine location to that precise level. It would probably be possible to use the location services to determine if two phones were in the same room (not table), and which location. I think in real world, this would with variable results, and not be feasible.
I wonder if the new Wifi Direct technologies provide anything like that.
On Android you can use Near Field Communication
I am developing a project that is intended to use the GPS capabilities of an Android phone and a nearby station to compute positioning to a much more precise degree (cm), using RTK DGPS technology.
So far, I haven't been able to see anyone saying they actually managed to perform a similar task (apart from #GPSmaster, who doesn't explain how), and the APK doesn't seem to offer any information from the GPS chip other than location and NMEA message updates. I need, if possible, pseudo-ranges and carrier phases.
I was wondering if:
It would be possible to look for lower level hooks on my phone using native code, or other lower level snooping;
It would be possible to send RTCM corrections to the GPS chip present on one of these devices;
Any ideas?
Generally speaking DGPS is a technique that improves real position accuracy by canceling out most of the atmospheric effects on the GPS signal. In a typical direct GPS measurement there is about a random error in the ranges computed to the satellites due to atmospheric effects. This is why a GPS receiver that is left collecting data in a fixed location will seem to wander with in an error ellipse. For two receiver stations in the same area the atmospheric effects are almost identical and they will wander in parallel within their similarly sized and oriented error ellipses. If one of the two receivers is at a know location then the differences in their apparent GPS locations can be taken and plotted from the true location of the known station to find the true location of the unknown station.
Back in the day (circa 1992) when we had to accomplish DGPS by "post processing" we used to take the raw NEMA data collected at the two stations match up the times, compute the baseline vector and apply it to the known point to find the unknown point. I think the NEMA data we were using was only recorded to the nearest 10 sec. The math isn't really that hard.
I suspect that NEMA GPS messages [http://developer.android.com/reference/android/location/GpsStatus.NmeaListener.html ] from a tablet at a known point (with a clear sky view) could probably be sent over an internet socket to a smart phone (also with a clear sky view), which could then compute the difference and achieve a sub-meter relative location over a distance of few km, even if the assumed Internet transit times were ignored. This technique would probably still work even if the tablet and smart phone were both applying broadcast DGPS adjustments.
With the andvent of Android 7.1, the raw data from GPS chips will be available to developers. (http://gpsworld.com/google-to-provide-raw-gnss-measurements/)
Others seem to have done something similar to what you wish to accomplish (http://gpsworld.com/innovation-precise-positioning-using-raw-gps-measurements-from-android-smartphones/)
No, it is not practical to get any lower level access to the GPS device by an Android application. This has several reasons:
The application has no other means of accessing the GPS device as through the Java based API. Native code is forbidden to use most devices and usually needs a Java wrapper to tunnel through the sandbox for Android sensor devices. This makes up the main security concept.
If native code would have access to the GPS device on a lower level, it would have to cope with several different manufacturers protocols now not abstracted by the API. Best chances are to get access to custom NMEA codes, which may still have device dependent caveats.
Even if lower level access would be possible, one loses the integrated merging of other location sources like WLAN and cellphone carrier, that are presumably merged in native code below the Java API but above the NMEA protocol.
You can use DGPS corrections in Europe via custom application for SISnet receiving correction signals from EGNOS augmentation satellites(http://egnos-portal.gsa.europa.eu/news/egnos-gets-invite-your-smartphone-11). It does however need a subscription (which isn't really open to public yet) to SISnet to obtain username and password for connection to their servers. There's some of SDK published which you may find useful. Just remember that you are limited to C/A signals only (pseudoranges) and you CANNOT get phase data (L1/L2) from those cheap chips inside smartphones.You'd need a precision GNSS receiver such as Trimble BD910 (http://www.trimble.com/gnss-inertial/bd910.aspx?dtID=overview) to be able to access L1 carrier phase signal for GPS & GLONASS. There are however cheaper chips that support SBAS but none are yet installed natively in phones.
Umm. Your android probably has such a crap GPS antenna that achieving cm accuracy is impossible. Maybe if you average the position for days.. usually DGPS support is not published and not many chipsets support it. Last time I saw DGPS implemented it involved hacking the actual GPS chip firmware to add support. Even getting A-GPS to work on a random chipset is iffy since they might not support a documented way of feeding the assistance data.
It should be related with the hardware implementation , rather than the software implementation.
In the reality, GPS is usually accompanied with Wi-Fi or 3G to assist in searching the current position.
RTCM correction can be sent to your android phone using NTRIP 'provider'. Then you need to apply it to your raw GPS in your android.
I'm interested in using Android for a E-Ink
based platform. I know it has been demonstrated once by MOTO, but I'm interested in using it for a commercial grade product and not 'just' a technology demo. I have got a question on the ability to change the platform to cope with specific display effect caused by E-Ink. I'm asking this question from the role of system architect and have no prior experience with Android.
E-ink has several characteristics which are very different than the common LCD displays:
time to update display (50-700ms)
it costs power to change the display (none to maintain)
display life time is determined by number of display updates!
tradeoffs can be made between quality, performance and display lifetime
grayscale versions available
The great thing: it costs no power to retain display information and they can be read in bright sunlight with no backlight. Also the display can be literally as thin as paper...
This means that the platform software needs to have a degree of control over the number of display updates and the type of display updates to get the best performance. Otherwise, an application which is unaware of the display characteristics could quickly drain the battery, or worse, shorten display life time to months instead of years. Conceptually I'd be interested in replacing a display driver, but I'm not sure if this part is open. I know it is hard to get info on the Qualcomm chipsets....
My question: can this be done? Can the Android platform be modified to support a drastically different display effect? Any pointers to an android roadmap?
The reason I find Android interesting for this application is because there is a significant overlap in functionality (from cell phone to browser).
Thanks!
I cannot agree more and started to lobby with app and OS developers on improving readability on e-ink:
Make scrolling and page turns e-ink friendly http://github.com/aarddict/android/issues/28#issuecomment-3512595
Looking around on the web I find a recurring theme "we had to rebuild WebView from scratch to adapt it to the e-ink display"
There are already coding solutions which reduce flicker and page refreshes. Most of them are kept by those who market the e-ink readers who prefer to keep them as frontends to their shops.
I contacted the author(s) of cool reader on their implementation of
smooth scrolling on e-ink devices and got the following reply:
Hello, Look at N2EpdController.java Author
is DairyKnight from xda-developers. At least you can use it under GPL.
For use in closed project I would recommend to contact him.
Ideally, display components for e-ink devices should be part of the Webkit's WebView framework. I've submitted a feature request via
http://bugs.webkit.org/show_bug.cgi?id=76429
fyi, E-Ink has an Android on E-Ink development kit, AM350 that's being sold now. http://www.eink.com/sell_sheets/AM350_Kit_Sell_Sheet.pdf
http://www.linuxworld.com/news/2007/112707-kernel.html
In this case the application domain is e-reading, in which case the advantages of E-ink are more imporant than the disadvantages (slow display updates).
I've done some further studies of Android. I believe the trick is to perform display updates asynchronously; to provide applications with an environment which mimicks immediate display updates, whilst detecting the relevant updates (i.e. by using graphics processor and/or MMU) to have an intelligent display update. Not all types of applications would be suitable; i.e. games and video playback require immediate display updates.
Making such a platform will be less than trivial; however, with the growing number of different hardware platforms, abstractions are becoming better all the time.
I know this is an old question, but I have found it through Google - others might want to know this too.
PocketBook Pro 902/903 are based on Android and feature e-ink screen. You might want to check them out. There might be other models too - I am interested in these because of their 10" screen. YMMV.