Android App Development: Android Services

Android Service is used for long-running processes that do not require user interaction, such as calling a web service and parsing response. Or processes that need to be running even if the application that started the service is not on the foreground such as playing mp3 files in a music player.

we need to distinguish between A Service and a Thread or an AsyncTask: Threads or Async task perform their tasks in a background thread thus they do not block the main thread, while a service performs it’s work in the main thread. so if a service is performing an intensive task such as calling a web service, it may block the main thread until it finishes. So for intensive tasks a service should run it’s work in a background thread.

A service runs in the same process of the application and keeps running until stopped by itself, stopped by the user or killed by the system if it needs memory.

Creating a service:

to create a service we create a class that extends android.app.Service and it would be like this:

public class DemoService extends Service {

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}

}

next we need to define our service in our AndroidManifest.xml file:

<service android:name="DemoService"></service>

The service life cycle has the following events

  • onCreate(): called when the service is created.
  • onStart(): Called when the service starts by a call to startService(Intent intent).
  • onDestroy(): Called as the service is terminates.

Calling a service:

A service can be called from an activity in two ways:

  1. By calling startService(Intent intent).
  2. By binding to the service through an Binder object.

calling startService(Intent intent):

to start a service from an activity using this method, we create an intent and start the service like this:

Intent intent=new Intent(this,DemoService.class);
startService(intent);

the startService(intent) method causes the onStart() method of the service to be called, so the service can execute it’s work like this:

public class DemoService extends Service {

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		doSomething();
	}

	public void doSomething(){
		// do some work
	}

}

the service will keep running until it stops itself via stop stopSelf() after finishing work:

@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		doSomething();
		stopSelf();
	}

or it can be stopped from the activity via stopService(Intent intent).

Binding to a service through an Binder object:

As the service runs in the same process of the application the service has only one instance (singleton) instance running. you may want to keep reference to this instance to perform periodical tasks or to call the service methods themselves.

to make the service bind-able we extends Binder class and return an instance of it in the service’s onBind(Intent intent) method:

public class DemoService extends Service {

	private final IBinder binder = new LocalBinder();
	@Override
	public IBinder onBind(Intent arg0) {
		return binder;
	}

	public class LocalBinder extends Binder {
		DemoService getService() {
            return DemoService.this;
        }
    }

	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		doSomething();
		stopSelf();
	}

	public void doSomething(){
		// do something
	}

}

then we bind the service from our activity by first creating a ServiceConnection object to handle the service connection/disconnection then binding to the service by an intent like this:

public class MainActivity extends Activity {

	DemoService mService;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    ServiceConnection serviceConn=new ServiceConnection() {

                /**
                * service unbound, release from memory
                **/
		@Override
		public void onServiceDisconnected(ComponentName name) {
			mService=null;
		}

                /**
                * service is bound, start it's work
                **/
		@Override
		public void onServiceConnected(ComponentName name, IBinder service) {
			mService=((LocalBinder)service).getService();
			mService.doSomething();

		}
	};

    @Override
    protected void onResume() {
    	super.onResume();
        // bind to the service by an intent
    	Intent intent=new Intent(this,DemoService.class);
        // AUTO CREATE: creates the service and gives it an importance so that it won't be killed
        // unless any process bound to it (our activity in this case) is killed to
    	bindService(intent, serviceConn, Context.BIND_AUTO_CREATE);
    }

    @Override
    protected void onDestroy() {
    	super.onDestroy();
        / unbind the service whena ctivity is destroyed
    	unbindService(serviceConn);
    }
}

notice that we unbind the service in the activity’s onDestroy() method to disconnect from the service and stop it from executing any further

and that’s was all about Android services, stay tuned for another Android tutorial.

Android App Development: Android Services

Android Service is used for long-running processes that do not require user interaction, such as calling a web service and parsing response. Or processes that need to be running even if the application that started the service is not on the foreground such as playing mp3 files in a music player.

