<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>BlackBerry Developer Blog &#187; Shadid</title>
	<atom:link href="http://devblog.blackberry.com/author/shadidhaque/feed/" rel="self" type="application/rss+xml" />
	<link>http://devblog.blackberry.com</link>
	<description></description>
	<lastBuildDate>Tue, 21 May 2013 12:35:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='devblog.blackberry.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/9ef0a66c09615fa946c4179662398878?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>BlackBerry Developer Blog &#187; Shadid</title>
		<link>http://devblog.blackberry.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://devblog.blackberry.com/osd.xml" title="BlackBerry Developer Blog" />
	<atom:link rel='hub' href='http://devblog.blackberry.com/?pushpress=hub'/>
		<item>
		<title>10.1 Times Better Maps in BlackBerry 10</title>
		<link>http://devblog.blackberry.com/2013/05/blackberry-10-1-maps/</link>
		<comments>http://devblog.blackberry.com/2013/05/blackberry-10-1-maps/#comments</comments>
		<pubDate>Tue, 21 May 2013 12:35:46 +0000</pubDate>
		<dc:creator>Shadid</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Platform Services]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[Map]]></category>
		<category><![CDATA[MapView]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15044</guid>
		<description><![CDATA[Nation, it’s been a while since we last discussed MapView APIs for BlackBerry 10. This time I am back with some news on critical improvements to the APIs. Previously, I talked about how to use the MapView APIs to embed your own layers on top of it. While that was nice and very flexible, it [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15044&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Nation, it’s been a while since we last discussed MapView APIs for BlackBerry 10. This time I am back with some news on critical improvements to the APIs.</p>
<p>Previously, I talked about how to use the MapView APIs to embed your own layers on top of it. While that was nice and very flexible, it still required some work to get basic pins and bubbles going. In BlackBerry 10.1 we have updated the APIs to support push pins and bubbles out of the box. This means you can now use the native APIs such as GeoLocation and MapData to create and manage push pins with custom icons as well as assign a name and description to each that shows up in the bubble.</p>
<div id="attachment_15047" class="wp-caption aligncenter" style="width: 510px"><a href="http://rimdevblog.files.wordpress.com/2013/05/maps.png"><img class="size-full wp-image-15047" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/05/maps-e1369139144688.png?w=500&#038;h=500" width="500" height="500" /></a><p class="wp-caption-text">MapView with pins and bubbles</p></div>
<p>The bubbles can contain a title, a description as well as an action button. Signals are emitted when the text or the action button is tapped by the user so that applications can carry out the right action in that context. Typical actions would be to show more details about the location or starting a turn-by-turn navigation to that location. Oh and before I forget, did I mention that the title and description supports html tags? Yes it does. You can use html tags to format the text or even insert hyperlinks to open webpages.</p>
<div id="attachment_15051" class="wp-caption aligncenter" style="width: 510px"><a href="http://rimdevblog.files.wordpress.com/2013/05/maps3.png"><img class="size-full wp-image-15051" alt="A bubble with an HTML hyperlink" src="http://rimdevblog.files.wordpress.com/2013/05/maps3-e1369139608125.png?w=500&#038;h=500" width="500" height="500" /></a><p class="wp-caption-text">A bubble with an HTML hyperlink</p></div>
<p>I guess I have been saving the best for last. One feature that I am really excited about is the ability to set the MapView to follow a specific pin. This is extremely useful if you want to track friends on a map or keep the user always centered on the map. Simply update the coordinates of the followed pin and watch the map automatically move with it. A full <b><i>sample app</i></b> can be downloaded from <a href="https://github.com/blackberry/Cascades-Samples/tree/master/mapview">here</a>.</p>
<p>Finally, a big shout-out to our maps team for their hard work &#8211; the MapView now has much better performance, faster tile loading and packs the features most of us need. Let’s get to work and put some more maps in our apps. If you missed the session at BlackBerry Jam Americas 2013, please check out the content on-demand &#8211; <a href="https://bblive.blackberryconferences.net/2013/connect/search.ww#loadSearch-searchPhrase=jam69&amp;searchType=session&amp;tc=0&amp;sortBy=&amp;p=" target="_blank">JAM69 - Maps in your Apps</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15044/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15044/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15044&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/05/blackberry-10-1-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25ee80c29143f159bad70d24df820bc1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shadidhaque</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/maps-e1369139144688.png" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/maps3-e1369139608125.png" medium="image">
			<media:title type="html">A bubble with an HTML hyperlink</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry Jam 2013 &#8211; The Rise of Headlesss Apps and the Invocation Framework</title>
		<link>http://devblog.blackberry.com/2013/05/blackberry-jam-headless-invoke/</link>
		<comments>http://devblog.blackberry.com/2013/05/blackberry-jam-headless-invoke/#comments</comments>
		<pubDate>Wed, 08 May 2013 13:41:29 +0000</pubDate>
		<dc:creator>Shadid</dc:creator>
				<category><![CDATA[BlackBerry Jam]]></category>
		<category><![CDATA[BlackBerry Live]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[Map]]></category>
		<category><![CDATA[MapView]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=14942</guid>
		<description><![CDATA[Just wanted to quickly remind everyone that we are going to have great contents on how to achieve deep system integration via invocation framework including the rise of the headless apps. If you are attending BlackBerry Jam Americas 2013, please check out the following sessions. Otherwise, please change your mind and attend. J JAM06 &#8211; [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14942&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://rimdevblog.files.wordpress.com/2013/05/spin.gif"><img class="aligncenter size-full wp-image-14944" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/05/spin.gif?w=400&#038;h=225" width="400" height="225" /></a></p>
<p>Just wanted to quickly remind everyone that we are going to have great contents on how to achieve deep system integration via invocation framework including the rise of the <b>headless apps</b>. If you are attending <a href="http://blackberryjamconference.com" target="_blank">BlackBerry Jam Americas 2013</a>, please check out the following sessions. Otherwise, please change your mind and attend. J</p>
<p><b>JAM06 &#8211; Built for BlackBerry: System Integration with Invocation Framework</b></p>
<ul>
<li><a href="https://bblive.blackberryconferences.net/2013/connect/speakerDetail.ww?PERSON_ID=39D8FEA9B4B26D101E2D98A879297DD3&amp;tclass=popup">Larry McDonough &#8211; Principal Evangelist, BlackBerry</a></li>
<li><a href="https://bblive.blackberryconferences.net/2013/connect/speakerDetail.ww?PERSON_ID=D34C3410E173CA5F32EE6C0C16C3BCB4&amp;tclass=popup">Shadid Haque &#8211; Sr. Application Development Consultant, BlackBerry</a></li>
</ul>
<p>To qualify for Built for BlackBerry®, your application must integrate with a BlackBerry® 10 service. One of the innovation features of BlackBerry 10 is the invocation framework. Through the invocation framework your application or game can request another application to perform a specific task. Also, your application can register as a target in the invocation framework to provide your specific function to other applications. Join us to see why and how you can effortlessly integrate with this framework.</p>
<p><b>JAM47 &#8211; Background Services &#8211; Event Driven Processing for your Application</b></p>
<ul>
<li><a href="https://bblive.blackberryconferences.net/2013/connect/speakerDetail.ww?PERSON_ID=C96F9EFA1C4130B5AB96E1FA29DDCD30&amp;tclass=popup">Russell Andrade &#8211; Product Manager, Native SDK, BlackBerry</a></li>
<li><a href="https://bblive.blackberryconferences.net/2013/connect/speakerDetail.ww?PERSON_ID=D34C3410E173CA5F32EE6C0C16C3BCB4&amp;tclass=popup">Shadid Haque &#8211; Sr. Application Development Consultant, BlackBerry</a></li>
</ul>
<p>The session will discuss the brand new Background Services framework which allows developers to bundle a separate process with their application to run in the background without a UI.  Learn the basics of how this framework works, learn some guidelines about when to use it and when not to, and learn about the experiences of existing app partners that successfully deployed a background service and lessons learned from their projects.</p>
<p><b>JAM56 &#8211; CaseStudy: InvocationFramework &#8211; The heart of your business apps</b></p>
<ul>
<li><a href="https://bblive.blackberryconferences.net/2013/connect/speakerDetail.ww?PERSON_ID=00893D0A956AF026B79687B610E53DA1&amp;tclass=popup">Ekke Gentz &#8211; Independent Software Architect, ekkes-corner UG</a></li>
<li><a href="https://bblive.blackberryconferences.net/2013/connect/speakerDetail.ww?PERSON_ID=D34C3410E173CA5F32EE6C0C16C3BCB4&amp;tclass=popup">Shadid Haque &#8211; Sr. Application Development Consultant, BlackBerry</a></li>
</ul>
<p>Invocation Framework is the driving force behind BlackBerry Flow. Experience first-hand how Ekke&#8217;s OpenDataSpace, Conference2Go and SerCar10 app leverages Invocation and Flow for media playback, recording, sharing app and content with social networks such as BBM and foursquare, turn by turn navigation with BlackBerry Maps, in app System Settings, adding event reminders and much more. Ekke also provides his own targets so others can invoke his apps.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/14942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/14942/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14942&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/05/blackberry-jam-headless-invoke/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25ee80c29143f159bad70d24df820bc1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shadidhaque</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/spin.gif" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry 10 Cascades MapView</title>
		<link>http://devblog.blackberry.com/2013/01/cascades-mapview/</link>
		<comments>http://devblog.blackberry.com/2013/01/cascades-mapview/#comments</comments>
		<pubDate>Wed, 16 Jan 2013 13:28:50 +0000</pubDate>
		<dc:creator>Shadid</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[Map]]></category>
		<category><![CDATA[MapView]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=13102</guid>
		<description><![CDATA[Beyond any doubt, mapping is one of the most valued features. We get it! With that in mind, we committed to a rich set of mapping APIs for BlackBerry 10. Some of you may have already seen it in our API references for Cascades; some of you may have tried it and, more importantly, provided [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13102&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Beyond any doubt, mapping is one of the most valued features. We get it! With that in mind, we committed to a rich set of mapping APIs for BlackBerry 10. Some of you may have already seen it in our API references for Cascades; some of you may have tried it and, more importantly, provided feedback that mattered. Today, I am really excited to announce that with the latest SDK update (10.0.9.2318), we’ve got maps for all of our Cascades developers out there.</p>
<p style="text-align:center;"><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='560' height='315' src='http://www.youtube.com/embed/Z3tnQFTRML4?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>MapView provides out of the box elegance with beautiful map tiles and all the basic interactions such as pinch-to-zoom and drag-n-pan. You can also drop push pins for POIs and show bubbles to present more details about a POI. Better yet, both the pin and the bubble can be fully customized to represent your own branding. Although these cover the basic needs for most of us, anything with Cascades has to be a bit more special, right? So where is the moment of charm in MapView? You just have to continue reading (or watch the video above).</p>
<p>I know 2D maps are nice and they do their job, but they are also yesterday’s news. The MapView takes that to the next level with APIs for tilting and rotating the map in a 3D space. Hook those two up with the gyroscope and the compass and you’ve got augmented reality in your app with zero effort. In fact, that’s exactly what I did in the <a href="https://github.com/blackberry/Cascades-Samples/tree/master/custommapview" target="_new">CustomMapView</a> sample app. The sample demonstrates the full power of MapView as of today and will be kept up to date as we add more features to our SDK. Please feel free to fork this in GitHub and contribute back!</p>
<p>I am really happy for how the MapView is coming together in Cascades, and more importantly the potential it has among developers. Please let me (<a href="http://twitter.com/shadidhaque" target="_new">@shadidhaque</a>) know what you plan to do with it and what we can do for you.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/13102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/13102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13102&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/01/cascades-mapview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25ee80c29143f159bad70d24df820bc1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shadidhaque</media:title>
		</media:content>
	</item>
		<item>
		<title>Sensors on BlackBerry 10 Have Arrived!</title>
		<link>http://devblog.blackberry.com/2012/10/sensors-on-blackberry-10-have-arrived/</link>
		<comments>http://devblog.blackberry.com/2012/10/sensors-on-blackberry-10-have-arrived/#comments</comments>
		<pubDate>Fri, 12 Oct 2012 15:10:32 +0000</pubDate>
		<dc:creator>Shadid</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[How-to]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Acceleration]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[orientation]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[Sensors]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=11629</guid>
		<description><![CDATA[Here&#8217;s a guest post from Adam Parco from our Sensor Algorithms &#38; Services team &#8211; Ed. Developing for BlackBerry® has never been faster or easier.  We have been working hard to give you the same experience when incorporating sensors into your game or application.  With the release of Beta 3, we have added complete support for [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=11629&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em>Here&#8217;s a guest post from Adam Parco from our Sensor Algorithms &amp; Services team &#8211; Ed.</em></p>
<p><img class="aligncenter size-full wp-image-11631" title="embed" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2012/10/embed.png?w=188&#038;h=288" height="288" width="188" /></p>
<p>Developing for BlackBerry® has never been faster or easier.  We have been working hard to give you the same experience when incorporating sensors into your game or application.  With the release of Beta 3, we have added complete support for sensors in Cascades™, leveraging the power of Qt Sensors from Qt Mobility.  QML gives you the unparalleled flexibility and simplicity of adding a sensor to your app in as little as 4 lines of code!</p>
<pre>   Compass {
      active: <b>true</b>
      onReadingChanged: {
          console.<b>log</b>("Azimuth" + <span style="text-decoration:underline;">reading.</span>azimuth);
      }
   }</pre>
<p>Of course we still also support the C++ Qt Sensor API for those hardcore developers out there.  For more information on including and using sensors in your project check out the newly updated documentation <a href="https://developer.blackberry.com/cascades/documentation/device_comm/sensors/index.html" target="_blank">here</a>.</p>
<p>The device movement alarm is a great example on leveraging some of RIM®&#8217;s exclusive API extensions.  Use them to differentiate your app.  Look for the following APIs:</p>
<ul>
<li>axesOrientationMode</li>
<li>accelerationMode</li>
<li>alwaysOn</li>
<li>skipDuplicates</li>
</ul>
<p>By now you are probably screaming “Show me the code!”.  We have you covered and have created several examples that we want you to copy, paste, and mash up into your applications.  Show us what you can do!</p>
<ul>
<li>Sensor Examples: <a href="https://github.com/blackberry/Cascades-Samples">https://github.com/blackberry/Cascades-Samples</a></li>
<li>User documentation: <a href="http://blackberry.github.com/Cascades-Samples">http://blackberry.github.com/Cascades-Samples</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/11629/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/11629/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=11629&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/10/sensors-on-blackberry-10-have-arrived/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25ee80c29143f159bad70d24df820bc1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shadidhaque</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/10/embed.png" medium="image">
			<media:title type="html">embed</media:title>
		</media:content>
	</item>
		<item>
		<title>Get Your Invoke On: BlackBerry 10 Invocation Framework</title>
		<link>http://devblog.blackberry.com/2012/08/blackberry-10-invocation-framework/</link>
		<comments>http://devblog.blackberry.com/2012/08/blackberry-10-invocation-framework/#comments</comments>
		<pubDate>Fri, 17 Aug 2012 14:18:52 +0000</pubDate>
		<dc:creator>Shadid</dc:creator>
				<category><![CDATA[How-to]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 10 invocation framework]]></category>
		<category><![CDATA[bound invocation]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[invoke]]></category>
		<category><![CDATA[sample code]]></category>
		<category><![CDATA[target]]></category>
		<category><![CDATA[unbound invocation]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=10749</guid>
		<description><![CDATA[BlackBerry® apps have always been known for their ability to deeply integrate with core applications as well as with other third-party apps. With BlackBerry® 10, we are taking that experience to the next level with our Invocation Framework. It enables one application to request another to perform a specific task. For example, BlackBerry® Messenger (BBM™) [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=10749&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>BlackBerry® apps have always been known for their ability to deeply integrate with core applications as well as with other third-party apps. With BlackBerry® 10, we are taking that experience to the next level with our Invocation Framework. It enables one application to request another to perform a specific task. For example, BlackBerry® Messenger (BBM™) may request an app to open a .DOC file that it received in a chat session. But that’s just the tip of the iceberg &#8211; the framework streamlines the communication between apps and provides a consistently smooth and jitter-free user experience.</p>
<p>First and foremost, there are two kinds of invocations – unbound and bound. An unbound invocation is performed when an app does not specify a specific target app that should get invoked, and hence relies on the invocation framework to select the best target. For example, if there are three apps that can open .DOC files, the framework chooses the best one based on its own target selection logic. So, for unbound invocations, the framework provides automatic brokering to find the best-fit targets and also performs target selection to choose the best among the best. This is very powerful because the client application does not need to know any target applications at all, and yet it can discover and invoke them via the invocation framework.</p>
<p><span id="more-10749"></span></p>
<p><img class="aligncenter size-full wp-image-10751" title="" src="http://rimdevblog.files.wordpress.com/2012/08/invocation-framework-1.jpg?w=600&#038;h=422" alt="TITLE_IMAGE" width="600" height="422" /></p>
<p>On the other hand, a bound invocation is performed when the target app is specified by the client application while sending an invocation request. For example, a client app may request that Docs to Go® should be invoked for opening a .doc file. In this case, the invocation framework does not provide any brokering (or target selection) and blindly invokes the specified target app with the request parameters. Extra care must be taken when performing a bound invocation because an app may be sending a request to a target that the target does not understand at all. One thing is clear &#8212; bound invocation assumes that the client knows the target well.</p>
<p><img class="aligncenter size-full wp-image-10750" title="" src="http://rimdevblog.files.wordpress.com/2012/08/invocation-framework-2.jpg?w=600&#038;h=191" alt="" width="600" height="191" /></p>
<p>There are really two ways you can know a target. First, you might have had a conversation with the author of the target app and have an agreement on the invocation request parameters. In return, they have made you aware of their target ID that you can use to perform a bound invocation. Second, you can query the invocation framework with an invocation request to get a list of best-fit targets and programmatically parse their attributes (capabilities) including their target IDs and invoke one programmatically. Note that querying is another way to discover apps without knowing them and is even more powerful and flexible than unbound invocations. As long as you have a valid target ID, you can perform a bound invocation with the appropriate parameters.</p>
<p>So far so good, but how does the invocation framework know about all the target apps? It does because each target app is required to register with the framework if they wish to be considered by the framework. While registering with the framework, targets must specify a target id which alone makes them candidates for bound invocation. However if a target wants to make itself available for unbound invocations or invocation queries, it must define one or more invoke filters. Each filter is a combination of the following attributes.</p>
<ul>
<li>Actions (e.g. bb.action.OPEN) that describes the action it can perform</li>
<li>MIME types (e.g. application/pdf) describing the content type it can perform the action on</li>
<li>URIs (e.g. <a href="http://" rel="nofollow">http://</a>, file://) specifying the protocols it can handle to retrieve the data</li>
<li>EXTs describing the file extensions it can handle if the URI scheme is file://</li>
</ul>
<p>Note that at least one action and one MIME type is mandatory for each filter definition, and if the URI is file://, at least one EXT must be specified. Filters are what really allow the invocation framework to broker between clients and potential targets as well as target selection that lead to successful invocations.</p>
<p>Well, that’s a 30,000 feet overview of the invocation framework but as a developer I know your hands are itching for some real code. The good news is I have that covered &#8212; I have already uploaded a few sample applications on Github that you may find very (very) useful.</p>
<ul>
<li><a href="https://github.com/blackberry/Cascades-Samples/tree/master/invokeclient" target="_new">InvokeClient</a> – An application that demos different ways to invoke and to query for targets</li>
<li><a href="https://github.com/blackberry/Cascades-Community-Samples/tree/master/InvokeTarget1" target="_new">InvokeTarget1</a> – A dummy target app that can be used with InvokeClient</li>
<li><a href="https://github.com/blackberry/Cascades-Community-Samples/tree/master/InvokeTarget2" target="_new">InvokeTarget2</a> – A second dummy target app that can also be used with InvokeClient</li>
</ul>
<p>Samples are great, but so are documentations (if we read them) for a solid understanding. Please refer to our <a href="https://developer.blackberry.com/cascades/documentation/device_platform/invocation/index.html" target="_new">App Integration</a> development guide for a comprehensive guide with code snippets for both invoke clients and targets.</p>
<p>I am more excited than ever before to introduce the invocation framework as part of the <a href="https://developer.blackberry.com/cascades/download" target="_new">BlackBerry 10 Native SDK beta 2</a> and have no doubt that this will help most app developers out there to provide a deeply integrated user experience. Invocation is one of the core aspects of the BlackBerry 10 experience and come launch, it is going to be hard to find an app that does not invoke or get invoked. I will keep everyone posted on new features as we add them to this framework but more importantly, I am all ears to your feedbacks at shaque[at]rim[dot]com, <a href="http://twitter.com/BlackBerryDev" target="_new">@BlackBerryDev</a> and <a href="http://twitter.com/shadidhaque" target="_new">@shadidhaque</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/10749/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/10749/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=10749&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/08/blackberry-10-invocation-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25ee80c29143f159bad70d24df820bc1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shadidhaque</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/08/invocation-framework-1.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/08/invocation-framework-2.jpg" medium="image" />
	</item>
		<item>
		<title>Developing in Cascades</title>
		<link>http://devblog.blackberry.com/2012/07/cascades-development/</link>
		<comments>http://devblog.blackberry.com/2012/07/cascades-development/#comments</comments>
		<pubDate>Wed, 18 Jul 2012 14:37:47 +0000</pubDate>
		<dc:creator>Shadid</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Editorials]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=10277</guid>
		<description><![CDATA[Examining some of the highlights of developing for the BlackBerry platform using Cascades.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=10277&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em>Jamie Julius is the Chief Software Architect of <a href="http://appworld.blackberry.com/webstore/vendor/13">Nobex Technologies Inc</a>. – Ed.</em></p>
<p style="text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2012/07/img_00000030.png"><img class="aligncenter  wp-image-10282" title="IMG_00000030" src="http://rimdevblog.files.wordpress.com/2012/07/img_00000030.png?w=491&#038;h=819" alt="TITLE_IMAGE" width="491" height="819" /></a></p>
<p>About a month ago, I took the plunge and started a Cascades™ project for BlackBerry® 10.</p>
<p>Initially I was in a state of shock. This is an entirely different world compared to legacy BlackBerry Java® development – including the language (C++), the framework (Qt/Cascades), and a declarative language to build the UI (QML). Slowly and surely things started coming together. Fortunately, I had done a lot of C++ programming in my distant past, and somewhere in the back of my brain most of that old knowledge was still there. Nonetheless, I found myself staring at compiler error messages in bewilderment when I attempted to make a static function member call using dot syntax (Java) instead of using :: (C++).</p>
<p>After a couple of days the state of shock wore off and I found myself getting excited about this new way of writing BlackBerry applications. So what’s so great?</p>
<p>RIM® has been spotlighting Cascades with its cool controls and animation as a great framework for a new generation of apps. This is all true, but to me, what really makes the difference is the Qt foundation on which Cascades is built. It is Qt that enables rapid and solid development with a clean separation of the UI from the code behind.</p>
<p>In an attempt to summarize what I like about Qt, here’s a short list of the things that have made me smile so far. No doubt as I progress, the list will grow.</p>
<p><span id="more-10277"></span></p>
<h3><strong>QML</strong></h3>
<p>Defining a UI via markup is more intuitive than defining it via code. The markup clearly expresses the hierarchical structure of the UI. Such a hierarchy is almost impossible to see when looking at the equivalent in code. Furthermore, the structure can be expressed with minimal lines of markup in contrast to hundreds of lines of code without any loss of functionality. Needless to say, tweaking the UI and finding and fixing bugs via markup are all a breeze. QML also supports components. This means that I can define QML fragments in separate files and refer to these components from other QML files. I have already found myself defining re-usable pieces of QML. Of course, QML isn’t the only markup language in use today for writing non-HTML applications (e.g., XAML), so it’s great to see this “tried and proven” concept come to the world of BlackBerry development.</p>
<h3><strong>Code Behind</strong></h3>
<p>QML wouldn’t be very useful if it didn’t connect well with C++ code. Qt’s support for named properties and invocable methods in C++ makes it really easy to put code behind the UI. The UI can easily be configured to read values from a C++ object exposed via “properties”. In fact, when configured as such, a control’s property is “bound” to an object’s property. This means that as the value of the object’s property changes, the UI automatically updates to reflect these changes. C++ objects can also expose “methods” which can be invoked directly from QML.</p>
<h3><strong>Qt Threading</strong></h3>
<p>Qt expands on the basic notion of a thread by providing a built-in event loop for any thread. Qt allows an object to be “associated” with a thread. Via dynamic method invocation, a method can be invoked on an object associated with another thread. When such invoked, Qt transparently wraps the method invocation in an event and places it in the appropriate thread’s event queue. As such, the method will be ultimately invoked on the object’s thread. I found this to be extremely helpful when dealing with a particular object type, containing long-running methods. If used correctly, one can use this technique to gain the benefits of multi-threading without the dangers of concurrency.</p>
<h3><strong>Signals and Slots</strong></h3>
<p>Qt uses a mechanism known as signals and slots to allow objects to “listen” to events triggered by other objects. I have found this mechanism to be much more flexible than the Java listener paradigm (i.e., implementing interfaces). Any object can be eligible to listen to “signals” of any other object, simply by implementing a method “slot” with the correct signature. Needless to say, should the receiving object be associated with a different thread, the invocation of the “slot” will be invoked on the object’s thread.</p>
<h3><strong>Maturity and Community Support</strong></h3>
<p>Qt is not new. That’s good! It’s good because it means that it is stable and mature. It means that it contains hundreds of classes providing everything from a basic string wrapper (QString) to XML processing (QDomDocument). It is also very well documented. Both officially on the Qt site and unofficially by the zillions of posts on various forums.</p>
<p>In short, I’m enjoying the ride. Qt is a great foundation for writing apps. Coupled with Cascades, I can definitely say that we have a strong framework for building the next generation of BlackBerry apps.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/10277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/10277/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=10277&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/07/cascades-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25ee80c29143f159bad70d24df820bc1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shadidhaque</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/07/img_00000030.png?w=614" medium="image">
			<media:title type="html">IMG_00000030</media:title>
		</media:content>
	</item>
		<item>
		<title>Be Social – Integrate your apps with Facebook and Twitter</title>
		<link>http://devblog.blackberry.com/2012/06/integrate-apps-with-social/</link>
		<comments>http://devblog.blackberry.com/2012/06/integrate-apps-with-social/#comments</comments>
		<pubDate>Wed, 06 Jun 2012 13:33:03 +0000</pubDate>
		<dc:creator>Shadid</dc:creator>
				<category><![CDATA[How-to]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[BlackBerry 7]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[sample app]]></category>
		<category><![CDATA[social networks]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=9669</guid>
		<description><![CDATA[Find out how to integrate your app with social networks like Facebook and Twitter.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9669&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>One of the unsung heroes of <a href="http://www.blackberry.com/bb7" target="_new">BlackBerry® 7</a> Java SDK is the Send Command Framework. Although the name doesn’t say much, this API lets you seamlessly integrate with existing apps on the device to share data. Thankfully the native <a href="http://appworld.blackberry.com/webstore/content/680/?lang=en" target="_new">Facebook®</a> and <a href="http://appworld.blackberry.com/webstore/content/8160/?lang=en" target="_new">Twitter®</a> apps are two of many!</p>
<p style="text-align:center;"><img src="http://rimdevblog.files.wordpress.com/2012/05/connected-apps-2.jpg?w=270&#038;h=360" alt="TITLE_IMAGE" width="270" height="360" /> <img title="" src="http://rimdevblog.files.wordpress.com/2012/05/connected-apps-3.jpg?w=270" alt="" width="270" /></p>
<p style="text-align:center;"><em><a href="https://github.com/blackberry/Samples-for-Java/tree/master/SocialApp" target="_new">Download the sample app</a></em></p>
<p>So this is it folks &#8212; no more hair-pulling to figure out how to talk to social networks directly. There are already apps for them, so let’s learn how to leverage those apps from ours instead of reinventing it.</p>
<p><span id="more-9669"></span></p>
<p>The first step is to create the data or context we would like to share. This context is simply a JSON object that encapsulates our data. Here is an example:</p>
<p><code>JSONObject context = new JSONObject();<br />
try {<br />
context.put(SendCommandContextKeys.TEXT, "Your Text");<br />
context.put(SendCommandContextKeys.SUBJECT, "Your Text");<br />
// context.put(SendCommandContextKeys.PATH, "file:///.....");<br />
} catch (JSONException e) {<br />
System.out.println(e.toString());<br />
}</code></p>
<p>I intentionally commented out the PATH type data because we cannot use PATH data in a context that also has TEXT or SUBJECT types. But I still wanted to highlight that we can also share a file path (e.g. a photo).</p>
<p>Once we have our data context nicely wrapped up in a JSONObject, we need to create SendCommand objects that point to specific apps with a specific context. So how do we get these SendCommands? Easy peasy &#8212; we simply query the Send Command Framework with our context data. Here’s how:</p>
<p><code>SendCommand[] commandsAll =<br />
SendCommandRepository.getInstance().get(SendCommand.TYPE_TEXT, context, true);</code></p>
<p>Notice that the 3rd parameter above is a Boolean. If true, the query returns all commands regardless if their associated applications can be opened; if false, it returns only commands whose associated applications can be opened. Ideally we would set it to false; however, in this post we will see how we can get them all and filter them in our own application logic.</p>
<p>Each SendCommand object has an ID that uniquely identifies the target app and the context. Note that the IDs are not documented as there could be so many of them, but it is fairly easy to figure them out by experimentation. Since our target is the Facebook app and the Twitter app, let me save you the work by telling you what their IDs are.</p>
<p><img class="aligncenter size-full wp-image-9672" title="" src="http://rimdevblog.files.wordpress.com/2012/05/connected-apps-1.jpg?w=550&#038;h=130" alt="" width="550" height="130" /></p>
<p>Now let’s filter:</p>
<p><code>for (int i = 0; i &lt; commandsAll.length; i++) {<br />
if (commandsAll[i].getId().equals("Twitter_text")) {<br />
commands[0] = commandsAll[i];<br />
}<br />
if (commandsAll[i].getId().equals("Facebook_text")) {<br />
commands[1] = commandsAll[i];<br />
}<br />
}</code></p>
<p>&#8230;and we are done. We have our SendCommand objects and we are free to call their run() method anywhere in our app. Be it a Button click or a Menu selection, knock yourself out!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/9669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/9669/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9669&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/06/integrate-apps-with-social/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25ee80c29143f159bad70d24df820bc1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shadidhaque</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/connected-apps-2.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/connected-apps-3.jpg" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/connected-apps-1.jpg" medium="image" />
	</item>
		<item>
		<title>Wi-Fi Geolocation Has Launched!</title>
		<link>http://devblog.blackberry.com/2011/09/wifi-geolocation-launch/</link>
		<comments>http://devblog.blackberry.com/2011/09/wifi-geolocation-launch/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 19:20:25 +0000</pubDate>
		<dc:creator>Shadid</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Platform Services]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[location services]]></category>
		<category><![CDATA[wi-fi]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=7047</guid>
		<description><![CDATA[Announcing the launch of the Wi-Fi® geolocation service, a further enhancement to our Cell-site geolocation service.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=7047&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img src="http://rimdevblog.files.wordpress.com/2011/09/wi-fi-geolocation.jpg?w=600&#038;h=366" alt="Wi-Fi Geolocation" title="Wi-Fi Geolocation" width="600" height="366" class="aligncenter size-full wp-image-7090" /></p>
<p>LBS nation, we have good news! The Wi-Fi® geolocation service officially launched on September 9th, 2011. This in-house technology at Research In Motion® (RIM®) uses Wi-Fi Access Point data that&#8217;s been collected anonymously by your BlackBerry® smartphone to provide a quick and accurate location fix to location-aware applications globally.  This service is a further enhancement to our Cell-site geolocation service, which has been in service globally for more than a year. </p>
<p>Unlike GPS-based location fixes, this service offers a faster and more convenient way for developers to get location fixes via a secure connection with minimum bandwidth usage. Although the accuracy of this service is lower than GPS, it’s higher than Cell-site geolocation, and the speed is expected to be much faster than GPS. One advantage to Wi-Fi geolocation service is that it typically works even when GPS is not available.  For example, when a user is indoors or when a user prefers not to turn their GPS on in order to preserve battery life, Wi-Fi geolocation service is still an option.</p>
<p>The APIs needed to acquire Wi-Fi geolocation fixes have been available since the BlackBerry® 6 OS release; therefore, all devices running the BlackBerry 6 OS and higher are able to leverage this service via existing APIs upon provisioning of this service. Please note that service provisioning may take up to a month from the launch date, so we’re asking for your patience and understanding if it doesn’t start working immediately. For APIs and other relevant technical details, please refer to the KB article <a href="http://supportforums.blackberry.com/t5/Java-Development/Location-APIs-Start-to-finish/ta-p/571949" target="_new" title="Location APIs – Start to finish">Location APIs – Start to finish</a>. You can also leverage <a href="http://supportforums.blackberry.com/t5/Java-Development/Simple-Location-API/ta-p/1145951" target="_new" title="Simple Location API">Simple Location API</a> if you want to get a head-start by skipping the full details. </p>
<p>I am really excited about this service as it opens up a lot of possibilities for innovation and great apps. Let us know when you integrate your app with this service, and let us know how it goes!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/7047/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/7047/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=7047&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2011/09/wifi-geolocation-launch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25ee80c29143f159bad70d24df820bc1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shadidhaque</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2011/09/wi-fi-geolocation.jpg" medium="image">
			<media:title type="html">Wi-Fi Geolocation</media:title>
		</media:content>
	</item>
		<item>
		<title>Simple Location API – Simplicity vs. Flexibility</title>
		<link>http://devblog.blackberry.com/2011/07/simple-location-api/</link>
		<comments>http://devblog.blackberry.com/2011/07/simple-location-api/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 16:49:33 +0000</pubDate>
		<dc:creator>Shadid</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Platform Services]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[location api]]></category>
		<category><![CDATA[simple location]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=6801</guid>
		<description><![CDATA[Announcing an abstraction to the Location API that simplifies getting location fixes in different modes, as well as optimizes battery usage.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=6801&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-6802" title="Simple Location API" src="http://rimdevblog.files.wordpress.com/2011/07/location-api.jpg?w=360&#038;h=480" alt="Simple Location API" width="360" height="480" /></p>
<p>I have recently written an abstraction to the Location API that simplifies getting location fixes in different modes, as well as optimizes battery usage. Developers intending to quickly incorporate location technology to their apps can now use the Simple Location API to leverage both GPS and Geolocation-based location services in virtually no time.</p>
<p>Besides pure GPS or Geolocation mode, the Simple Location API comes equipped with an OPTIMAL mode that dynamically chooses between the Research In Motion® (RIM®) <a href="http://us.blackberry.com/developers/platform/locateservice/" target="_new">Locate Services</a> and on-device GPS, depending on availability. Also, since location-based services can be battery intensive if not handled properly, this API optimizes power consumption by adding increasing breathing intervals between retries when location fixes are not available.</p>
<p>The Simple Location API is designed to include the following features:</p>
<ul>
<li>Simplified API with a focus on real world use cases.</li>
<li>An API that leverages on-device GPS and RIM&#8217;s Locate Services.</li>
<li>Dynamically detects available and supported location modes on the device before trying any of them.</li>
<li>Has the ability to choose the best location mode based on the modes available on the smartphone.</li>
<li>Built-in retry mechanism with dynamic delay (to save battery) based on a retry factor set by the API user.</li>
<li>Performs both single and tracking location fixes.</li>
<li>Simplified events via SimpleLocationListener interface.</li>
<li>Capable of starting, stopping and restarting tracking sessions in a reliable thread-safe way.</li>
<li>Designed to eliminate/reduce misuse of the API</li>
</ul>
<p>There’s definitely room for improvement to the Simple Location API so, keeping that in mind, the source is fully open and can be downloaded <a href="http://supportforums.blackberry.com/t5/Java-Development/Simple-Location-API/ta-p/1145951" target="_new">here</a> along with a full demo app. Feel free to integrate this in to your app today, and if you are a passionate BlackBerry® app developer, you know the drill &#8211; improve and share!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/6801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/6801/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=6801&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2011/07/simple-location-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25ee80c29143f159bad70d24df820bc1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shadidhaque</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2011/07/location-api.jpg" medium="image">
			<media:title type="html">Simple Location API</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry Maps Revamped</title>
		<link>http://devblog.blackberry.com/2010/11/blackberry-maps-revamped/</link>
		<comments>http://devblog.blackberry.com/2010/11/blackberry-maps-revamped/#comments</comments>
		<pubDate>Mon, 22 Nov 2010 22:01:03 +0000</pubDate>
		<dc:creator>Shadid</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Platform Services]]></category>
		<category><![CDATA[blackberry maps]]></category>
		<category><![CDATA[developer groups]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[maps]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=2723</guid>
		<description><![CDATA[BlackBerry® Maps has been updated with some great new features for BlackBerry developers.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=2723&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-2724" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-11.jpg?w=600&#038;h=398" alt="" width="600" height="398" /></p>
<p>Hello developers – I have great news! As part of our continuous effort to improve our map client and the data services behind it, we have added some really exciting features to our BlackBerry® Maps offering. Whether your application uses an embedded MapField or simply invokes BlackBerry Maps to render map data, you can start taking advantage of these new features today!</p>
<p>First, the data coverage has been extended by adding 34 new countries, including Australia, Brazil, Argentina, Uruguay, New Zealand, The Philippines and Taiwan. I have no doubt that the addition of these new countries in our database will open up a lot of opportunities for app developers in those regions. The figure above shows the current coverage of the BlackBerry Maps service.</p>
<p><span id="more-2723"></span></p>
<p>After carefully listening to your comments and feedback, we have also spent a significant amount of our efforts to optimize the visual appearance of the maps with a stronger rendering engine as well as with a new color scheme. New POI databases for hospitals, universities/colleges, police stations, train/subway stations, shopping centers, parking, parks and airports were also added wherever available, in order to make the maps as meaningful as possible to the end user. The screenshots below highlight a few of the many visual changes that went in as part of this update.</p>
<p><img class="aligncenter size-full wp-image-2726" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-21.jpg?w=599&#038;h=264" alt="" width="599" height="264" /></p>
<p><img class="aligncenter size-full wp-image-2728" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-31.jpg?w=392&#038;h=80" alt="" width="392" height="80" /></p>
<p><img class="aligncenter size-full wp-image-2729" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-41.jpg?w=599&#038;h=264" alt="" width="599" height="264" /></p>
<p>Please note that, in order to enable the extended coverage and visual optimization, you will first need to update your device as instructed below:</p>
<p><strong><span style="text-decoration:underline;">Updating BlackBerry Maps with BlackBerry® Device Software 4.7 or Lower</span></strong></p>
<ol>
<li>From the home screen, go to <strong>Maps</strong>.</li>
<li>Press the [Menu] key and select <strong>Options</strong>.</li>
<li>Press the [Menu] key and select <strong>Clear Cache</strong>.</li>
<li>Select <strong>Delete</strong> when prompted to delete cached entries.</li>
</ol>
<p><strong><span style="text-decoration:underline;">Updating BlackBerry Maps with BlackBerry Device Software 5.0 before Bundle 1057</span></strong></p>
<p>Update your BlackBerry Device Software to the latest version, available <a href="http://na.blackberry.com/eng/update/" target="_new">here</a>. If you do not wish to update your software, you can follow the instructions below (for the BlackBerry Device Software 5.0 after Bundle 1057) to receive the additional map coverage and new map design. However, the new POI icons will not be available.</p>
<p><strong><span style="text-decoration:underline;">Updating BlackBerry Maps with BlackBerry Device Software 5.0 after Bundle 1057</span></strong></p>
<p>1.	From the home screen, go to <strong>Maps</strong>.</p>
<p><img class="aligncenter size-full wp-image-2730" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-51.jpg?w=480&#038;h=360" alt="" width="480" height="360" /></p>
<p>2.	Press the [Menu] key and select <strong>Options</strong>.</p>
<p><img class="aligncenter size-full wp-image-2731" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-61.jpg?w=480&#038;h=360" alt="" width="480" height="360" /></p>
<p>3.	Press the [Menu] key and select <strong>Clear Cache</strong>.</p>
<p><img class="aligncenter size-full wp-image-2732" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-71.jpg?w=480&#038;h=360" alt="" width="480" height="360" /></p>
<p>4.	Select <strong>Delete</strong> when prompted to delete cached entries.</p>
<p><img class="aligncenter size-full wp-image-2733" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-81.jpg?w=480&#038;h=360" alt="" width="480" height="360" /></p>
<p><strong><span style="text-decoration:underline;">Updating BlackBerry Maps with BlackBerry Device Software 6.0</span></strong></p>
<p>1.	From the home screen, go to <strong>Maps</strong>.</p>
<p><img class="aligncenter size-full wp-image-2734" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-91.jpg?w=360&#038;h=480" alt="" width="360" height="480" /></p>
<p>2.	Press the [Menu] key and select <strong>Options</strong>.</p>
<p><img class="aligncenter size-full wp-image-2735" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-101.jpg?w=360&#038;h=480" alt="" width="360" height="480" /></p>
<p>3.	Press <strong>Global Map Options</strong>.</p>
<p><img class="aligncenter size-full wp-image-2736" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-112.jpg?w=360&#038;h=480" alt="" width="360" height="480" /></p>
<p>4.	Press the [Menu] key and select <strong>Clear Cache</strong>.</p>
<p><img class="aligncenter size-full wp-image-2727" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-121.jpg?w=360&#038;h=480" alt="" width="360" height="480" /></p>
<p>While we try our best to support new features on all OS versions, it is important to note that some of these features are not available on legacy OS versions. Please use the table below to determine which features are available for the OS version you have.</p>
<table border="1" cellpadding="5" width="100%">
<tbody>
<tr>
<td width="30%"><strong>Feature</strong></td>
<td width="70%"><strong>BlackBerry Device Software Version</strong></td>
</tr>
</tbody>
</table>
<table border="1" cellpadding="5" width="100%">
<tbody>
<tr>
<td width="30%"></td>
<td><strong>4.2</strong></td>
<td><strong>4.5</strong></td>
<td><strong>4.6</strong></td>
<td><strong>4.6.1</strong></td>
<td><strong>4.7</strong></td>
<td><strong> </strong><strong>5.0</strong><br />
<em>Before Bundle 1057</em></td>
<td><strong> </strong><strong>5.0</strong><br />
<em>After Bundle 1057</em></td>
<td><strong>6.0</strong></td>
</tr>
<tr>
<td width="30%">New map coverage</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">New map design</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Parking icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Hospital icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">University/College icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Shopping center icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Police station icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Metro station icons</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Train station icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">City park labels</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">National park labels</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Airport icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Other landmarks</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p>I am very excited about these new features and am really looking forward to any comments you may have!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/2723/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/2723/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=2723&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2010/11/blackberry-maps-revamped/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25ee80c29143f159bad70d24df820bc1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shadidhaque</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-11.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-21.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-31.jpg" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-41.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-51.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-61.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-71.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-81.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-91.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-101.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-112.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-121.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>
	</item>
	</channel>
</rss>
