Is it possible to create a GPS application using Google Maps to locate the position of items. To do this, I think that the process would be to attatch a GPS transmiting device to an item (such as car keys or sun glasses) and if you lose them, their position can be located.
I have developed some Android Cell Phone applications and would want to make the application to locate the devices for the cell phone market.
For this situation, what would be the best transmitting device to get?
When I misplace my sunglasses, keys, or something they usually end up somewhere out of a line of sight to the satellites ... Thus, even if these items had a GPS receiver they would not be able to get a fix.
Additionally those items need to be able to communicate their location to your device or the internet. And those items need a power source to operate the GPS (and the communication device).
In my opinion, for indoor lost item it would be better to use some signal form the items and then home in on the signal (bluetooth, wifi, whatever). This also needs less power than GPS.
Related
We have an application which need to locate the device(the user) within 200 meters.
Use case:
Out client team have almost 20+ people, they will work separated but within a certain geographic extent(less than 200m). And all of them will take an android device (without network support)The manager of the team need to know the location and distance relative to himself.
I have though that using the GPS to get the location, but I still have two more problem:
1 The work place maybe inside a build, so I am afraid it is hard to get the GPS signal.
2 Get the location.
Event I get the location through the gps, how can I transform the message from the other device to that of the manager? Since there is no network available.
I hope someone can give me some suggestions.
You can investigate the NFC tags with a system to detect the tags and identify the different android devices with NFC feature
I'm not sure if this is the right place to ask my question but since I am not receiving the answer anywhere someone on this Q&A site might have had similar issues as mine and found a good solution.
My Android app needs to be notified if the user of the app is very close to certain places. I can calculate this information from GPS data but for detailed calculations, the GPS data is not enough. For example, the app needs to know if the user has left one room and entered another room.
Is there any solution available for my situation? I believe some sort of device might exist in the market that can notify any nearby Android device listening of its proximity to it.
Based on the example you give, no. Location, proximity and geo-fencing are all very different things. Location is "where am I now" - proximity includes "how far am I from object X" and geo-fencing is "am I within the bounds of a specified area"
Most location data is obtained either through GPS (geo-positioning) or based on facts like "the device is using the signal of a tower with a known location." So "proximity" data is usually based on the device using services that have known locations, not actual proximity based on distances to those devices such as signal strength.
Carriers have data regarding proximity to some extent, for keeping the device connected to the network, but I don't believe they share it. Even if they did, you need to integrate with carrier back-end systems and that's not "an app." Carriers can run traces to get locations, but they don't it regularly.
You could map known tower locations and get signal strength data, but then you need to triangulate to other known signal sources. In others words, knowing how far you are from a bluetooth device does not tell you which direction, so you would need at least 2 signal strength sources (and their relative locations and signal strength map) to determine location. GPS relies on signal strength to several satellites to triangulate device location.
There are not any "radar" devices that I am aware of, nor should you expect them soon. Usually "proximity to a known location" is good enough even for geo-fencing purposes (the device is "within a city" or "near a store"). This is very coarse geo-fencing and essentially doesn't help with the "device left one room and entered another" problem.
But that isn't to say that you couldn't create some kind of signal data for a specialized app in a controlled environment. For example, you may be able to setup devices so that you know the signal strength will be "very strong" for room specific signal sources when the device moves from one room to another. Or setting up bluetooth devices that measure their own signal strength compared to the device you are monitoring and then normalizing that data in some way to determine device proximity and triangulating device location.
A complicated problem that sounds simple... maybe one day it will be.
In general there is no API for that, however, if you could for example make your own "Finger print" of the location you might get it rather reliable. For example could for example scan wifi networks available in the excat spot with their signal strenght, and make your own logic for determining when the "fingerprint" is close enough to actual spot to raise the proximity alert.
You of course should first the have the GPS proximity to alert you when you are close enough to start the fingerprinting..
When moving a big distance, like to another city, with the GPS off, it takes very much time for it, when turned on, to get the first correct point.
So if by example I register to the gps provider, it could take up to 10 min until the first onLocationChanged call.
The network provider will respond faster, but is less accurate.
Is there a way to help the gps provider? To give it an approximate location (the one from the network provider), so it can find my location faster?
I think that google maps made some kind of optimisation, because their app finds my location faster than my basic app, that only register to the gps provider.
Any idea how I could accelerate the process of obtaining my location with decent accuracy ( <30 m) ?
You are right that if you move a long way with the phone switched off, then it can take a long time to get a satellite fix. This is where AGPS helps. The 'A' stands for 'assisted' which is very much carrier and handset dependent in its implementation. In essence it gets an approximate location from cell towers or from public WiFi like coffee shops and then downloads ephemeris and almanac data which tell the phone which satellites are likely to be overhead at that time in that rough location. The phone can then start listening on the frequencies corresponding to the visible satellites first. This should speed up the time to first fix.
Common practice is to use WiFi SSIDs or the location of the cell tower you're registered with to look up your current location via providers like WeFi or Skyhook. Google uses its own service for that (and sees that no one else does).
Another method would be, in case your smartphone has a barometer, to look up the air pressure and try to pin it down to a location. While all these methods can theoretically be used offline, it is easier to fetch the data from the internet.
Also note that inaccurate NTP settings on the phones may lead to longer GPS search times.
Is there a way to help the gps provider?
NickT has answered this, but the android phone has to call the AGPS. In your app you cannot controll that.
I think that google maps made some kind of optimisation, because their
app finds my location faster than my basic app, that only register to
the gps provider.
This should not be the case, probaly you are doing something wrong, or the google app can enable assisted GPS. Try to compare with other android GPS apps (e.g compare with Motion-X-GPS)
it could take up to 10 min until the first onLocationChanged call.
Normally this is far too long, either your phone is known to have a weak GPS quality, or the device did not have free view to open sky. Even without assisted GPS, after 45 seconds, you should have a valid GPS position (asuming free view to open sky).
But this situation can happen, either the first time you use GPS on your device, or when you fly by airplane to a location far away to your last GPS position.
On my iphone i rarly saw such a situation when another GPS app was somehow disturbing, after a reboot of the device the GPS was immedeatly valid.
Again check if it is the fault of your app, by comparing if other apps needs 10 minutes too. (It could be your fault, when you wait to recieve an accuracy <30m while other apps would take the first valid position they get.
If google needs 10 minutes, too, then you could do nothing on that phone, except to expose it to good view to sky.
(Inside an urban canyon it's more difficult to obtain a valid first fix, then on an big place.)
If you look at apps such as Google Maps app on Android, it display a gps icon, that when clicked starts the gps. However, if I don't click that image, and I move, it tracks me anyway. So what is the purpose of they button which we see in so many apps? Does the phone rely on GPS only when that button is pressed, or do they use the button, because they start the gps every x minutes, so if you click the button, it start it immediately?
?
The GPS radio is not started automatically.
When the GPS is off, the phone uses nearby WiFi nodes to find the location. That works pretty well in areas where there are a lot of known WiFi nodes, but the GPS is more exact, and works pretty much everywhere.
Applications like google maps have the gps logo because you may want to be shown your location, usually the application will try and find your location based on wifi and networks first and then using gps. The button will tell the app you want to know the location then and there and that's why it starts, other then that it should just do it automatically.
GPS isn't the only way to track a phone. When you don't have GPS enabled (or if your phone doesn't have a GPS chip in it), the cell phone can triangulate it's distance from the nearby cell towers. It can also do the same thing with nearby WiFi networks.
Since GPS takes up so much power, apps will ask you to enable GPS yourself instead of automatically enabling it when the app starts/runs in the background.
You can read more about common phone tracking methods here: http://en.wikipedia.org/wiki/Mobile_phone_tracking
How can I locate other BlueTooth devices that are using my app and show them on map, with range, exact location, like radar map.
The only way you could possibly do this is if your Bluetooth slave devices individually have the ability to track and report their location (e.g. GPS).
Otherwise it's not possible at all. The Bluetooth radio and antenna in your Android device will have no direction finding ability.
Possible design idea :
You want to implement this with the help of a webservice.
Make your app report its being used(may be you want to report at regular intervals and shutdown of app) along with location information (probably you want to use GPS, have a look at this : Obtaining User Location).
Make you radar app to read those information and prepare the map.
Cons :
Availability of GPS will affect your application
Accuracy is limited.