we need to distinguish between A Service and a Thread or an AsyncTask: Threads or Async task perform their tasks in a background thread thus they do not block the main thread, while a service performs it’s work in the main thread. so if a service is performing an intensive task such as calling a web service, it may block the main thread until it finishes. So for intensive tasks a service should run it’s work in a background thread.

A service runs in the same process of the application and keeps running until stopped by itself, stopped by the user or killed by the system if it needs memory.

Creating a service:

to create a service we create a class that extends android.app.Service and it would be like this:

public class DemoService extends Service {

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}

}

next we need to define our service in our AndroidManifest.xml file:

<service android:name="DemoService"></service>

The service life cycle has the following events

  • onCreate(): called when the service is created.
  • onStart(): Called when the service starts by a call to startService(Intent intent).
  • onDestroy(): Called as the service is terminates.

Calling a service:

A service can be called from an activity in two ways:

  1. By calling startService(Intent intent).
  2. By binding to the service through an Binder object.

calling startService(Intent intent):

to start a service from an activity using this method, we create an intent and start the service like this:

Intent intent=new Intent(this,DemoService.class);
startService(intent);

the startService(intent) method causes the onStart() method of the service to be called, so the service can execute it’s work like this:

public class DemoService extends Service {

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		doSomething();
	}

	public void doSomething(){
		// do some work
	}

}

the service will keep running until it stops itself via stop stopSelf() after finishing work:

@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		doSomething();
		stopSelf();
	}

or it can be stopped from the activity via stopService(Intent intent).

Binding to a service through an Binder object:

As the service runs in the same process of the application the service has only one instance (singleton) instance running. you may want to keep reference to this instance to perform periodical tasks or to call the service methods themselves.

to make the service bind-able we extends Binder class and return an instance of it in the service’s onBind(Intent intent) method:

public class DemoService extends Service {

	private final IBinder binder = new LocalBinder();
	@Override
	public IBinder onBind(Intent arg0) {
		return binder;
	}

	public class LocalBinder extends Binder {
		DemoService getService() {
            return DemoService.this;
        }
    }

	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		doSomething();
		stopSelf();
	}

	public void doSomething(){
		// do something
	}

}

then we bind the service from our activity by first creating a ServiceConnection object to handle the service connection/disconnection then binding to the service by an intent like this:

public class MainActivity extends Activity {

	DemoService mService;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    ServiceConnection serviceConn=new ServiceConnection() {

                /**
                * service unbound, release from memory
                **/
		@Override
		public void onServiceDisconnected(ComponentName name) {
			mService=null;
		}

                /**
                * service is bound, start it's work
                **/
		@Override
		public void onServiceConnected(ComponentName name, IBinder service) {
			mService=((LocalBinder)service).getService();
			mService.doSomething();

		}
	};

    @Override
    protected void onResume() {
    	super.onResume();
        // bind to the service by an intent
    	Intent intent=new Intent(this,DemoService.class);
        // AUTO CREATE: creates the service and gives it an importance so that it won't be killed
        // unless any process bound to it (our activity in this case) is killed to
    	bindService(intent, serviceConn, Context.BIND_AUTO_CREATE);
    }

    @Override
    protected void onDestroy() {
    	super.onDestroy();
        / unbind the service whena ctivity is destroyed
    	unbindService(serviceConn);
    }
}

notice that we unbind the service in the activity’s onDestroy() method to disconnect from the service and stop it from executing any further

and that’s was all about Android services, stay tuned for another Android tutorial.

Android App Development: Android Services

Android Service is used for long-running processes that do not require user interaction, such as calling a web service and parsing response. Or processes that need to be running even if the application that started the service is not on the foreground such as playing mp3 files in a music player.

we need to distinguish between A Service and a Thread or an AsyncTask: Threads or Async task perform their tasks in a background thread thus they do not block the main thread, while a service performs it’s work in the main thread. so if a service is performing an intensive task such as calling a web service, it may block the main thread until it finishes. So for intensive tasks a service should run it’s work in a background thread.

A service runs in the same process of the application and keeps running until stopped by itself, stopped by the user or killed by the system if it needs memory.

