I have a GPS logger app I have wanted to make for a few years now. My old phone could never do it (HTC Desire Bravo A8183) as the GPS update rate was only 1Hz. Friends are telling me their Samsung and iPhones can do 5Hz GPS now. I have installed the same app I used in my HTC in my Nexus 5 to measure the GPS update rate and I am still getting 1Hz as the standard update rate from the Nexus 5.
At first all I want to make is a position recorder that saves GPS coordinates to the onboard storage. For this application power use does not matter, as using a USB car charger at the same time would make sense. It also does not matter if the 'phone' functionality of the device is impaired whilst the app is running.
My idea is to make something for personal use similar to a GoPro with inbuilt GPS logging. GPS would give you location, and distance over time gives you speed, and delta speed over time knowing weight and drag co-efficient gives you horsepower. I already know the Cd and CdA and running weight for my race car.
Anyway how do I get the phone to poll the GPS more often? Do I need to root kit the phone and then install some obscure hack? Or is it not possible?
I need accurate data in the 4-10Hz range or I may as well just forget about making this. I'm pretty sure I can buy a bluetooth GPS 'mouse' that does this but it would be much more practical to use the phones internal hardware.
Related
I made an android app that relies heavily on very accurate sensor data (magnetometer, gravitymeter and accelerometer). To achieve this I validate all these device sensors periodically for highest quality of service by checking the sensor status for SENSOR_STATUS_ACCURACY_HIGH. If one of these sensors doesn't have this status I show a calibration screen until the high accuracy can be delivered. On my own device this is working perfectly fine, but I get a lot of app reviews from people who can't get around my calibration screen. My question is, can I rely that every android device is per se capable of delivering SENSOR_STATUS_ACCURACY_HIGH or do I have to lower the minimum accuracy? If so, how is this status even defined cross devices?
No, you can't. And even if you could, its possible for the sensor to be broken and returning the high status incorrectly. And you don't know if OEM A and OEM B have the same definition of high. In the end, you're trusting the individual hardware drivers for each device, and hoping all of them are both acting in good faith and had the same definition of "high accuracy". Neither of which are really reliable.
I had a strange encounter once: The location on the phone's map application and even my application was wrong by a very large delta. As in it was quite off the actual location. Is it something many have encountered or some bug with my device ? What is the approx probability of this happening (from those who have tested this bug) ?
I am using a Samsung Galaxy SII with ICS and my application fetches info from GPS_PROVIDER.
You might have an encountered a cached location if the maps application couldn't get a fix on your current location. For getting up to date locations in you app take a look at this question here
It's pretty normal for my location to be off by a large amount for a few seconds after a device turns on, until the radios can get a fix.
I have seen errors of more than 10000 km. I was looking at network fixes which come from cells and wifi only, no gps. The fix put me in England (UK) somewhere even though I was at an outlet mall in California (US). My guess is that someone had moved their wifi server from England to California and the Google WiFi database had not updated itself yet. I had a few more errors like that but not as spectacular, only 1000-5000 km reporting locations in other states of the US.
Network fixes based on cell towers will usually be 1 km off and are often 10 km off. These are based on the cell tower seen by the phone, and in hilly terrain you can often miss the closest cell tower and grab one that is on a high location a few km away.
GPS fixes also can have errors, but usually less than 1 km. These errors mostly come when some GPS signals are blocked by hills or buildings or reflected off nearby hills or buildings.
I have seen all of the above when testing Android phone positioning. Not all phones will behave identically, the quality of the GPS implementation (chip choice, rf design) can make big differences in performance.
We are testing out Android application on real world devices and notice some of them report very unaccurate data (even under clear sky and over 10 sats seen and 5 sats used), and even reporting speed over 10km/h when the device is not actually moving, and at the same time some devices retun 0 when location.getAccuracy is called.
We have managed to parse NMEA data, and NMEA reports "1" which means that the data is reliable.
This sometimes happens to different makes and models based on different hardware and different Android version. The most unreliable are S-E Xperia x8 (sometimes we get fixes at 20-30kms from real location) and Alcatel 918D (it is always moving over 5km/h and accuracy==0)
Turning A-GPS helper off and on as well as clearing/re-requesting A-GPS updates does not help.
Is there any way to filter such unaccurate fixes "by hand" (with some other NMEA stanzas, etc.) becuase some other software report the location much better on the same devices?
P.S. On most devices we get fine results, as expected.
P.P.S. The most accurate is my own Garmin-Asus. Hope they join again someday.
Assuming clear view of satellites, what accuracy in meters can I expect from GPS on Android Devices?
Is it different for network vs gps location providers?
In theory you can get within 5 meters if you have a good fix from GPS however that will likely vary from device to device.
It will most definitely vary based on whether you're using the GPS or the network. Network triangulation can only provide accuracy to within several hundred, sometimes thousand meters -- it's rough at best. Regular GPS can theoretically provide a location to within 5 meters, and 1 meter with data augmentation (WAAS or DGPS for example).
The "open sky" accuracy is not only different from one Android phone model to another; even different handsets of the same model with the same Android version and software can have different GPS performance. At work I have access to two Samsung Galaxy S phones, one of which gets a GPS fix significantly faster and in significantly worse signal conditions than the other. This could be due to manufacturing differences in the GPS chip, or antenna connection, or assembly process. Whether the phone is moving or stationary also influences the accuracy, and big errors in the first fix can take minutes to disappear as the GPS position converges to the correct solution.
i need to develop an app that needs data from the accelerometer. could some one please suggest which android phone in the market would be good enough for accurate accelerometer data generator. since the entire app is based on data fetched by the accelerometer, the device has to be pretty accurate.
The accelerometers in any smart phone are cheap and the difference in the accuracy of the readings is negligible. Even though these devices are cheap, they're very accurate and can output a few thousand readings per second - so the accuracy of your program is going to be dependent on what you DO with the readings in your code not by the device itself.
If you just want an Android phone for development - not to use with a wireless plan, then go to ebay and swoop a used one up for $30-40. Most of these phones have accelerometers in them, but before you buy it - google the model and make sure.
I own a G1 - the original Android phone, and the accelerometer is very accurate.