01-29-2009 03:51 AM
On a blackberry curve 8320 with the 4.5 version of the OS (and SDK), I am doing the following:
* Initiate a phone call
* Send phone app to the background
* Run an App that does data transfer, can see that data transfer is "blocked" due to live call being in progress
* With call still in progess, invoke RadioInfo.isDataServiceSuspended(), which to my surprise returns false.
According to the docs:
isDataServiceSuspended() indicates whether data services are temporarily suspended at the present time. Data services are suspended on class B networks when the phone is active.
This seems like exactly what is happening in my case, yet isDataServiceSuspended() returns false. Am I mis-interpreting the docs? if so, under what scenarios isDataServiceSuspended() actually useful? Is there another way to see if data transfer is "on hold" due to a live call?
My data connection is an unlimited data plan from T-Mobile USA, and it currently says I'm in "edge" coverage (as opposed to EDGE). I did see this thread http://tinyurl.com/bg79k5 which discusses not getting simultaneous voice/data over edge connections, but couldn't find the answer there.
01-29-2009 11:23 PM
I think I figured out what was going on -- I was connected via Wi-Fi, and so even though the GPRS connection was
suspended, the Wi-Fi connection was not, and so isDataServiceSuspended() returned false because it saw the Wi-Fi as an available data connection. When I turned off the Wi-Fi radio and retested by placing a call, then isDataServiceSuspended() returned true as I was originally expecting.
Even if I set Mobile Network Options / Connection Preference to Mobile Network Only, isDataServiceSuspended() still
returns false if I am connect to a Wi-Fi access point. So that preference cannot make it ignore the Wi-Fi connection.
Ideally isDataServiceSuspended() would take a waf (Wireless Access Family) argument so it would be possible to specify which WAF you are interested in.