Creating a service:

to create a service we create a class that extends android.app.Service and it would be like this:

public class DemoService extends Service {

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}

}

next we need to define our service in our AndroidManifest.xml file:

<service android:name="DemoService"></service>

The service life cycle has the following events

  • onCreate(): called when the service is created.
  • onStart(): Called when the service starts by a call to startService(Intent intent).
  • onDestroy(): Called as the service is terminates.

Calling a service:

A service can be called from an activity in two ways:

  1. By calling startService(Intent intent).
  2. By binding to the service through an Binder object.

calling startService(Intent intent):

to start a service from an activity using this method, we create an intent and start the service like this:

Intent intent=new Intent(this,DemoService.class);
startService(intent);

the startService(intent) method causes the onStart() method of the service to be called, so the service can execute it’s work like this:

public class DemoService extends Service {

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		doSomething();
	}

	public void doSomething(){
		// do some work
	}

}

the service will keep running until it stops itself via stop stopSelf() after finishing work:

@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		doSomething();
		stopSelf();
	}

or it can be stopped from the activity via stopService(Intent intent).

Binding to a service through an Binder object:

As the service runs in the same process of the application the service has only one instance (singleton) instance running. you may want to keep reference to this instance to perform periodical tasks or to call the service methods themselves.

to make the service bind-able we extends Binder class and return an instance of it in the service’s onBind(Intent intent) method:

public class DemoService extends Service {

	private final IBinder binder = new LocalBinder();
	@Override
	public IBinder onBind(Intent arg0) {
		return binder;
	}

	public class LocalBinder extends Binder {
		DemoService getService() {
            return DemoService.this;
        }
    }

	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		doSomething();
		stopSelf();
	}

	public void doSomething(){
		// do something
	}

}

then we bind the service from our activity by first creating a ServiceConnection object to handle the service connection/disconnection then binding to the service by an intent like this:

public class MainActivity extends Activity {

	DemoService mService;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    ServiceConnection serviceConn=new ServiceConnection() {

                /**
                * service unbound, release from memory
                **/
		@Override
		public void onServiceDisconnected(ComponentName name) {
			mService=null;
		}

                /**
                * service is bound, start it's work
                **/
		@Override
		public void onServiceConnected(ComponentName name, IBinder service) {
			mService=((LocalBinder)service).getService();
			mService.doSomething();

		}
	};

    @Override
    protected void onResume() {
    	super.onResume();
        // bind to the service by an intent
    	Intent intent=new Intent(this,DemoService.class);
        // AUTO CREATE: creates the service and gives it an importance so that it won't be killed
        // unless any process bound to it (our activity in this case) is killed to
    	bindService(intent, serviceConn, Context.BIND_AUTO_CREATE);
    }

    @Override
    protected void onDestroy() {
    	super.onDestroy();
        / unbind the service whena ctivity is destroyed
    	unbindService(serviceConn);
    }
}

notice that we unbind the service in the activity’s onDestroy() method to disconnect from the service and stop it from executing any further

and that’s was all about Android services, stay tuned for another Android tutorial.

Android App Development: Android Services

Android Service is used for long-running processes that do not require user interaction, such as calling a web service and parsing response. Or processes that need to be running even if the application that started the service is not on the foreground such as playing mp3 files in a music player.

we need to distinguish between A Service and a Thread or an AsyncTask: Threads or Async task perform their tasks in a background thread thus they do not block the main thread, while a service performs it’s work in the main thread. so if a service is performing an intensive task such as calling a web service, it may block the main thread until it finishes. So for intensive tasks a service should run it’s work in a background thread.

A service runs in the same process of the application and keeps running until stopped by itself, stopped by the user or killed by the system if it needs memory.

Creating a service:

to create a service we create a class that extends android.app.Service and it would be like this:

public class DemoService extends Service {

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}

}

next we need to define our service in our AndroidManifest.xml file:

<service android:name="DemoService"></service>

The service life cycle has the following events

  • onCreate(): called when the service is created.
  • onStart(): Called when the service starts by a call to startService(Intent intent).
  • onDestroy(): Called as the service is terminates.

