<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Xoriant Software Product Engineering Blog &#187; Blackberry</title>
	<atom:link href="http://www.xoriant.com/blog/tag/blackberry/feed" rel="self" type="application/rss+xml" />
	<link>http://www.xoriant.com/blog</link>
	<description>Product Engineering Outsourcing, Tech Talk</description>
	<lastBuildDate>Tue, 01 Nov 2011 09:02:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Blackberry – Geocode and Maps</title>
		<link>http://www.xoriant.com/blog/mobile-application-development/blackberry_geocode_maps.html</link>
		<comments>http://www.xoriant.com/blog/mobile-application-development/blackberry_geocode_maps.html#comments</comments>
		<pubDate>Tue, 20 Jul 2010 11:53:04 +0000</pubDate>
		<dc:creator>Pawan Sachdeva</dc:creator>
				<category><![CDATA[Mobile Application Development]]></category>
		<category><![CDATA[Blackberry]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=721</guid>
		<description><![CDATA[The concept of retrieving location information using GPS device and Location API is already discussed in one of the earlier post (http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html ). In this article we are going to learn to use of Blackberry’s Location API and work with geocoding and reverse geocoding. Though, Geocoding and reverse Geocoding information could be used in multiple [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html' rel='bookmark' title='Permanent Link: BlackBerry – Location based programming'>BlackBerry – Location based programming</a> <small>A BlackBerry phone is primarily a business phone with additional features like Email, Phone, Maps, GPS, Organizer, Social Networking and games. Developers can take advantage of various BlackBerry APIs to...</small></li>
<li><a href='http://www.xoriant.com/blog/mobile-application-development/blackberry-development-environment-and-installation.html' rel='bookmark' title='Permanent Link: BlackBerry Development Environment and Installation'>BlackBerry Development Environment and Installation</a> <small>In this blog post, we shall take a look at how to get started with programming for the BlackBerry device. We shall cover what the device is, give you an...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The concept of retrieving location information using GPS device and Location API is already discussed in one of the earlier post (<a href="http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html">http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html</a> <a href="http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html"></a>). In this article we are going to learn to use of Blackberry’s Location API and work with geocoding and reverse geocoding. Though, Geocoding and reverse Geocoding information could be used in multiple applications, a majority of applications will need to integrate the location information and display that on a Map.</p>
<p>To start with, let me introduce some terms:</p>
<p><strong>Geocoding</strong>: is the process of finding associated geographic coordinates (often expressed as latitude and longitude) from other geographic data, such as street addresses, or zip codes (postal codes). With geographic coordinates, the features can be mapped and entered into Geographic Information Systems, or the coordinates can be embedded into media such as digital photographs via geotagging.</p>
<p><strong>Reverse Geocoding</strong>: is the process of back (reverse) coding of a point location (latitude, longitude) to a readable address or place name. This permits the identification of nearby street addresses, places, and/or real subdivisions such as neighborhoods, county, state, or country. Combined with geocoding and routing services, reverse geocoding is a critical component of mobile location-based services to convert a coordinate obtained by GPS to a readable street address which is easier to understand by the end user.</p>
<p>Before we see the code part, let us look at the BlackBerry API (Locator) that facilitates the application to gain access to <em>geospatial</em> coordinates for an address and vice-versa i.e.  retrieve a <em>street address</em> for given coordinates in case of reverse geocoding.</p>
<p>Locator is a Geocoding service in BlackBerry that allows you to obtain location address for an address. This service has static method “geocode”, “reverseGeocode” and as it should be obvious by now, geocode require address and returns coordinates, reverseGeocode require coordinates and returns the address information.</p>
<p>There are few things to keep in mind while Locator is used in the application</p>
<ol>
<li>LBS Map API is a pre-requisite for Locator API to      work. Application may throw exception if the LS MAP API is not installed.</li>
<li>Call to geocode is synchronous in nature. And at any      given time there should be one call made using the Locator class.      Application may throw exception if more than one call is made.</li>
<li>Call to geocode and reverseGeocode should be made      outside the event dispatch thread. Requests to these methods that are made      on the event dispatch thread are denied and result in an exception.</li>
</ol>
<p><strong>Let us look how to use the Locator API to retrieve geospatial coordinates for an address using geocode.</strong></p>
<ul>
<li>Packages required</li>
</ul>
<pre class="brush: plain; title: ; notranslate">
import net.rim.device.api.lbs.*;
import javax.microedition.location.*;
</pre>
<ul>
<li>Create a class and constructor</li>
</ul>
<pre class="brush: plain; title: ; notranslate">
public class myGeocode
{
public myGeocode()
{

}
}
</pre>
<ul>
<li>Create a private Thread variable</li>
</ul>
<pre class="brush: plain; title: ; notranslate">private Thread geocoder;</pre>
<ul>
<li>In constructor, create instance of the Thread class.      As mentioned earlier, geocode cannot be performed on the application’s      primary thread.</li>
</ul>
<pre class="brush: plain; title: ; notranslate">
geocoder = new Thread(thread);
geocoder.setPriority(Thread.MIN_PRIORITY);
geocoder.start();
</pre>
<ul>
<li>In the class, create a Thread that invokdes a public      run() method.</li>
</ul>
<pre class="brush: plain; title: ; notranslate">
Runnable thread = new Runnable() {

public void run() {

AddressInfo addrInfo = new AddressInfo();

addrInfo.setField(AddressInfo.STREET, &quot;Whitewood Dr&quot;);

addrInfo.setField(AddressInfo.CITY, &quot;San Jose&quot;);

addrInfo.setField(AddressInfo.STATE, &quot;California&quot;);

addrInfo.setField(AddressInfo.POSTAL_CODE, &quot;95110&quot;);

addrInfo.setField(AddressInfo.COUNTRY, &quot;US&quot;);

Coordinates startCoords = new Coordinates(37.386087,-121.889244, Float.NaN);

try {

Landmark[] results = Locator.geocode(addrInfo, startCoords);

}

catch ( LocatorException lex ) {

//thrown when The BlackBerry device is not sufficiently connected to send or receive over any transport.

}

catch (MapServiceException mex) {

// if the LBS Map API is not installed on a BlackBerry device or if an application makes more than one request at a time.

}

catch (IllegalThreadStateException itex) {

// if a request is made on the event dispatch thread

}

catch(IllegalStateException isex) {

// if there is no valid radio/wi-fi connection to send the request to

}

}

};
</pre>
<ul>
<li>The new two classes used above AddressInfo and      Landmark, they allow application to pass formatted address object.      However, overloaded geocode also accept “String” (e.g. <em>Whitewood Dr</em><em>, San        Jose</em><em>, Santa Clara, California       95110</em>). This      should also work and return the array of Landmark, the first array element      contains the most relevant Landmark to the locator request. May be null if      geocode request is cancelled or the request fails.</li>
</ul>
<ul>
<li>startCoords are for hint to the geocode for starting      the search specified in the request. This could also be null.</li>
</ul>
<ul>
<li>Using the same class structure, let us see how to get      the address info using coordinates.</li>
</ul>
<pre class="brush: plain; title: ; notranslate">
Runnable thread = new Runnable() {

public void run() {

AddressInfo addrInfo = null;

int latitude = (int)(45.423488 * 100000);

int longitude = (int)(-80.32480 * 100000);

try {

Landmark[] results = Locator.reverseGeocode

(latitude, longitude, Locator.ADDRESS );

if ( results != null &amp;&amp; results.length &amp;gt; 0 )

addrInfo = results[0].getAddressInfo();

} catch ( LocatorException lex ) {

//do something

}

}

};
</pre>
<ul>
<li>Pass one of the following parameters to      Locator.reverseGeocode():
<ul>
<li>Locator.ADDRESS: requests the nearest address or nearest street to the specified latitude/longitude</li>
<li>Locator.CITY: returns a value that is focused on the city level Development Guide Retrieve an address by using reverse geocoding 44</li>
<li>Locator.COUNTRY: returns a value that is focused on the country level</li>
<li>Locator.PROVINCE_STATE: returns a value that is focused on the province or state level</li>
</ul>
</li>
</ul>
<p><strong>Now, we’ve seen how to use the Locator API to get geospatial and address information. When we talk about coordinates, the next thing that comes to mind is how the same code can be extended to show the location on a map.</strong></p>
<p><strong>Well, BlackBerry also has a Map API that allows us to extend the above example and use the information as is i.e. to plot the address point on a map.</strong></p>
<ul>
<li>Package required</li>
</ul>
<pre class="brush: plain; title: ; notranslate">
import net.rim.blackberry.api.invoke.*;
import net.rim.blackberry.api.maps.*;
</pre>
<ul>
<li>Maps is an inbuilt application in BlackBerry. This      eliminates the user from writing core Map logic like displaying images, ,      calling Google Maps API and rendering the image in the application. All we      have to do is invoke the external application (external to your      application).</li>
</ul>
<ul>
<li>Create class and constructor</li>
</ul>
<pre class="brush: plain; title: ; notranslate">
public class showMap {
public showMap ()
{
}
}
</pre>
<ul>
<li>In constructor create an instance of MapView</li>
</ul>
<pre class="brush: plain; title: ; notranslate">
MapView mapView = new MapView();
mapView.setLatitude(4328915);
mapView.setLongitude(-8032480);
mapView.setZoom(10);
</pre>
<ul>
<li>In the constructor, create an instance of the MapsArguments class using the MapView object as an argument. Invoke Invoke.invokeApplication() to open BlackBerry Maps and pass in the MapsArguments object.</li>
</ul>
<pre class="brush: plain; title: ; notranslate">
MapsArguments mapsArgs = new MapsArguments(mapView);
Invoke.invokeApplication(Invoke.APP_TYPE_MAPS, mapsArgs);
</pre>
<p><strong>Or </strong>you can also use the Lankmark object return by Locator.geocode</p>
<pre class="brush: plain; title: ; notranslate">
MapsArguments mapsArgs = new MapsArguments(results);
Invoke.invokeApplication(Invoke.APP_TYPE_MAPS, mapsArgs)
</pre>
<p>Location Based applications that incorporate maps are everywhere. The BlackBerry platform allows you to incorporate both location information and merge that into maps as we have seen in the blog post. It is important to note that the BlackBerry platform provide additional ways of showing a map using different inputs. You can also embed the map  within the application. What I have covered here are the basics and hope that this article highlights the important nuances that could be useful for developers to try things quickly and then extend the same by building more complex applications.
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=7"><img src="http://www.xoriant.com/blog/wp-content/uploads/userphoto/pawan-sachdeva.thumbnail.jpg" alt="Pawan Sachdeva" width="63" height="80" class="photo" /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=7">Pawan Sachdeva</a><span class="author-desc"><strong>&ndash; Technical Architect</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/mobile-application-development/blackberry_geocode_maps.html&amp;title=Blackberry+%E2%80%93+Geocode+and+Maps&amp;summary=The%20concept%20of%20retrieving%20location%20information%20using%20GPS%20device%20and%20Location%20API%20is%20already%20discussed%20in%20one%20of%20the%20earlier%20post%20%28http%3A%2F%2Fwww.xoriant.com%2Fblog%2Fmobile-application-development%2Flocation-based-programming.html%20%29.%20In%20this%20article%20we%20are%20going%20to%20learn%20to%20use%20of%20Blackberry%E2%80%99s%20Location%20API%20&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Blackberry+%E2%80%93+Geocode+and+Maps+-+File: /data/app/webapp/functions.php<br />Line: 43<br />Message: Table 'b2l_shrinker.phurl_urls' doesn't exist&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/mobile-application-development/blackberry_geocode_maps.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/mobile-application-development/blackberry_geocode_maps.html&amp;title=Blackberry+%E2%80%93+Geocode+and+Maps" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/mobile-application-development/blackberry_geocode_maps.html&amp;title=Blackberry+%E2%80%93+Geocode+and+Maps" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/mobile-application-development/blackberry_geocode_maps.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/mobile-application-development/blackberry_geocode_maps.html&amp;title=Blackberry+%E2%80%93+Geocode+and+Maps" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/mobile-application-development/blackberry_geocode_maps.html&amp;t=Blackberry+%E2%80%93+Geocode+and+Maps" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html' rel='bookmark' title='Permanent Link: BlackBerry – Location based programming'>BlackBerry – Location based programming</a> <small>A BlackBerry phone is primarily a business phone with additional features like Email, Phone, Maps, GPS, Organizer, Social Networking and games. Developers can take advantage of various BlackBerry APIs to...</small></li>
<li><a href='http://www.xoriant.com/blog/mobile-application-development/blackberry-development-environment-and-installation.html' rel='bookmark' title='Permanent Link: BlackBerry Development Environment and Installation'>BlackBerry Development Environment and Installation</a> <small>In this blog post, we shall take a look at how to get started with programming for the BlackBerry device. We shall cover what the device is, give you an...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/mobile-application-development/blackberry_geocode_maps.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BlackBerry – Location based programming</title>
		<link>http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html</link>
		<comments>http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html#comments</comments>
		<pubDate>Wed, 07 Jul 2010 10:07:58 +0000</pubDate>
		<dc:creator>Pawan Sachdeva</dc:creator>
				<category><![CDATA[Mobile Application Development]]></category>
		<category><![CDATA[Blackberry]]></category>
		<category><![CDATA[BlackBerry app development]]></category>
		<category><![CDATA[Location based app]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=562</guid>
		<description><![CDATA[A BlackBerry phone is primarily a business phone with additional features like Email, Phone, Maps, GPS, Organizer, Social Networking and games. Developers can take advantage of various BlackBerry APIs to take the user experience to a new level. In this article, I am going to talk about BlackBerry and Location API,that allows you to develop [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/software-product-development/securing-java-based-web-applications-authorization.html' rel='bookmark' title='Permanent Link: Securing Java-based Web Applications: Authorization'>Securing Java-based Web Applications: Authorization</a> <small>This blog is a continuation of my previous one, Securing Java-based Web Applications: Authentication, in which I have explained the concept of Authentication with an implemented example of a Java-based...</small></li>
<li><a href='http://www.xoriant.com/blog/software-product-development/securing-java-based-web-applications-authentication.html' rel='bookmark' title='Permanent Link: Securing Java-based Web Applications: Authentication'>Securing Java-based Web Applications: Authentication</a> <small>In my last blog, Basics of Securing Java Web Applications, I talked about some basic measures that we can take to secure the content of Java-based Web applications. In this...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A BlackBerry phone is primarily a business phone with additional features like Email, Phone, Maps, GPS, Organizer, Social Networking and games. Developers can take advantage of various BlackBerry APIs to take the user experience to a new level. In this article, I am going to talk about<strong> BlackBerry and Location API</strong>,that allows you to develop <strong>Location based (LB) applications</strong>.</p>
<p><strong>Compatibility</strong></p>
<p>BlackBerry is packed with advanced features, but they are not supported in all models. Let us quickly have a glance at some of the models.</p>
<p>In general there are two options for using GPS with a BlackBerry. You either have a device with an internal GPS receiver, or you will need an external <a href="http://www.blackberryinsight.com/2006/05/18/blackberry-and-gps/##" target="undefined">Bluetooth</a> GPS receiver, which will provide the GPS data to your BlackBerry. Refer to this link to find out the models which support GPS <a href="http://na.blackberry.com/eng/devices/features/gps.jsp">http://na.blackberry.com/eng/devices/features/gps.jsp</a></p>
<p>Do not be disappointed if your preferred model is not the list, you can always download the simulator from <a href="https://www.blackberry.com/Downloads/entry.do">https://www.blackberry.com/Downloads/entry.do</a></p>
<p>Though, the above list mentions about GPS support by default, it should also be noted that there will be existing applications developed based on JSR 179 java ME api even if the model doesn’t not have inbuilt GPS support. GPS capabilities could also be obtained by connecting to an external GPS device over Bluetooth, but this comes with its own set of challenges. Another option is for old blackberry models (RIM 857/957), which works with a serial GPS receiver attached via cable.</p>
<p><strong>Overview</strong></p>
<p>You must enable GPS on your device, for applications to retrieve the current location. The location is nothing but coordinates for <strong>latitude</strong>, <strong>longitude</strong> and <strong>altitude</strong>.</p>
<p>Additionally, support for JSR 179 Location API for Java ME comes with device software 4.0.2 and later. If you want BlackBerry extensions to JSR 179, you will need device software 5.0.0 and later.</p>
<p>To obtain a location via the GPS support in your device, your application has to do the following:</p>
<p>○   Specify the GPS mode</p>
<p>○   Get the location provider</p>
<p>○   Make GPS request</p>
<p>○   Retrieve the GPS location of a BlackBerry device</p>
<p><strong>Code sample: Specifying the GPS mode</strong></p>
<pre class="brush: java; title: ; notranslate">
/* JSR 179 */
Criteria myCriteria = new Criteria();
/* JSR 179 extension */
BlackBerryCriteria myBlackBerryCriteria = new BlackBerryCriteria(…);
</pre>
<p><strong>Dig Deep</strong></p>
<p>There are three GPS modes and they have speficic properties that are described below. You will need to select one based on your application requirements.</p>
<p>○   <strong>Autonomous</strong> – relies on the GPS satellite only. This mode uses the GPS receiver on the BlackBerry device to retrieve location information. This mode cannot be used indoors or in close proximity to many physical obstructions, and it can take several minutes to fully synchronize with four or more satellites for the first GPS fix. An example application that can use this mode is a <strong>Car Parking Spot application</strong>.</p>
<p>○   <strong>Assisted Mode</strong> – GPS satellite and servers on the wireless network only. This mode uses the wireless network to retrieve satellite information. This mode can achieve a fast retrieval of the first GPS fix. An example application that can use this mode is a <strong>Nearby Restaurants application</strong>.</p>
<p>○    <strong>Cell site Mode</strong> – Geolocation service or the wireless network to provide on the location information of current base station. This mode uses the wireless network to achieve the first GPS fix, and is generally considered the fastest mode. This mode does not provide BlackBerry device tracking information such as the speed and the bearing. An example application that can use this mode is a <strong>Weather Application</strong>.</p>
<p>Let us look at the code samples to use the BlackBerry API to get location and satellite information. The code fragments are used to highlight the API rather than give a fully working GPS Application that also provides additional value added information.</p>
<p>First, let us look at a Java class <strong>GPSSatteliteInfo </strong>listed below. This is a utility class in which we will wrap all the GPS related sample code. The thread implementation is currently empty.</p>
<pre class="brush: java; title: ; notranslate">
/* packages to import */
import java.util.*;
import java.lang.*;
import net.rim.device.api.gps.*;
/* create public class */
public class GPSSatelliteInfo {
	/* member variables */
	…
	public GPSSatelliteInfo() {
		gpsThread = new GPSThread(); //private thread class reference
		gpsThread.start();
	}
	/* private thread class */
	private static class GPSThread extends Thread
	{
		public void run()
		{
			//do something
		}
	}
}
</pre>
<p>○   Next, specify the <strong>GPSMode</strong> inside the <strong>run()</strong> method of Thread class</p>
<pre class="brush: java; title: ; notranslate">
BlackBerryCriteria myCriteria = new BlackBerryCriteria(GPSInfo.GPS_MODE_AUTONOMOUS);
//OR  to be on safer side
BlackBerryCriteria myCriteria = new BlackBerryCriteria();
if (GPSInfo.isGPSModeAvailable(GPSInfo.GPS_MODE_ASSIST))
	myCriteria.setMode(GPSInfo.GPS_MODE_ASSIST);
else if (GPSInfo.isGPSModeAvailable(GPSInfo.GPS_MODE_AUTONOMOUS))
	myCriteria.setMode(GPSInfo.GPS_MODE_AUTONOMOUS);
</pre>
<p>○   Next, get the <strong>LocationProvider</strong> and create a <strong>BlackBerryLocation</strong> object to retrieve the GPS fix including a 300 second timeout expiry.</p>
<pre class="brush: java; title: ; notranslate">
BlackBerryLocationProvider myProvider;
myProvider  = (BlackBerryLocationProvider) LocationProvider.getInstance(myCriteria);
BlackBerryLocation myLocation;
myLocation = (BlackBerryLocation) myProvider.getLocation(300);
</pre>
<p>○   Retrieve the satellite information</p>
<pre class="brush: java; title: ; notranslate">
satCount  = myLocation.getSatelliteCount();
signalQuality  = myLocation.getAverageSatelliteSignalQuality();
dataSource  = myLocation.getDataSource();
gpsMode  = myLocation.getGPSMode();
SatelliteInfo si;
StringBuffer sb = new StringBuffer(&quot;[Id:SQ:E:A]\n&quot;);
String separator = &quot;:&quot;;
for( Enumeration infoEnum  = myLocation.getSatelliteInfo(); infoEnum != null; infoEnum.hasMoreElements();){
	si = (SatelliteInfo)e.nextElement();
	sb.append(si.getId() + separator);
	sb.append(si.getSignalQuality() + separator);
	sb.append(si.getElevation() + separator);
	sb.append(si.getAzimuth());
	sb.append('\n');
}
</pre>
<p><strong><em>Note:</em></strong><em>The assisted mode can be used with BlackBerry devices that are associated with a CDMA network that utilizes PDE server technology. The assisted mode is designed to provide fast retrieval of a GPS fix. Assisted GPS capabilities are currently defined by wireless service providers. In many instances, you must enter into a formal relationship with wireless service providers before you can connect to their PDE server.</em></p>
<pre class="brush: java; title: ; notranslate">
if ( !GPSInfo.isGPSModeAvailable(GPSInfo.GPS_MODE_ASSIST) || !GPSSettings.isPDEInfoRequired(GPSInfo.GPS_MODE_ASSIST))
	return;
</pre>
<p>On similar lines, let us see how to retrieve location information.</p>
<pre class="brush: java; title: ; notranslate">
static double lat, lon;
static float alt, spd, crs;
lat = myLocation.getQualifiedCoordinates().getLatitude();
lon = myLocation.getQualifiedCoordinates().getLongitude();
alt = myLocation.getQualifiedCoordinates().getAltitude();
spd = myLocation.getSpeed();
crs = myLocation.getCourse();
</pre>
<p>This covers how to retrieve satellite information and location coordinates.</p>
<p>However, there is a lot more that an application should do to provide a good user experience. Majority of times it is driven by the kind of application being developed. For example, if the application is designed to display my location on a map at a given time, then retrieving GPS location one time should suffice. But, at the same time, if the application is designed to keep retrieving the GPS coordinates as person moves some distance, then something more needs to be done. One way is to use the  <strong>setLocationListener()</strong> by passing the interval value, timeout value, and maximum age as parameters to add a LocationListener.)</p>
<pre class="brush: java; title: ; notranslate">
myProvider.setLocationListener(new handleGPSListener(), 10, -1, -1);
</pre>
<p>In the class, implement the LocationListener interface. Implement the basic framework for the locationUpdated () method, and the providerStateChanged() method.</p>
<pre class="brush: java; title: ; notranslate">
public static class handleGPSListener implements LocationListener
{
	public void locationUpdated(LocationProvider provider, Location location)
	{
		if (location.isValid())
		{...}
		else
		{... }
	}
	public void providerStateChanged(LocationProvider provider,	int newState)
	{
		if (newState == LocationProvider.AVAILABLE)
		{...}
		else if (newState == LocationProvider.OUT_OF_SERVICE)
		{...}
		else if (newState == LocationProvider.TEMPORARILY_UNAVAILABLE )
		{...}
	}
}
</pre>
<p>This gets invoked at a fixed interval to any location changes. This is ideal for application that is plotting user movement over a map. (Similar to the GPS navigation device to get directions).</p>
<p>We have now covered how to use the BlackBerry JSR 179 extension (aka GPS API) to get satellite and location coordinates. The code covered so far provides a basic working example to retrieve the satellite and location information. The same could be extended to  make complex applications. There are other areas which are “good to know” like GPS error code, Location error codes, control the power consumption, preferred response time, manage cost allowed, setting the failover mode (fall back on other available options if one is not available), etc and the reader is advised to refer to the available documentation.</p>
<p>Location Based Services and applications are growing in importance. The BlackBerry platform provides good support for you to get started with building location based applications today. In future posts, we shall delve into deeper topics that help you to take advantage of the full range of BlackBerry location based APIs.
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=7"><img src="http://www.xoriant.com/blog/wp-content/uploads/userphoto/pawan-sachdeva.thumbnail.jpg" alt="Pawan Sachdeva" width="63" height="80" class="photo" /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=7">Pawan Sachdeva</a><span class="author-desc"><strong>&ndash; Technical Architect</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html&amp;title=BlackBerry+%E2%80%93+Location+based+programming&amp;summary=A%20BlackBerry%20phone%20is%20primarily%20a%20business%20phone%20with%20additional%20features%20like%20Email%2C%20Phone%2C%20Maps%2C%20GPS%2C%20Organizer%2C%20Social%20Networking%20and%20games.%20Developers%20can%20take%20advantage%20of%20various%20BlackBerry%20APIs%20to%20take%20the%20user%20experience%20to%20a%20new%20level.%20In%20this%20article%2C%20I%20am%20going%20to%20talk%20about%20BlackBerry%20an&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=BlackBerry+%E2%80%93+Location+based+programming+-+http://b2l.me/9vmh8&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html&amp;title=BlackBerry+%E2%80%93+Location+based+programming" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html&amp;title=BlackBerry+%E2%80%93+Location+based+programming" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html&amp;title=BlackBerry+%E2%80%93+Location+based+programming" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html&amp;t=BlackBerry+%E2%80%93+Location+based+programming" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/software-product-development/securing-java-based-web-applications-authorization.html' rel='bookmark' title='Permanent Link: Securing Java-based Web Applications: Authorization'>Securing Java-based Web Applications: Authorization</a> <small>This blog is a continuation of my previous one, Securing Java-based Web Applications: Authentication, in which I have explained the concept of Authentication with an implemented example of a Java-based...</small></li>
<li><a href='http://www.xoriant.com/blog/software-product-development/securing-java-based-web-applications-authentication.html' rel='bookmark' title='Permanent Link: Securing Java-based Web Applications: Authentication'>Securing Java-based Web Applications: Authentication</a> <small>In my last blog, Basics of Securing Java Web Applications, I talked about some basic measures that we can take to secure the content of Java-based Web applications. In this...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/mobile-application-development/location-based-programming.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>BlackBerry Development Environment and Installation</title>
		<link>http://www.xoriant.com/blog/mobile-application-development/blackberry-development-environment-and-installation.html</link>
		<comments>http://www.xoriant.com/blog/mobile-application-development/blackberry-development-environment-and-installation.html#comments</comments>
		<pubDate>Tue, 15 Jun 2010 11:59:22 +0000</pubDate>
		<dc:creator>Siddhesh Bingi</dc:creator>
				<category><![CDATA[Mobile Application Development]]></category>
		<category><![CDATA[Blackberry]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[JDE]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=187</guid>
		<description><![CDATA[In this blog post, we shall take a look at how to get started with programming for the BlackBerry device. We shall cover what the device is, give you an overview of BlackBerry development and then provide you with detailed steps to setup your development environment. Future blog posts will focus on programming on the [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/mobile-application-development/gitolite-installation-howto.html' rel='bookmark' title='Permanent Link: Step by step guide – gitolite installation'>Step by step guide – gitolite installation</a> <small>As most of you all know, the two key candidates for personal Git servers are gitosis and gitolite. The major differentiator between the two is the language in which they...</small></li>
<li><a href='http://www.xoriant.com/blog/mobile-application-development/iphone-development-facts-and-challenges.html' rel='bookmark' title='Permanent Link: iPhone Development: Facts and Challenges'>iPhone Development: Facts and Challenges</a> <small>The speed with which mobile technology is evolving is beyond remarkable. So much, that you may in fact, be viewing this post on your mobile. Gone are the days when...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In this blog post, we shall take a look at how to get started with programming for the BlackBerry device. We shall cover what the device is, give you an overview of BlackBerry development and then provide you with detailed steps to setup your development environment. Future blog posts will focus on programming on the BlackBerry.</p>
<p><strong>What is a BlackBerry Device?</strong></p>
<p>The BlackBerry is a wireless handheld device developed by the Canadian company known as Research In Motion (RIM) and was launched in year 1999. It holds 20.8% market share in worldwide Smartphone sales, making it the second most popular platform after Nokia. It is known as the most popular Smartphone around the world for its connectivity and security.</p>
<p>Its primary goal is to support push e-mail, web browsing, text messaging and other wireless internet services in a secure manner. Now a days the BlackBerry devices are integrated with advanced software’s which enable access to wide range of data, communications services, Email, phone, maps, GPS, organizer, social networking, games and other applications. These features of a Smartphone make life easy by allowing access to everything on the move at any place in the world on your fingertips.</p>
<p>The BlackBerry software development kit is a wide collection of examples, documentation, and mature set of APIs and tools grown in an extensive manner, which have shown the directions to develop all kinds of great applications. BlackBerry community and its App World help to get your application noticed and downloaded by users worldwide.</p>
<p><strong>The list of BlackBerry device and its models:</strong></p>
<ul>
<li>Early Pager Models: BlackBerry 850,      857, 950, 957</li>
<li>Monochrome Java-based Models: BlackBerry  5000-series and 6000-series</li>
<li>First Color Models: BlackBerry  7200-series, 7500-series and 7700-series</li>
<li>First Sure Type Phone Models: BlackBerry      7100-series</li>
<li>Modern BlackBerry Models (2006–2008): BlackBerry  8000-8830-series including: <a title="BlackBerry 8800 (page does not exist)" rel="nofollow" href="http://en.wikipedia.org/w/index.php?title=BlackBerry_8800&amp;action=edit&amp;redlink=1">BlackBerry      8800</a>,<a title="BlackBerry Pearl" rel="nofollow" href="http://en.wikipedia.org/wiki/BlackBerry_Pearl">BlackBerry      Pearl</a>, <a title="BlackBerry Pearl" rel="nofollow" href="http://en.wikipedia.org/wiki/BlackBerry_Pearl#BlackBerry_Pearl_8220">Pearl Flip</a> and <a title="BlackBerry Curve" rel="nofollow" href="http://en.wikipedia.org/wiki/BlackBerry_Curve">BlackBerry      Curve</a></li>
<li>Latest BlackBerry Models (2008–2009): BlackBerry  8900+ GPS Wi-Fi Series: <a title="BlackBerry Bold" rel="nofollow" href="http://en.wikipedia.org/wiki/BlackBerry_Bold">BlackBerry Bold</a> (9000),<a title="BlackBerry Curve 8900" rel="nofollow" href="http://en.wikipedia.org/wiki/BlackBerry_Curve_8900">BlackBerry      Curve 8900</a>, <a title="BlackBerry Tour" rel="nofollow" href="http://en.wikipedia.org/wiki/BlackBerry_Tour">BlackBerry Tour</a> (9630), <a title="BlackBerry Storm" rel="nofollow" href="http://en.wikipedia.org/wiki/BlackBerry_Storm">BlackBerry      Storm</a> (9500/9530)</li>
<li>BlackBerry Storm 2 (9520/9550)      (2009): <a title="BlackBerry Storm2" rel="nofollow" href="http://en.wikipedia.org/wiki/BlackBerry_Storm2">BlackBerry      Storm2</a></li>
<li>BlackBerry Bold Series (2009): <a title="BlackBerry Bold 9700" rel="nofollow" href="http://en.wikipedia.org/wiki/BlackBerry_Bold_9700">BlackBerry Bold      9700</a> (9700)</li>
<li>BlackBerry Bold Series (2010): <a title="BlackBerry Bold 9650 (page does not exist)" rel="nofollow" href="http://en.wikipedia.org/w/index.php?title=BlackBerry_Bold_9650&amp;action=edit&amp;redlink=1">BlackBerry      Bold 9650</a> (9650)      Officially Announced</li>
<li>BlackBerry Pearl      Series (2010): <a title="BlackBerry Pearl 3G 9100/9105 (page does not exist)" rel="nofollow" href="http://en.wikipedia.org/w/index.php?title=BlackBerry_Pearl_3G_9100/9105&amp;action=edit&amp;redlink=1">BlackBerry Pearl 3G 9100/9105</a> (9100/9105) Officially Announced</li>
</ul>
<p><strong>BlackBerry Development Platform consists of:</strong></p>
<p>BlackBerry Development Environment is completely based on the Java Platform. It is collectively integrated with BlackBerry RIM APIs, J2ME APIs and basic Java SE APIs. It is built on top of Java Micro Edition (Java ME) which itself is derived from Java SE.  In order to get into the BlackBerry Application development one need to know Object Oriented programming with the basic understanding of J2ME concepts of <em>configurations</em> and <em>profiles</em>, and in particular the CLDC and MIDP standards.</p>
<p><strong> </strong></p>
<p><strong>The BlackBerry Development Environment tools:</strong></p>
<p>The BlackBerry application can be developed on any platform, even in Linux, OSX, the easiest and best supported is Windows 32bit platform. RIM provides two BlackBerry development environments such as:</p>
<ul>
<li>BlackBerry Java Development Environments (JDEs) and</li>
<li>BlackBerry Eclipse Plug-in.</li>
</ul>
<p>Both Blackberry development environment tools work with standard Java Software Development Kit (Java SDK) and fully integrated with development tools, simulators and provides to necessary to create, package, compile, test and debug the Blackberry application. You don’t even need the real handheld device to test the application, because it also includes the full featured Blackberry device simulator. A complete set of BlackBerry JDE API Doc is available for referring available packages and classes for development. Both the development tools are being used by many professional developers to develop BlackBerry applications. We will look into both the tools in detail. The best thing about BlackBerry development tools is that they are absolutely free.</p>
<p>Now we will see the step by step installations for both BlackBerry Java Development Environments (JDEs) and BlackBerry Eclipse Plug-in.</p>
<p><strong>Let’s Start with Installation process:</strong></p>
<p><strong>BlackBerry Java Development Environments (JDEs)</strong></p>
<p>Installing the BlackBerry JDE is very easy as compared to any other tools:</p>
<ol>
<li style="text-align: left;">Before installing the Blackberry development tools, you will need to install Java SE Development Kit (JDK) version 5 or later from <a rel="nofollow" href="http://java.sun.com/">http://java.sun.com</a>. Which version has to be downloaded will depend on the version of Blackberry platform you want to target. The Java SE JDK v6.0 helps you to develop for BlackBerry Device Software version 4.2 or later. More specific information is available on the BlackBerry Developer page at <a rel="nofollow" href="http://na.blackberry.com/eng/developers/javaappdev/javadevenv.jsp">http://na.blackberry.com/eng/developers/javaappdev/javadevenv.jsp</a></li>
<li>Now you download appropriate version of BlackBerry Java Development Environment (JDE) from BlackBerry Developer Zone at <a rel="nofollow" href="http://www.blackberry.com/developers/">http://www.blackberry.com/developers/</a> , you have to register an account. Free Developer tools, whitepapers, the developer Knowledge base and the Blackberry Developer forums are found here. (<em>BlackBerry JDE versions</em>: The BlackBerry OS is backward compatible, So something developed on OS 4.2 will work on OS 4.3 and later without requiring code changes done. It may be the case where certain features are only supported on higher versions. But most of the basic features are covered from OS 4.2)</li>
<li>Once the BlackBerry JDE installer is downloaded, run the installer and follow the on-screen instructions. It will be installed to the default path <em>C:\Program Files\Research In Motion\BlackBerry JDE 4.5.0,</em> which can be changed during installation.<em> </em></li>
<li>Launch the BlackBerry JDE from <em>Start&gt;Program Files&gt;Research In Motion&gt; BlackBerry JDE 4.5&gt;JDE.</em> <em> </em></li>
<li>Once the BlackBerry JDE is launched it will look as shown in Figure 1.0. The left hand pane shows <em>sample.jdw</em> workspace, the right hand side shows the <em>HelloWorldDemo.java</em> file in editor. <em>The sample.jdw</em> workspace contains the Blackberry sample examples and it is located in the BlackBerry JDE folder at <em>C:\Program Files\Research In Motion\BlackBerry JDE 4.5.0\samples</em>. The BlackBerry API reference doc can be found in via <em>Help&gt;API Reference </em>in the JDE.</li>
</ol>
<p style="text-align: center;">
<p style="text-align: left;"><a href="http://www.xoriant.com/blog/wp-content/uploads/2010/06/BB_screenshot.png"><img class="aligncenter size-full wp-image-217" title="BlackBerry JDE workspace" src="http://www.xoriant.com/blog/wp-content/uploads/2010/06/BB_screenshot.png" alt="BlackBerry JDE v4.2.1 with workspace in left hand side pane, source code editor in right hand side and console at the bottom" width="500" height="314" /></a><em> </em></p>
<p style="text-align: left;"><em>The BlackBerry JDE v4.2.1 with workspace in left hand side pane, source code editor in right hand side and console at the bottom.</em></p>
<p><strong>BlackBerry Eclipse Plug-in installation:</strong></p>
<p>You can download the Eclipse IDE at <a rel="nofollow" href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a> . Don’t forget to install the Java Development Kit as a pre-requisite as explained in step 1 of the BlackBerry JDE installation. And download the plug-in from BlackBerry tools at <a rel="nofollow" href="http://na.blackberry.com/eng/developers/resources/devtools.jsp">http://na.blackberry.com/eng/developers/resources/devtools.jsp</a></p>
<p>Perform the following steps to install the BlackBerry Eclipse Plug-in with Eclipse IDE of Java Development version 3.4.0.</p>
<ol>
<li>Start Eclipse</li>
<li>From the main menu,      Select <strong>Help &gt; Software Updates</strong>.</li>
<li>In the <strong>Software Updates and Add-ons</strong> dialog, click the <strong>Available      Software</strong> tab.</li>
<li>Click the <strong>Add Site </strong>button.</li>
<li>In the <strong>Add Site</strong> dialog, click the <strong>Archive</strong> button.</li>
<li>In the <strong>Repository </strong>archive dialog, select      the .zip file to install.</li>
<li>Click <strong>Open</strong>.</li>
<li>In the <strong>Add Site</strong> dialog, click <strong>OK</strong>.</li>
<li>Select the check box      for the BlackBerry JDE Plug-in for Eclipse. All subcomponents should be      checked automatically.</li>
<li>Click <strong>Install</strong>.</li>
<li>Click <strong>Finish</strong>.<br />
When the installation completes, the <strong>Software      Updates</strong> dialog is displayed.</li>
<li>Click <strong>Yes</strong> to restart Eclipse.</li>
</ol>
<p>I hope this post is helpful in understanding the BlackBerry Environment, tools and its installation process. If you have any queries feel free to comment.
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=14"><img src="http://www.xoriant.com/blog/wp-content/uploads/userphoto/siddhesh-bingi.thumbnail.jpg" alt="Siddhesh Bingi" width="69" height="80" class="photo" /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=14">Siddhesh Bingi</a><span class="author-desc"><strong>&ndash; Member of Mobile Center of Excellence</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/mobile-application-development/blackberry-development-environment-and-installation.html&amp;title=BlackBerry+Development+Environment+and+Installation&amp;summary=In%20this%20blog%20post%2C%20we%20shall%20take%20a%20look%20at%20how%20to%20get%20started%20with%20programming%20for%20the%20BlackBerry%20device.%20We%20shall%20cover%20what%20the%20device%20is%2C%20give%20you%20an%20overview%20of%20BlackBerry%20development%20and%20then%20provide%20you%20with%20detailed%20steps%20to%20setup%20your%20development%20environment.%20Future%20blog%20posts%20will%20focus%20on%20&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=BlackBerry+Development+Environment+and+Installation+-+http://b2l.me/9vxxt&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/mobile-application-development/blackberry-development-environment-and-installation.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/mobile-application-development/blackberry-development-environment-and-installation.html&amp;title=BlackBerry+Development+Environment+and+Installation" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/mobile-application-development/blackberry-development-environment-and-installation.html&amp;title=BlackBerry+Development+Environment+and+Installation" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/mobile-application-development/blackberry-development-environment-and-installation.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/mobile-application-development/blackberry-development-environment-and-installation.html&amp;title=BlackBerry+Development+Environment+and+Installation" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/mobile-application-development/blackberry-development-environment-and-installation.html&amp;t=BlackBerry+Development+Environment+and+Installation" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/mobile-application-development/gitolite-installation-howto.html' rel='bookmark' title='Permanent Link: Step by step guide – gitolite installation'>Step by step guide – gitolite installation</a> <small>As most of you all know, the two key candidates for personal Git servers are gitosis and gitolite. The major differentiator between the two is the language in which they...</small></li>
<li><a href='http://www.xoriant.com/blog/mobile-application-development/iphone-development-facts-and-challenges.html' rel='bookmark' title='Permanent Link: iPhone Development: Facts and Challenges'>iPhone Development: Facts and Challenges</a> <small>The speed with which mobile technology is evolving is beyond remarkable. So much, that you may in fact, be viewing this post on your mobile. Gone are the days when...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/mobile-application-development/blackberry-development-environment-and-installation.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bringing Enterprise Applications to Mobile</title>
		<link>http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html</link>
		<comments>http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html#comments</comments>
		<pubDate>Tue, 24 Nov 2009 09:34:19 +0000</pubDate>
		<dc:creator>xoriant</dc:creator>
				<category><![CDATA[Mobile Application Development]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Blackberry]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Symbian]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[XHTML-MP]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=125</guid>
		<description><![CDATA[Enterprise software is now going mobile. More and more work, which needed your presence in office/home, can be done on-the-go. With introduction of addictive UIs on smart phones, the market for Mobile based Software has grown into a new niche. Smart phone applications can be categorized in to Native Applications and Web Applications. Native apps [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/driving-mobile-applications-via-the-cloud.html' rel='bookmark' title='Permanent Link: Driving Mobile Applications via the Cloud'>Driving Mobile Applications via the Cloud</a> <small>Cloud Computing brings about real benefits to IT organizations by making available computing resources that you can pay as per your usage, while taking away the hassles of resource management....</small></li>
<li><a href='http://www.xoriant.com/blog/software-product-development/integrating-ms-project-with-an-enterprise-product.html' rel='bookmark' title='Permanent Link: Integrating MS Project with an Enterprise Product'>Integrating MS Project with an Enterprise Product</a> <small>This blog deals with integration of MS Project with an Enterprise product At a very basic level, MS Project, or MSP, is a project management tool, used by several organizations...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><strong><span style="font-weight: normal;">Enterprise software is now going mobile. More and more work, which needed your presence in office/home, can be done on-the-go. With introduction of addictive UIs on smart phones, the market for Mobile based Software has grown into a new niche.</span></strong></p>
<p class="MsoNormal"><strong><span style="font-weight: normal;">Smart phone applications can be categorized in to Native Applications and Web Applications. Native apps are downloaded on the device may or may not require internet connectivity. Most of the games and utilities like calculator, unit-converter fall in this category. Web Apps are applications that run on the device’s inbuilt browser. It does not need downloading, but requires continuous internet connectivity in most cases.</span></strong></p>
<p class="MsoNormal">Both types of applications on Mobile can be developed by following these interdependent life cycle stages:</p>
<p class="MsoNormal"><strong><em><span>1. Design:</span></em></strong><span> A typical smart phone dimensions of 320&#215;480 gives a very limited real estate to stuff-in the amazing functionalities they can support. Designers really need to master the art of small.</span></p>
<p class="MsoNormal">Native</p>
<p class="MsoNormal"><span>The design needs to be in alignment with various UI standards and can closely follow Human Interface Guidelines(HIG) from Apple. Though they have defined it for iPhone, many of them in my opinion are pure common sense. Hence, HIG is applicable for all devices, specifically for the Native apps. The smart-phone vendors (RIM, Apple etc.) have gone a long way in providing standard and useful applications to their users via their own app-stores.<span> </span></span></p>
<p class="MsoNormal">Web Based</p>
<p class="MsoNormal"><span>In web based application development, for multiple devices for e.g. for iPhone and Blackberry Bold, design issues need to be taken care at the CSS level. For lower versions of Blackberry though UI has to be generated by a different code set. </span></p>
<p class="MsoNormal"><strong><em><span>2. Server side:</span></em></strong><span> APIs not only cater to web based mobile applications, native applications too need to shift the data intensive computation to server side. So there is not much difference between the server side programming for Web and Native apps. Bringing website functionality to mobile is not mere reuse of APIs. It involves optimization of existing APIs for performance. It may also involve revisiting the code for adding device specific checks, abstraction and exception handling etc.</span></p>
<p class="MsoNormal"><strong><em><span>3. Client side:</span></em></strong><span> iPhone, Blackberry, Android, Windows Mobile, Symbian have their own SDKs for development of Native Apps. While iPhone requires experience on Objective C and Mac OS, Blackberry and Android can be handled by Java developers while Windows mobile application can be created using Visual Studio 2008.</span></p>
<p class="MsoNormal">Native</p>
<p class="MsoNormal"><span>Advanced hardware like inbuilt camera, accelerometers etc can also be harnessed for making the mobile application feature-rich – like Auto-orientation, motion based gaming etc. The inbuilt GPS and assisted GPS can be leveraged for creating location based services. Though a plethora of applications are already providing LBS, I find it to be a tip of the iceberg. Adding LBS can make a lot of applications information rich, for end users as well as for vendors, distributors and advertisers. </span></p>
<p class="MsoNormal">Web Based</p>
<p class="MsoNormal"><span>Web based applications on almost all devices, sparing iPhone in some cases; do not need specified SDKs for development. The major issue for web based apps is handling the large number of device-browser combinations that a user may use. What works for IE on BB may not work for FF on the same device. To resolve the issue of developing and maintaining code for different devices XHTML-MP is gaining wide popularity among developers. </span></p>
<p class="MsoNormal"><strong><em><span>4. Testing:</span></em></strong><span> Other than functionality and UI related testing, Mobile app QA requires testing for performance and connectivity related issues.</span></p>
<p class="MsoNormal">Native</p>
<p class="MsoNormal">Mobile software requires to be tested in real (non-simulated) Wi-Fi, GPRS, 3G etc. with different service providers. Something that works on AT&amp;T may be blocked by T-Mobile. Also, an internet savvy application may behave differently in different geographies. Based on expected usage, the application should be tested for all the geographies. One may take assistance from www.deviceanywhere.com.</p>
<p class="MsoNormal">Web Based</p>
<p class="MsoNormal"><span>Web apps always need to be tested on variety of browsers (Mobile browsers) for rendering issues. iPhone supports Safari, while BB supports IE and Firefox and also has it’s own browser. Rigorous manual testing can reveal functionality glitches and alignment issues. Generally for all types of browsers, testing and debugging using Firebug and <a href="http://www.httpwatch.com/">HTTP watch</a> can be quite helpful.</span></p>
<p class="MsoNormal"><span>One should plan the development of mobile applications with these distinct yet interdependent processes in mind. It should really help in developing a standard application in minimum time.</span></p>
<p class="MsoNormal"><span>-Ujjwal Trivedi</span></p>
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=2"><img alt='' src='http://0.gravatar.com/avatar/078a39b17c2cb36828c973a10892124a?s=60&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D60&amp;r=G' class='avatar avatar-60 photo' height='60' width='60' /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=2">xoriant</a></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html&amp;title=Bringing+Enterprise+Applications+to+Mobile++&amp;summary=Enterprise%20software%20is%20now%20going%20mobile.%20More%20and%20more%20work%2C%20which%20needed%20your%20presence%20in%20office%2Fhome%2C%20can%20be%20done%20on-the-go.%20With%20introduction%20of%20addictive%20UIs%20on%20smart%20phones%2C%20the%20market%20for%20Mobile%20based%20Software%20has%20grown%20into%20a%20new%20niche.%0D%0ASmart%20phone%20applications%20can%20be%20categorized%20in%20to%20Nativ&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Bringing+Enterprise+Applications+to+Mobile+++-+http://b2l.me/9vxw9&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html&amp;title=Bringing+Enterprise+Applications+to+Mobile++" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html&amp;title=Bringing+Enterprise+Applications+to+Mobile++" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html&amp;title=Bringing+Enterprise+Applications+to+Mobile++" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html&amp;t=Bringing+Enterprise+Applications+to+Mobile++" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/driving-mobile-applications-via-the-cloud.html' rel='bookmark' title='Permanent Link: Driving Mobile Applications via the Cloud'>Driving Mobile Applications via the Cloud</a> <small>Cloud Computing brings about real benefits to IT organizations by making available computing resources that you can pay as per your usage, while taking away the hassles of resource management....</small></li>
<li><a href='http://www.xoriant.com/blog/software-product-development/integrating-ms-project-with-an-enterprise-product.html' rel='bookmark' title='Permanent Link: Integrating MS Project with an Enterprise Product'>Integrating MS Project with an Enterprise Product</a> <small>This blog deals with integration of MS Project with an Enterprise product At a very basic level, MS Project, or MSP, is a project management tool, used by several organizations...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

