views:

265

answers:

5

Can anyone explain 3G technology from a programmer's perspective? I am a little bit confused. For instance, if I develop a mobile application with Android or IPhone SDK. Shall I concern about the network I used? Or the SDK has a same interface for all those different network(3G,GPRS,CDMA). Moreover, is 3G a specific technology or a set of communication technology? Is it just same as WCDMA?

Thanks.

+5  A: 

You do not need to care about the specific protocol, but you may very well want to distinguish between WiFi and 3G, and have your program behave differently according to what is available, because WiFi is faster and cheaper. In case of the iPhone, there are even explicit agreements that certain heavy-data activities must only take place over WiFi.

Another idea would be to detect if roaming is active and warn the user about it (even though the phone should already be doing that).

Thilo
+1 for the warning about roaming. By default, the iPhone is very unreliable at actually stopping 3G data usage when roaming.
Coxy
+1 for the roaming too. Very important indeed!
o.k.w
mmc
@mmc lucky you.
zapping
+2  A: 

3G relates to the speed and capabilities of the cellular network. From an API and programming standpoint, there is no difference, however the 3G network will be able to transfer data at a generally faster rate, but also consume more battery power when active.

3G is an umbrella term for multiple technologies, including UMTS, HSPA, HSDPA, EVDO. WCDMA is simply a modulation scheme, but is often analogous to UMTS when used in cellular networks (which define more than simple modulation).

Yann Ramin
+3  A: 

I'm sure you have no problem finding definition of 3G via a web search. Here's one from wikipedia.

As a developer, your main concern should be whether the application you are developing should/must ride on top of 3G-level type of connection in terms of bandwidth and/or streaming capabilities. You might need to identify the communication layer i.e packet bearer/wifi or just older 2G (GSM etc) and so on.

You shouldn't need to (unless specifically required) really worry about the underlying technicality of it. For Andriod, the SDK should provide you with enough tools/utilities to build an application which is abstracted from the communication layer.

o.k.w
+1  A: 

To test your application on the emulator under different conditions (though not WiFi at the moment) you can use the emulator console and gsm command.

the 'gsm data <state>' allows you to change the state of your GPRS connection
valid values for <state> are the following:

  unregistered    no network available
  home            on local network, non-roaming
  roaming         on roaming network
  searching       searching networks
  denied          emergency calls only
  off             same as 'unregistered'
  on              same as 'home'

Alternatively from the command line:

$ adb emu gsm data roaming # set roaming

$ adb emu gsm data home # set home
dtmilano
+2  A: 

3G is not a single technology but a family of mobile communications standards. There are different standards in different regions around the globe. In USA CDMA is used (not sure if WCDMA as well) while in Europe WCDMA (or better known as UMTS) is used which was lately upgraded to HSPA. These are both 3G family standards.

GPRS and EDGE which are 2G and 2.5G family standards are the predecessors of the 3G family. From the programmer's perspective the only difference between the listed standards GPRS, EDGE and 3G (UMTS or CDMA) is the connection speed.

niko