Calling a service:

A service can be called from an activity in two ways:

  1. By calling startService(Intent intent).
  2. By binding to the service through an Binder object.

calling startService(Intent intent):

to start a service from an activity using this method, we create an intent and start the service like this:

Intent intent=new Intent(this,DemoService.class);
startService(intent);

the startService(intent) method causes the onStart() method of the service to be called, so the service can execute it’s work like this:

public class DemoService extends Service {

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		doSomething();
	}

	public void doSomething(){
		// do some work
	}

}

the service will keep running until it stops itself via stop stopSelf() after finishing work:

@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		doSomething();
		stopSelf();
	}

or it can be stopped from the activity via stopService(Intent intent).

Binding to a service through an Binder object:

As the service runs in the same process of the application the service has only one instance (singleton) instance running. you may want to keep reference to this instance to perform periodical tasks or to call the service methods themselves.

to make the service bind-able we extends Binder class and return an instance of it in the service’s onBind(Intent intent) method:

public class DemoService extends Service {

	private final IBinder binder = new LocalBinder();
	@Override
	public IBinder onBind(Intent arg0) {
		return binder;
	}

	public class LocalBinder extends Binder {
		DemoService getService() {
            return DemoService.this;
        }
    }

	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		doSomething();
		stopSelf();
	}

	public void doSomething(){
		// do something
	}

}

then we bind the service from our activity by first creating a ServiceConnection object to handle the service connection/disconnection then binding to the service by an intent like this:

public class MainActivity extends Activity {

	DemoService mService;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    ServiceConnection serviceConn=new ServiceConnection() {

                /**
                * service unbound, release from memory
                **/
		@Override
		public void onServiceDisconnected(ComponentName name) {
			mService=null;
		}

                /**
                * service is bound, start it's work
                **/
		@Override
		public void onServiceConnected(ComponentName name, IBinder service) {
			mService=((LocalBinder)service).getService();
			mService.doSomething();

		}
	};

    @Override
    protected void onResume() {
    	super.onResume();
        // bind to the service by an intent
    	Intent intent=new Intent(this,DemoService.class);
        // AUTO CREATE: creates the service and gives it an importance so that it won't be killed
        // unless any process bound to it (our activity in this case) is killed to
    	bindService(intent, serviceConn, Context.BIND_AUTO_CREATE);
    }

    @Override
    protected void onDestroy() {
    	super.onDestroy();
        / unbind the service whena ctivity is destroyed
    	unbindService(serviceConn);
    }
}

notice that we unbind the service in the activity’s onDestroy() method to disconnect from the service and stop it from executing any further

and that’s was all about Android services, stay tuned for another Android tutorial.

Looks like it may be the iPhone 4S instead of 5

Sources in Taiwan have been cited by a second investment research firm indicating the iPad 3 will not be out until 2012 and that the next generation iPhone is being referred to as the “4s”.

Pointing to “recent Apple supply chain checks,” FBR Capital Markets analyst Craig Berger said production of the company’s fifth-generation iPhone has come into view for component suppliers “like Broadcom, Qualcomm, and Omnivision,” each of which are indicating “a late September or early October” manufacturing ramp for the handset.

In a note to clients on the matter, Berger identified the new iPhone as going by the code name “N94″ and indicated that his sources have referred to the device under the presumed marketing name “iPhone 4S,” which would suggest the handset will arrive as an evolutionary upgrade to the existing iPhone 4 rather than a radical redesign like the ones that took place during the transition from the original iPhone to the iPhone 3G and from the iPhone 3GS to the iPhone 4.

Source: Apple supply chain points to “iPhone 4S” in Sept., iPad 3 prototype in early 2012

Looks like it may be the iPhone 4S instead of 5

Sources in Taiwan have been cited by a second investment research firm indicating the iPad 3 will not be out until 2012 and that the next generation iPhone is being referred to as the “4s”.

