I need to get the mobile cell tower timing advance.
Is it possible on Android 2.3+ ?
[edit]
It seems that it's not possible to retreive the timing advance...
Is it possible to know the distance between the mobile and the cell and the bearing otherwise ? I suppose I can't use the Google hidden geolocation api in commercial application ;-)
[/edit]
Thanks
For LTE technology there is already an access to Timing Advance values: see http://developer.android.com/reference/android/telephony/CellSignalStrengthLte.html#getTimingAdvance()
This is currently not implemented, and it will be a hard task because it is device-dependent.
The actual timing advance is only known by the modem, also called the baseband processor (BP). The modem is coded by the device's constructor and thus cannot be modified, and can differ between constructors and devices.
Android runs on the application processor (AP) and uses AT commands to communicate with the BP (modem). For example, Android internally sends AT commands to the modem to send SMS, receive calls, ...
The only way to get the actual timing advance would be to query the BP (with an AT command), but whether the constructors implement a specific AT command to get it is up to them. Unfortunately almost no devices implement it (only very old ones), so there is no way to get this information.
I don't think it's a good idea to use timing advance for geolocation, since it is only relevant on GSM networks. Once the device hands over to UMTS networks, no more timing advance.
Why not use http://developer.android.com/guide/topics/location/obtaining-user-location.html ?
If you need Antenna location you don't need Timing Advance. Then you need LAC, CID etc. which are all part of the public AOS API, and then you can query some public database for the location of these. There are dozens of Android apps that already does this. Perhaps even as an example app for Android developers. Google it.
However, GSM Timing Advance (TA) knowledge is definitely still of interest for several other reasons. So if someone know how to extract this info from the Android vendor RIL, please let us know.
Related
Is it possible to retrieve more precise information in cordova concerning the network ?
I have already tested : cordova-plugin-network-information, cordova-plugin-networkinterface and cordova-plugin-sim plugins, but with anyone these plugins I can't get the precision of the cellular network or the WiFi.
In fact, I seek to make reportings about the accuracy/power of the surrounding networks of the smartphone (WiFi & Cellular)
If you know a method (or idea) that works, ideally for iOS & Android, I'm ready :)
Thanks for your help!
++
I don't know of any existing cordova-plugin for this but you can always create your own plugin for such specific use-cases. SignalStrength looks like a promising way to go, probably the whole Android telephony section will be of interest for you.
You can take the network-information cordova plugin and check how they managed to send continous updates on the cellular type and then do it in a similar way for the signal strength.
For the iOS signal-strength part you can have a look at this answer on SO.
I am getting MCC,MNC,LAC values in Android apps, and even I made my own application and I am able to obtain these values.
But Timing Advance (TA) is not available in any of the app or I am not finding any way to get TA. I can use NDK, or AT commands or SDK anything, but I want to get TA value.
Can you suggest any pointers. If not Android, I am OK with iPhone, or Windows App also.
Thanks.
Same questions here Get mobile cell tower timing advance on Android 2.3
For LTE technology there is already an access to Timing Advance values: see http://developer.android.com/reference/android/telephony/CellSignalStrengthLte.html#getTimingAdvance()
No SDK access method for GSM and UMTS.
AT commands are modem specific...
For LTE, TA is available through getTimingAdvance (), starting from API 17 (AOS 4.2 - Jelly Bean).
I was reading following article and I come up to know about RF(Radio frequency) signals are the medium of communication between connect mobile phone calls.
Idea came in my mind to have android app kind of RF scanner which secretly eavesdrop on mobile phone conversations around you.
I know i need more research but i quickly want to know if it is possible with android apps or not ?
enter link description here
Android does not offer APIs to do this. They are buried in radio kernel, which comes from pphone vendor. So answer is negative. It is possible but not with android.
PS: COTS solutions doing this are usually restricted in export and pretty expensive.
Honestly I don't see why this would be impossible. The pitfall of building an app like this would be:
a. user will most likely need a rooted phone and some kind of custom radio with their kernel. This shouldn't be a huge issue though as most users looking for something like this should have the know how to root their phone.
b. you wouldn't be able to release this on the market. as soon as google caught wind of such a malicious app they would remove it immediately.
Catching the signal of other conversation is not enough, cause signal is at least encrypted!
I know it sounds weird. It happens that those Locating APIs regarding WiFi/celluar assistance are disabled in most Android handsets in China. That is, I could hear the callbacks of GPS_PROVIDER when I was out of the building. But if I was in the building, I would never hear the callbacks of NETWORK_PROVIDER. As a result, my app won't be able to locate if put indoor. (I did some experiments with handsets shipped from the states. My app located perfectly well with the NETWORK_PROVIDER if put indoor.)
My guess is that those Chinese Android handsets have sort of castrated the Android OS so that any API related to WiFi/celluar assistance locating has been removed.
But my app still needs to locate. A city-level accuracy will do.
So my question is, is there any possible solution for my situation. Right now I'm considering:
IP address reverse-lookup. But the accuracy is far worse than city-level.
Let my app collect any necessary information (such as router MAC address, celluar tower info) and send them to a third-party server. That server would locate and send back location info to me.
Find (magically) a third-party SDK and hopefully that SDK would do the trick.
Thanks in advance!
IP lookup is fine. You can also try skyhook wireless's location SDK: here
iOS in the early days are using them, and they are actually better/more accurate than Google's location service.
It is definetly possible. You look at the services of Imere's ULaP.
I want to programmatically measure the phone signal strength in a mobile phone. I don't actually care about the mobile phone or the programming environment: It can be based on android or windows mobile or even J2ME and can be from any manufacturer (please no iPhone). However, it needs to be a real, commercial mobile phone and not a special measurement device.
This problem is not as easy as it seems with a first look. I am aware that there already exist a number of methods that claim to return the phone signal strength. Some of these
are:
SystemState.PhoneSignalStrength for WM6
RIL_GetCellTowerInfo for WinCe (dwRxLevel member of returned RILCELLTOWERINFO struct)
android.telephony.NeighboringCellInfo.getRssi() for android
The problem with the above is that they only return a few (under 10) discrete values, meaning that, for instance, the return values of SystemState.PhoneSignalStrength can only be translated to (for instance) -100 dbm, -90 dbm, -80 dbm, -70 dbm and -60 dbm, something that is not useful for my application, since I'd like to have as much precision as possible.
It doesn't matter if there is an undocumented solution that only works on only one phone, if you can tell me a way I'd be grateful.
Thanks in advance
Please check about JSR-256 Mobile Sensor API for Java ME. Nokia S60 5th edition devices support this API. You can check about network signal intensity by using this API. But, it might be good to ask it's granularity from Nokia Forum first.
Here's a solution I found for people who are still looking for an answer:
Some windows mobile HTC mobile phones have a program called fieldtest.exe which contains the information I need (probably other phones also have that, I've only tested with a specific HTC but from search on google I understand that most HTC WM phones it). The fieldtest program not only has the exact signal strength for the phone, but also a big amount of other very useful telephony information not accessible otherwise.
The only problem is how can you use the data of that program in your process since all the values are stored in a ListView.
Well, that was the point of another question I had posted.
So, the solution is to run the fieldtest program and extract / steal the required values from there !
There is a good tutorial that explains how to get the Real GSM signal measured by your phone
Try this tutorial:
http://www.firstdroid.com/2010/05/12/get-provider-gsm-signal-strength/
Hope it help,
Adrian.
On WindowsCE platforms this might be tough. The last platform I worked on used a Siemens modem which I could directly access and get their own information from. However since their last firmware update they've now closed this off and forced me to go via RIL.
I'm guessing you might have to find a particular unit with a particular modem. However I don't know of any in particular. Sorry. :(