Android GSM location with different mobile operators
Can anybody say, when I use gsm location, I will get it only with a tower of my mobile operator, or I can get it with towers of different operators?
If my user drive his car, but no any his mobile operator towers, how can device get its location? Only GSM.
No, you cannot currently get location without using GPS or internet.
Location techniques based on WiFi, Cellular, or Bluetooth work with the help of a large database that is constantly being updated. A device scans for transmitter IDs and then sends these in a query through the internet to a service such as Google, Apple, or Skyhook. That service responds with a location based on previous wireless surveys from known locations. Without internet access, you have to have a local copy of such a database and keep this up to date. For global usage, this is very impractical.
Theoretically, a mobile provider could provide local data service only but no access to the internet, and then answer location queries from mobile devices. Mobile providers don't do this; no one wants to pay for this kind of restricted data access. If you have data service through your mobile provider, then you have internet access.
In short, using LocationManager.NETWORK_PROVIDER or android.hardware.location.network to get location requires use of the internet.
Using the last known position requires you to have had GPS or internet access very recently. If you just had internet, presumably you can adjust your position or settings to get internet again. If your device has not had GPS or internet access, the last known position feature will not help you.
Without GPS or internet, you could:
Take pictures of the night sky and use the current time to estimate your location based on a star chart. This would probably require additional equipment to ensure that the angles for your pictures are correctly measured. Use an accelerometer to track location starting from a known position. The accumulation of error in this kind of approach makes it impractical for most situations.
You can get cell ID and LAC and than use the Google Maps Geolocation API. But sometimes it returns completely wrong results.
If you are approaching this from:
The user has a GPS but no Internet connection : Use SMS to communicate GPS coordinates to some decoding server
The user has no GPS at all but has WiFi: In this case you can use any available WiPS provider service. This basically means querying nearby WiFis against a known list of WiFi addresses and their locations. Same SMS communication applies.
The user has neither GPS nor WIFI, just GSM: If you are really stuck with a user that has only GSM. Then you may have to use triangulation techniques or if the network providers in the user area supports, the cellphone location id. In the case of triangulation, you would need an already available fingerprint database of network strengths of different providers at different locations or cids. Then you will use this information to guess the user location, assuming again you will be communicating to your decoding server through SMS. If the device does have an accelerometer/gyroscope/compass, you could guess the longitude and latitude with the help of an offline map if they are on a road.
This answer may be helpful for any other technology you may be interested in, but most of these would be impractical if used wrongly/incorrectly.
链接地址: http://www.djcxy.com/p/94866.html