Pointing to “recent Apple supply chain checks,” FBR Capital Markets analyst Craig Berger said production of the company’s fifth-generation iPhone has come into view for component suppliers “like Broadcom, Qualcomm, and Omnivision,” each of which are indicating “a late September or early October” manufacturing ramp for the handset.

In a note to clients on the matter, Berger identified the new iPhone as going by the code name “N94″ and indicated that his sources have referred to the device under the presumed marketing name “iPhone 4S,” which would suggest the handset will arrive as an evolutionary upgrade to the existing iPhone 4 rather than a radical redesign like the ones that took place during the transition from the original iPhone to the iPhone 3G and from the iPhone 3GS to the iPhone 4.

Source: Apple supply chain points to “iPhone 4S” in Sept., iPad 3 prototype in early 2012

Looks like it may be the iPhone 4S instead of 5

Sources in Taiwan have been cited by a second investment research firm indicating the iPad 3 will not be out until 2012 and that the next generation iPhone is being referred to as the “4s”.

Pointing to “recent Apple supply chain checks,” FBR Capital Markets analyst Craig Berger said production of the company’s fifth-generation iPhone has come into view for component suppliers “like Broadcom, Qualcomm, and Omnivision,” each of which are indicating “a late September or early October” manufacturing ramp for the handset.

In a note to clients on the matter, Berger identified the new iPhone as going by the code name “N94″ and indicated that his sources have referred to the device under the presumed marketing name “iPhone 4S,” which would suggest the handset will arrive as an evolutionary upgrade to the existing iPhone 4 rather than a radical redesign like the ones that took place during the transition from the original iPhone to the iPhone 3G and from the iPhone 3GS to the iPhone 4.

Source: Apple supply chain points to “iPhone 4S” in Sept., iPad 3 prototype in early 2012

Looks like it may be the iPhone 4S instead of 5

Sources in Taiwan have been cited by a second investment research firm indicating the iPad 3 will not be out until 2012 and that the next generation iPhone is being referred to as the “4s”.

Pointing to “recent Apple supply chain checks,” FBR Capital Markets analyst Craig Berger said production of the company’s fifth-generation iPhone has come into view for component suppliers “like Broadcom, Qualcomm, and Omnivision,” each of which are indicating “a late September or early October” manufacturing ramp for the handset.

In a note to clients on the matter, Berger identified the new iPhone as going by the code name “N94″ and indicated that his sources have referred to the device under the presumed marketing name “iPhone 4S,” which would suggest the handset will arrive as an evolutionary upgrade to the existing iPhone 4 rather than a radical redesign like the ones that took place during the transition from the original iPhone to the iPhone 3G and from the iPhone 3GS to the iPhone 4.

Source: Apple supply chain points to “iPhone 4S” in Sept., iPad 3 prototype in early 2012

Samsung’s request to see the iPhone 5 and iPad 3 denied

A few weeks ago Samsung requested to see Apple’s next generation iPhone and iPad, a request that has been denied. It is pretty obvious this request was made only because Apple requested, and was granted permission, to take a look at some of Samsung’s next generation hardware. The only difference between the two is that Samsung’s hardware was already shown to the public.

This is what the judge had to say:

Samsung is free to argue, for instance, that there is little likelihood of confusion because consumers will not encounter its products side-by-side with the iPhone 4 or iPad 2, but rather with Apple’s next generation iPhone and iPad. Similarly, as to proximity, Samsung is free to argue that because the iPhone 4 and [iPad] 2 will soon be outmoded and reduced in price, they are not being sold (or very soon will not be sold) to the same class of purchasers who are likely to buy new Samsung products. By choosing to allege infringement only of its current products, Apple opens itself up to these arguments.

Source: Samsung’s Request to See iPhone 5 and iPad 3 Denied

Samsung’s request to see the iPhone 5 and iPad 3 denied

A few weeks ago Samsung requested to see Apple’s next generation iPhone and iPad, a request that has been denied. It is pretty obvious this request was made only because Apple requested, and was granted permission, to take a look at some of Samsung’s next generation hardware. The only difference between the two is that Samsung’s hardware was already shown to the public.

This is what the judge had to say:

Samsung is free to argue, for instance, that there is little likelihood of confusion because consumers will not encounter its products side-by-side with the iPhone 4 or iPad 2, but rather with Apple’s next generation iPhone and iPad. Similarly, as to proximity, Samsung is free to argue that because the iPhone 4 and [iPad] 2 will soon be outmoded and reduced in price, they are not being sold (or very soon will not be sold) to the same class of purchasers who are likely to buy new Samsung products. By choosing to allege infringement only of its current products, Apple opens itself up to these arguments.

Source: Samsung’s Request to See iPhone 5 and iPad 3 Denied

Samsung’s request to see the iPhone 5 and iPad 3 denied

A few weeks ago Samsung requested to see Apple’s next generation iPhone and iPad, a request that has been denied. It is pretty obvious this request was made only because Apple requested, and was granted permission, to take a look at some of Samsung’s next generation hardware. The only difference between the two is that Samsung’s hardware was already shown to the public.

This is what the judge had to say:

Samsung is free to argue, for instance, that there is little likelihood of confusion because consumers will not encounter its products side-by-side with the iPhone 4 or iPad 2, but rather with Apple’s next generation iPhone and iPad. Similarly, as to proximity, Samsung is free to argue that because the iPhone 4 and [iPad] 2 will soon be outmoded and reduced in price, they are not being sold (or very soon will not be sold) to the same class of purchasers who are likely to buy new Samsung products. By choosing to allege infringement only of its current products, Apple opens itself up to these arguments.

Source: Samsung’s Request to See iPhone 5 and iPad 3 Denied

Samsung’s request to see the iPhone 5 and iPad 3 denied

A few weeks ago Samsung requested to see Apple’s next generation iPhone and iPad, a request that has been denied. It is pretty obvious this request was made only because Apple requested, and was granted permission, to take a look at some of Samsung’s next generation hardware. The only difference between the two is that Samsung’s hardware was already shown to the public.

This is what the judge had to say:

Samsung is free to argue, for instance, that there is little likelihood of confusion because consumers will not encounter its products side-by-side with the iPhone 4 or iPad 2, but rather with Apple’s next generation iPhone and iPad. Similarly, as to proximity, Samsung is free to argue that because the iPhone 4 and [iPad] 2 will soon be outmoded and reduced in price, they are not being sold (or very soon will not be sold) to the same class of purchasers who are likely to buy new Samsung products. By choosing to allege infringement only of its current products, Apple opens itself up to these arguments.

Source: Samsung’s Request to See iPhone 5 and iPad 3 Denied

TMobile has over 1 million iPhones, Verizon data packages, and more in this week’s mobile news.

TMobile reports that there are over 1 million iPhones active on their network.

Apple is interested in implementing auto tilt correction for the iPhone’s camera.

Verizon is putting an end to the unlimited data plan, here are the details on the data packages they will offer.

40% of European smartphone buyers will purchas an iPhone next, 19% will buy Android.

Apple may not get the ‘App Store’ trademark but continues to send out cease and decease letters.

TMobile has over 1 million iPhones, Verizon data packages, and more in this week’s mobile news.

TMobile reports that there are over 1 million iPhones active on their network.

Apple is interested in implementing auto tilt correction for the iPhone’s camera.

Verizon is putting an end to the unlimited data plan, here are the details on the data packages they will offer.

40% of European smartphone buyers will purchas an iPhone next, 19% will buy Android.

Apple may not get the ‘App Store’ trademark but continues to send out cease and decease letters.

TMobile has over 1 million iPhones, Verizon data packages, and more in this week’s mobile news.

TMobile reports that there are over 1 million iPhones active on their network.

Apple is interested in implementing auto tilt correction for the iPhone’s camera.

Verizon is putting an end to the unlimited data plan, here are the details on the data packages they will offer.

40% of European smartphone buyers will purchas an iPhone next, 19% will buy Android.

Apple may not get the ‘App Store’ trademark but continues to send out cease and decease letters.