<?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; russellandrade</title>
	<atom:link href="http://devblog.blackberry.com/author/russellandrade/feed/" rel="self" type="application/rss+xml" />
	<link>http://devblog.blackberry.com</link>
	<description></description>
	<lastBuildDate>Fri, 17 May 2013 17:47:42 +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; russellandrade</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>BlackBerry 10 NDK – Managing Device Target Updates</title>
		<link>http://devblog.blackberry.com/2013/02/blackberry-10-ndk-target-updates/</link>
		<comments>http://devblog.blackberry.com/2013/02/blackberry-10-ndk-target-updates/#comments</comments>
		<pubDate>Wed, 13 Feb 2013 18:14:42 +0000</pubDate>
		<dc:creator>russellandrade</dc:creator>
				<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[BlackBerry 10 NDK]]></category>
		<category><![CDATA[Native SDK Manager]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=13703</guid>
		<description><![CDATA[In my last blog post I talked about using the update manager for downloading target OS releases. The main intent of these target OS releases is to allow you as a developer to get the necessary target libraries for debugging purposes. Our fantastic BlackBerry 10 software is going out to multiple carriers all over the [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13703&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In my last blog post <a href="http://devblog.blackberry.com/2013/01/native-sdk-january-refresh/" target="_new">I talked about using the update manager for downloading target OS releases</a>. The main intent of these target OS releases is to allow you as a developer to get the necessary target libraries for debugging purposes. Our fantastic BlackBerry 10 software is going out to multiple carriers all over the world. In order to satisfy the needs of our carriers and to address issues as they come up, we will be regularly building and releasing new device target updates. Note that, though there are minor tweaks being made for different carriers based on their acceptance, the Core OS and SDK remain the same, so your app should behave the same on all accepted builds. You do not need to keep downloading these target updates, except for when you need to debug on a device running a version of software that is different from what’s running via your IDE.</p>
<p>Our rationale for providing these target OS updates to our developer community is twofold. First, we want to provide you with the ability to debug your apps on the latest OS targets that you download on your Dev Alpha devices. These debug targets contain the new symbol tables that will allow you to line up the target with the IDE. Second, as we release production devices, we expect that many of our developers will be purchasing this production hardware for development and testing purposes. We plan on making the latest libraries available for our production devices so you can debug and test your apps. You can use the IDE’s built-in update manager to get these targets.</p>
<p><span id="more-13703"></span></p>
<p>The purpose of this blog post is to explain and clarify how the update mechanism will work for both Dev Alpha testing devices and production devices. I’ll assume you are already familiar with the update manager. If not, I urge you to read <a href="http://devblog.blackberry.com/2013/01/native-sdk-january-refresh/" target="_new">my previous blog post</a> prior to reading this one.</p>
<p>First, let’s start with the simple case of updating the target OS for the BlackBerry Dev Alpha testing devices. To keep things simple, we will only provide the latest and most recent target OS update for these devices so you will only find one dev alpha update at a given point in time via the update manager. So as an example, let&#8217;s say 10.0.9.2318 is the latest version of software you can download for our Dev Alpha test devices through our update manager. Once we release the next target OS, we will remove 10.0.9.2318 and place the new one on the update server. We will also add the Dev Alpha keyword in the update site target string to clearly indicate that this is a Dev Alpha load. When you bring up your update manager UI, you will see the new build tagged with the ‘Dev Alpha’ keyword as shown below. Note that 2318 is no longer available through the update site now that we have refreshed it with a newer version.</p>
<p><img class="aligncenter" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/02/blackberry-10-ndkpic1.jpg?w=500&#038;h=600" width="500" height="600" /></p>
<p>I hope you found that straightforward, since on production hardware things get a little more complicated – though we are trying our very best to simplify this. As we release the different revisions of BlackBerry 10 production hardware, you will see multiple versions of production software based on device type and carrier. Once again, I should reiterate that from an API perspective this software is identical, and there should be no difference in app behavior between these various versions. These versions are only there so if you have a device from a carrier with that build number on it, you can match up your debugging target with it to perform on device debugging. The way you find your build number is by accessing the Settings screen (slide down gesture from the top bezel), and once you get in to this screen you select the About menu. Once you click on this, you will see a screen that provides various pieces of information about your device such as Model Name, Number, OS Version etc. The field you are interested in is OS Version. You should see something like the following under OS version. In the figure, the OS version is 10.0.10.401:</p>
<p><img class="aligncenter" alt="" src="http://rimdevblog.files.wordpress.com/2013/02/blackberry10ndkpic2.jpg?w=500" /></p>
<p>If you now go to the update manager, you should find a version of software that you can update to that matches your OS version. For target OS updates that correspond to production hardware, we will not have the Dev Alpha keyword in the update string, so you will just see BlackBerry 10 Native SDK <i>10.0.10.401</i>.</p>
<p><img class="aligncenter" alt="" src="http://rimdevblog.files.wordpress.com/2013/02/blackberry10ndkpic3.jpg?w=500&#038;h=600" width="500" height="600" /></p>
<p>Last but not least, if you are developing using the simulator, you can find the latest version of the simulator on our native site. We will also be providing earlier revisions of our simulator on our site in case you need to acquire a previous copy. Once you have the simulator, you can get an updated target for it via the IDE by using the same mechanism as described above. You can determine your simulator build in two ways. First, when you see the simulator download on our developer site, it will also specify the simulator version you are downloading – for example, it is 10.0.10.261 in the example below:</p>
<p><img class="aligncenter size-full wp-image-13706" alt="" src="http://rimdevblog.files.wordpress.com/2013/02/blackberry10ndkpic4.jpg?w=500" /></p>
<p>You can also determine your simulator build using the swipe down gesture to access the Settings screen, similar to how you would do this on the device as described above. Once you know your simulator version, you can download the appropriate target libraries using the update manager. In this case, it’s the Dev Alpha build 10.0.10.261.</p>
<p>My hope is that this clarifies things for you and makes it easy to keep up with target OS&#8217;s. One thing I need to reiterate though is that you don’t have to keep downloading newer device side updates. Our APIs are complete and other than a few minor exceptions, we don’t plan on adding in new APIs. More importantly, though, backwards compatibility is being enforced &#8211; if your app works as of our Gold 10.0 SDK, you should be fine. We are making sure that the new targets don’t break backwards compatibility. So you only have to worry about downloading these new targets if there is a specific issue you are trying to debug on a target that is running a newer version of software. In addition to this, in the future we plan to simplify the process of keeping up with targets so that you don’t have to worry about matching target numbers with SDK numbers – the IDE will automatically select the right debug symbols for you based on what target is loaded on the device you connect to.</p>
<p>I hope you have found this useful – as before I will continue to provide important snippets of information on a regular basis to assist you with your development via my blogs and through Twitter <a href="http://twitter.com/russell_andrade" target="_new">@russell_andrade</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/13703/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/13703/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13703&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/02/blackberry-10-ndk-target-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/aacfb04e6b02273d991e7bb0c519fdec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">russellandrade</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/02/blackberry-10-ndkpic1.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/02/blackberry10ndkpic2.jpg?w=500" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/02/blackberry10ndkpic3.jpg" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/02/blackberry10ndkpic4.jpg?w=500" medium="image" />
	</item>
		<item>
		<title>BlackBerry 10 Native SDK January Refresh</title>
		<link>http://devblog.blackberry.com/2013/01/native-sdk-january-refresh/</link>
		<comments>http://devblog.blackberry.com/2013/01/native-sdk-january-refresh/#comments</comments>
		<pubDate>Fri, 11 Jan 2013 00:30:52 +0000</pubDate>
		<dc:creator>russellandrade</dc:creator>
				<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[native]]></category>
		<category><![CDATA[native sdk]]></category>
		<category><![CDATA[ndk]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=12984</guid>
		<description><![CDATA[We&#8217;re getting closer to the launch date for BlackBerry 10 &#8211; and that means making sure all the T&#8217;s are crossed and I&#8217;s are dotted. Following up on the gold SDK release last month, this release of the BlackBerry 10 Native SDK does not add any net new functionality to our tooling and APIs but [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=12984&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>We&#8217;re getting closer to the launch date for BlackBerry 10 &#8211; and that means making sure all the T&#8217;s are crossed and I&#8217;s are dotted. Following up on the gold SDK release last month, this release of the <a href="developer.blackberry.com/native/" target="_blank">BlackBerry 10 Native SDK</a> does not add any net new functionality to our tooling and APIs but rather is a compatibility update to new device software that continue to get built.</p>
<p>Our SDKs (both API and tooling) remain gold as of the previous release and we have not introduced any new API or tooling changes in this release.  However, that being said, we continue to build new versions of the BlackBerry 10 device software that contain various bug fixes and stability improvements.  Our BlackBerry 10 software is being tested by over 150 carriers around the world and as they provide feedback we continue to release software incorporating this feedback.</p>
<p><span id="more-12984"></span></p>
<p>What this means is that even though our API signatures and tooling are not changing; the underlying device software will go through a continuous improvement cycle. As an app developer you will want to upgrade to the latest software on your BlackBerry 10 Dev Alpha testing device in order to get the latest fixes as well as perform some sanity testing with your app to make sure there are no unexpected issues.  If you are trying to debug your app on the latest and greatest device release, you will likely want to pick up the latest Native SDK target OS so that you can get the right libraries and symbols for debugging on the latest version of device software that you are working with.</p>
<p>The good news is that you can download the the latest Native SDK target OS via the Update Manager that we provide as part of our Momentics IDE suite. If you click on Help in the menu bar, you will see an item that says ‘Update Native SDK’.</p>
<p style="text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2013/01/devblog-native-january.png"><img class="aligncenter  wp-image-12985" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/01/devblog-native-january.png?w=614&#038;h=367" width="614" height="367" /></a></p>
<p>Once you click on Update Native SDK, you will see a dialog pop up that provides a list of Native SDK targets OS releases you can download. The latest Native SDK target OS as of the time of writing of this blog article is BlackBerry 10 Native SDK 10.0.9.2318. You should see this in the list.  Select it via the checkbox, click Next and follow the steps to download the latest Native SDK target OS.</p>
<p><a href="http://rimdevblog.files.wordpress.com/2013/01/devblog-native-january-2.png"><img class="aligncenter size-full wp-image-12986" alt="devblog - native january 2" src="http://rimdevblog.files.wordpress.com/2013/01/devblog-native-january-2.png?w=613&#038;h=739" width="613" height="739" /></a></p>
<p>As we get closer to the launch date of our device and the gold release of our BlackBerry 10 device software we want to make sure that you have the latest BlackBerry 10<span style="font-size:11px;"> </span>Native SDK target to test and debug with on your BlackBerry 10 Dev Alpha testing devices.  As we build new iterations of our OS software, we will continue to release these to you via our Update Manager so you can keep up with the most recent versions.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/12984/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/12984/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=12984&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/01/native-sdk-january-refresh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/aacfb04e6b02273d991e7bb0c519fdec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">russellandrade</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/01/devblog-native-january.png" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/01/devblog-native-january-2.png" medium="image">
			<media:title type="html">devblog - native january 2</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry 10 Native SDK &#8211; Racing to the Finish Line</title>
		<link>http://devblog.blackberry.com/2012/11/blackberry-10-native-sdk-update-2/</link>
		<comments>http://devblog.blackberry.com/2012/11/blackberry-10-native-sdk-update-2/#comments</comments>
		<pubDate>Thu, 29 Nov 2012 04:50:35 +0000</pubDate>
		<dc:creator>russellandrade</dc:creator>
				<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[native development]]></category>
		<category><![CDATA[native sdk]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=12391</guid>
		<description><![CDATA[In my previous blog post, I talked about how the BlackBerry 10 Native SDK had finally come of age, and how we had released a whole set of important APIs in Beta3 that was launched in September. The notable ones in our last release included Email, Calendar, BBM, Cards, Advertising, Push, Bluetooth and several others. [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=12391&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In my <a href="http://devblog.blackberry.com/2012/09/blackberry-10-native-sdk-update/" target="_new">previous blog post</a>, I talked about how the BlackBerry 10 Native SDK had finally come of age, and how we had released a whole set of important APIs in Beta3 that was launched in September. The notable ones in our last release included Email, Calendar, BBM, Cards, Advertising, Push, Bluetooth and several others. I had a chance to meet with many of our developers at the BlackBerry® Jam Americas conference in September and there was quite a bit of excitement about all the new APIs and tooling features we had added in.</p>
<p>In many ways, this release is rather uneventful since we had achieved most of what we set out to do from an SDK perspective for BlackBerry® 10 in the last release. But as they say, “no news is good news” and the reason for this release is primarily performance enhancements &#8211; we delivered all the key APIs you need in earlier releases.</p>
<p>Our main focus at this time is to stabilize the Native SDK and make sure to get rid of those nagging bugs and issues that can make the lives of our developers difficult. We also want to avoid feature creep and churn, especially with our BlackBerry 10 launch not that far away. That being said, there are still a few key features that I would like to talk about in this release.</p>
<p><span id="more-12391"></span></p>
<p>At the core Native layer, we introduced a few new APIs and fixed a whole bunch of bugs. There are too many fixes to list, and you should refer to our release notes if you need a comprehensive overview. However, I thought I should point out a couple of important ones.</p>
<p>We added functions to support a Proxy auto config (PAC) and URL exclusion list to the BPS netstatus API. We also fixed the netstatus availability API, and added a last known location request to the BPS Geolocation API. Several fixes and minor enhancements were also made to our Scoreloop SDK.</p>
<p>For many of you these will likely not be a big deal, but for those of you who have been blocked waiting for some of these fixes and enhancements, I hope they help address your issues and concerns.</p>
<p>On the Cascades™ platform side of things, we added in an API to determine device orientation along with a camera specific API to query the preview frame orientation. Another API that might be of interest to our audio developers is the ability to provide an external audio manager handle into the AudioRecorder object.</p>
<p>Many app developers have also expressed the need for APIs that allow them to query the device for information, either for diagnostic purposes or for optimization and fine tuning based on what the system is capable of. With that in mind, we have added a device information API that provides the ability to query device-related information, as well as a memory info API that allows you to query memory related parameters such as total RAM and flash. We have also addressed a bug in our dialogs and toast API that will allow Cascades developers to access the finished signal in their qml code. Speaking of dialogs and toasts, we also enhanced our BPS dialog service to add support for recursive mutexes.</p>
<p>There are also some exciting developments to report on in the tooling front. We are releasing a new beta of the Visual Studio™ Plugin that addresses several of the bugs and issues with the earlier beta. One useful improvement that we addressed is support for variable expansion via the debugger. For performance reasons, we were only able to support up to five levels deep in our last release. We managed to optimize the way we perform variable evaluation so we can loosen this restriction. Developers who have significant nested structures in their games will now have no issues expanding their structures as deep down as possible, as you can see in this screenshot:</p>
<p><img class="aligncenter size-full wp-image-12392" title="TITLE_IMAGE" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2012/11/native-sdk-update.jpg?w=600&#038;h=353" height="353" width="600" /></p>
<p>Another important usability issue that we addressed in this release is the ability to stop a build that is in progress. Many game developers have large projects that can take some time to build, and it was important to provide the ability to stop a build midway in case the developer decided to cancel it. There was no easy way to do this in our previous beta release, so you would have to wait until the build finished, which could be painful if you had a large project.</p>
<p>As always, please continue to provide your feedback on our forums as you use the Visual Studio plugin. All your feedback so far has been incredibly valuable in helping us understand the issues that cause you the biggest headaches.</p>
<p>Our BlackBerry 10 IDE has also not stood still, and we have a few important new developments to point out. We have added support for Apple’s OSX Mountain Lion so you should be able to develop with our IDE on OSX. Unfortunately, our installers are dependent on the Flexera Install Anywhere which does not fully support Mountain Lion as yet. In the meantime, you can still use the IDE on Mountain Lion but you will have to do a couple of simple workarounds after installation in order to create an icon and deploy the IDE &#8212; please see our release notes for details. We continue to be on top of this and once full support is provided in the Install Anywhere software, you will be able to install our IDE without the workarounds. We are also actively testing our Windows 8 version which is progressing to come out in the next release. In case you were not aware, you can view <a href="http://developer.blackberry.com/native/beta/download/roadmap/" target="_new">our roadmap information</a> online on our developer site.</p>
<p>If you are actively using our Native SDK to develop BlackBerry 10 applications, I hope you are finding the development experience to be easy and seamless. If you still haven’t gotten your feet wet, I encourage you to do so. You can download our Native SDK and tooling from <a href="http://developer.blackberry.com/native/beta/download/" target="_new">our developer website</a>. Best of all, it’s free – you do not even need a device to test out your apps. You can just download our device simulator that you can use for developing and testing your apps just as you would on an actual device.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/12391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/12391/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=12391&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/11/blackberry-10-native-sdk-update-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/aacfb04e6b02273d991e7bb0c519fdec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">russellandrade</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/11/native-sdk-update.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>The Coming of Age of the BlackBerry 10 Native SDK</title>
		<link>http://devblog.blackberry.com/2012/09/blackberry-10-native-sdk-update/</link>
		<comments>http://devblog.blackberry.com/2012/09/blackberry-10-native-sdk-update/#comments</comments>
		<pubDate>Tue, 25 Sep 2012 17:03:36 +0000</pubDate>
		<dc:creator>russellandrade</dc:creator>
				<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[bbm]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 10 development]]></category>
		<category><![CDATA[BlackBerry 10 Native SDK]]></category>
		<category><![CDATA[blackberry messenger]]></category>
		<category><![CDATA[Cards]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Core Native]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[native sdk]]></category>
		<category><![CDATA[native SDK development]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=11131</guid>
		<description><![CDATA[The BlackBerry® 10 Native SDK first arrived on the scene for our BlackBerry® PlayBook™ tablet. While it was a powerful tool for game development, it was still infancy in many ways, as it didn’t have many of the strong APIs and functionality for building an integrated native experience with a rich UI. For the BlackBerry [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=11131&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The BlackBerry® 10 Native SDK first arrived on the scene for our BlackBerry® PlayBook™ tablet. While it was a powerful tool for game development, it was still infancy in many ways, as it didn’t have many of the strong APIs and functionality for building an integrated native experience with a rich UI. For the BlackBerry 10 platform, we evolved the NDK and added in the Cascades™ UI framework along with many new APIs. We have released several beta version of the Native SDK since BlackBerry 10 Jam in May. The infant evolved into early adolescence.</p>
<p>While these earlier betas offered significant improvements over previous editions, they were still a work in progress. We are finally at a stage where we can truly say that with Beta 3 of our Native SDK, our young child has finally come of age. Our APIs have evolved to a point where they are stable and functional enough to advertise backwards compatibility. We also support a full feature set of APIs in the Native SDK – from connectivity APIs such as email and calendar to APIs that support deeper integration such as invocation to social APIs such as BlackBerry® Messenger™ (BBM).</p>
<p>Beta 3 of the Native SDK contains numerous new and important APIs that many of you have been anxiously waiting for. Some of the highlights include:</p>
<p><span id="more-11131"></span></p>
<h3><strong>Cards</strong></h3>
<p>If you attended some of our other conferences, the BlackBerry Jam 10 World Tour or BlackBerry Jam Sessions, you have probably heard us talk about the flow and deep integration that the BlackBerry 10 platform provides. The invocation framework provides a facility via cards through which you can incorporate some of this flow and integration in your app. With cards, you will be able to expose discrete functionality within your app to other apps as well as incorporate functionality provided by your other apps within your own. As an example, if you are developing a picture viewer app, you might expose a simple picture previewer card to the invocation framework. Any app that registers with the invocation framework can invoke your card to preview a picture. Likewise, your app can leverage existing cards on the platform to access various pieces of functionality, whether it is a simple preview of a video or other discrete functions like picking a contact or composing an email.</p>
<p>Visually, a card typically appears as a previewer that takes up most of the screen. However, it appears as part of the application on which it is stacked. Essentially, you can use a gesture to slide the card in, partially or fully into your app as seen in the picture below:</p>
<p><img class="aligncenter size-full wp-image-11185" title="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2012/09/cards.jpg?w=600&#038;h=211" alt="TITLE_IMAGE" width="600" height="211" /></p>
<p>A Card is considered part of the application that invokes it and does not appear as a separate entity in the running applications grid. In addition, when the card&#8217;s function is complete, the user is automatically returned to its parent. In this way, a card &#8220;feels&#8221; like part of the application.</p>
<h3><strong>BBM Social Platform</strong></h3>
<p>BBM has always been core to the Blackberry platform and it still remains a critical piece of our BlackBerry 10 portfolio. The BBM Social Platform APIs allow you to leverage the social features and functionality of BlackBerry Messenger from within your app. For example, you can initiate a BBM chat and share files such as pictures, voice notes, and music between users who are running your app. You can also stream data between users of your app for real-time applications such as communication, gaming and location tracking. As part of the BBM social platform, you will be able to harness BBM features such as BBM user profile, contact list, messaging and application profile box.</p>
<h3><strong>Email, Calendar and Contacts</strong></h3>
<p>There is a significant amount of interest from our third party developers for Calendar, Email and Contact APIs, and we are excited to announce their availability in this beta. The Message Center is a signature feature of the BlackBerry experience, and we are adding support on the API side for it as well. The Message Center APIs provide the ability to launch the unified inbox, send emails and receive task notifications. You can use our calendar functionality to create new calendar events, edit existing events, delete existing events and view existing calendar events. We also have the ability to notify third parties when events are being created, modified and deleted. Finally, our contact API allows you to create, edit, delete and view contacts as well as add additional meta information to a contact.</p>
<h3><strong>Advertising</strong></h3>
<p>In this competitive world of app development, you likely care about creative ways in which you can make money off your apps and we want to help bring you the tools to do just this. After all, the success of our platform depends on your success. To facilitate that, we are adding an Advertising Service along with APIs that allow you to display banner and splash ads in your application or game. You can also create hot links to keyword advertising. Under the scenes, our Advertising service launches a Browser webview to display the advertisements. Along with our Payment and Scoreloop APIs that we introduced in earlier Betas, we believe that we have some powerful tools that can help you monetize your application.</p>
<h3><strong>Push</strong></h3>
<p>At RIM®, we are proud of our Push technology, and we are now making our powerful Push framework available through the NDK. Through the APIs we provide, your app will be able to register with the Push service and receive push data. When the Push service receives incoming Push messages, it will invoke the application registered for the message using the addressing information provided during the registration. Any app that needs to be responsive to incoming data streams should strongly consider taking a look at our Push framework and associated events.</p>
<h3><strong>&#8230;and many others</strong></h3>
<p>On the ‘Core Native’ front, we’ve introduced a Bluetooth® API which supports Bluetooth on/off, power status, and retrieving paired and found devices. It also provides several Bluetooth profiles such as Serial Port Profile (SPP), Bluetooth Low Energy (LE) and Generic Attribute Profile (GATT). Other core native APIs include APIs for Holster detection, retrieving application info and for querying Wi-Fi® and battery status.<br />
Our spell check engine now exposes APIs at both the C and C++ layer to allow apps to perform spell check functionality in their own customized UI.</p>
<p>At the Cascades™ layer, we have introduced a WallPaper API that allows users to set an image as the wallpaper. We have also introduced APIs for sensors, including support for rotation, orientation, magnetometer, gyroscope and accelerometer. The geocoding API allows the user to perform geocoding and reverse geocoding while the radio info API includes the ability to query available radios, their status, ESN/IMSI, Sim card info, Mobile Country Code and Mobile Network code.</p>
<p>We hope you find enough content in this release to satisfy your needs. As we continue to evolve our platform, we intend to be as open and transparent with you about what’s coming down the pipe. I want to point you to our really cool-looking <a href="https://developer.blackberry.com/native/beta/download/roadmap/" target="_new">Native</a> &amp; <a href="https://developer.blackberry.com/cascades/download/roadmap/" target="_new">Cascades</a> flight boards where you can get an up-to-date status on our roadmap items. We have also added a <a href="http://developer.blackberry.com/platforms/ndk" target="_new">section</a> to our site that highlights the key features of our Core Native and Cascades frameworks. It should be useful for those of you who are trying to decide whether Core Native or Cascades is the right framework to use for developing your app.</p>
<p>As always, we want to continue to hear from you about your needs and receive feedback on our Native SDK.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/11131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/11131/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=11131&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/09/blackberry-10-native-sdk-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/aacfb04e6b02273d991e7bb0c519fdec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">russellandrade</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/09/cards.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>Tweaking the BlackBerry 10 Beta 2 Native SDK</title>
		<link>http://devblog.blackberry.com/2012/08/blackberry-10-beta-2-patches/</link>
		<comments>http://devblog.blackberry.com/2012/08/blackberry-10-beta-2-patches/#comments</comments>
		<pubDate>Wed, 15 Aug 2012 14:25:12 +0000</pubDate>
		<dc:creator>russellandrade</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 10 app development]]></category>
		<category><![CDATA[BlackBerry 10 Beta 2 Native SDK]]></category>
		<category><![CDATA[BlackBerry 10 Dev Alpha]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[native sdk]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=10706</guid>
		<description><![CDATA[We've released fixes for two issues in the BlackBerry 10 Beta 2 Native SDK.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=10706&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In our eagerness to get BlackBerry® 10 Beta 2 Native SDK out the door on schedule, we ended up releasing it with two issues that we feel warrant a new patch. We didn’t want developers to have to wait until the next release to get these fixes &#8211; especially if work was dependent on this functionality.</p>
<p>The first fix addresses an issue with the Invocation API. The invocation framework does not launch the target on the simulator. For all practical purposes, this means that if you create an invocation target application and install it on the simulator, no app will be able to invoke it. This functionality does already works on the device, so if you are developing your BlackBerry 10 app on the BlackBerry 10 Dev Alpha testing device, you should be fine. But for all those developers who are using the simulator for development, we felt it was necessary to provide a fix to this as soon as we could.</p>
<p>The other noteworthy fix is with regards to the Notifications API. When you develop an app with the capability of posting notifications, it gets vibrate set to ON and Badge set to OFF by default in the Notification Settings. It should actually be the other way around – vibrate should be set to OFF and Badge should be set to ON by default. Oops, reminds me of something Dr. Nick would do.</p>
<p>Other than that, there are no new features included in this patch. If these fixes are not important to your development, you can continue to use the Beta 2 version of the BlackBerry 10 Native SDK that you currently have installed.</p>
<p>You can download the latest BlackBerry 10 Native SDK <a href="https://developer.blackberry.com/native/download/" target="_blank">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/10706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/10706/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=10706&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/08/blackberry-10-beta-2-patches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/aacfb04e6b02273d991e7bb0c519fdec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">russellandrade</media:title>
		</media:content>
	</item>
		<item>
		<title>What’s New in our Native SDK for BlackBerry 10</title>
		<link>http://devblog.blackberry.com/2012/07/native-sdk-update-improvements/</link>
		<comments>http://devblog.blackberry.com/2012/07/native-sdk-update-improvements/#comments</comments>
		<pubDate>Thu, 19 Jul 2012 13:04:16 +0000</pubDate>
		<dc:creator>russellandrade</dc:creator>
				<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[beta 2]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 10 Native SDK]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[Geocoding]]></category>
		<category><![CDATA[Invocation]]></category>
		<category><![CDATA[Native API]]></category>
		<category><![CDATA[nfc]]></category>
		<category><![CDATA[QR codes]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=10232</guid>
		<description><![CDATA[Taking a look at some of the new functionality available in the Beta 2 of the BlackBerry 10 Native SDK.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=10232&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>BlackBerry® 10 Native SDK Beta 2 introduces new functionality to both the Native APIs and IDE.</p>
<p>At the C API layer, we have introduced some important new functionality such as the Invocation Framework API, NFC, Geocoding, Cryptography, Audio Manager, Slogger2 and Notifications Manager. As you can tell, the teams have been working hard since the release of Beta 1 to bring all this functionality to you.</p>
<h3><strong>Invocation</strong></h3>
<p>The invocation framework enables the delivery of invocations between end points. It describes how end points can be addressed, and provides a mechanism for registering and brokering event handlers such that invocation sources may be loosely coupled to the handler. The invocation framework provides an advanced brokering scheme that allows it to address many different service scenarios, and also to easily be extended to cover new cases.</p>
<p><img class="aligncenter size-full wp-image-10235" title="" src="http://rimdevblog.files.wordpress.com/2012/07/native-sdk-1.jpg?w=483&#038;h=306" alt="TITLE_IMAGE" width="483" height="306" /></p>
<p><span id="more-10232"></span></p>
<p>Your app can register as either a source or a handler. A good example of a source app is an app that supports nested URI’s, and requires a URI handler to handle the URI request. Your app can leverage the invocation framework to broker and determine the best handler for this URI – the assumption here is that there are handlers registered for this on the system. Alternatively you can develop an app that registers as an invocation target – for example, an NFC handler that registers interest in certain NDEF tags. When the NFC service reads a tag, it will leverage the invocation framework to find the best fit handler for that tag and invoke your app. We also support the Invoke API at the Qt layer, so if you are developing a Cascades™-based app, you may want to use the Qt-based invoke API as opposed to the C-based API. We also have built-in support for invoking the Cascades Action Bar and Context Menu. This support is now integrated in our Cascades UI Framework. Please refer to the following <a href="http://supportforums.blackberry.com/t5/Test-Article-and-Discussion/Invocation-APIs-fail-when-using-the-BlackBerry-10-Dev-Alpha/ta-p/1819139/">Knowledge Base article</a> for details on some known issues which will be addressed in an upcoming patch</p>
<h3><strong>NFC</strong></h3>
<p>NFC (Near Field Communications) is a short range protocol that is used for contactless communication between devices and tags. Our NFC API will support multiple NFC use cases such as Bluetooth®/Wi-Fi® pairing, NFC contact exchange, reading and writing tags, contactless payment and so on. The possibilities here are endless and I look forward to some really innovative NFC apps for BlackBerry 10 smartphones.</p>
<h3><strong>Cryptography</strong></h3>
<p>If you care about cryptography, you are in luck as we now expose our Certicom APIs for encryption and decryption of data streams. Those of you who have worked on our Java-based BlackBerry platforms might have some familiarity with what these APIs are capable of. They provide a whole slew of symmetric and asymmetric encryption algorithms such as AES, DES, RSA, ECIES and many more. Along with this, we provide various algorithms for key agreement and transport such as DH, ECDH, ECMQV, RSA, a variety of digital signatures, numerous SHA, MD and HMAC hash functions and random number generation.</p>
<h3><strong>Audio Manager</strong></h3>
<p>For developers working on apps with audio content, we have introduced a new audio manager API that provides audio concurrency services. The audio manager allows you to choose which microphone and speaker to use. It also provides APIs to get information about different microphones and speakers so if you need that degree of control this API should provide what you need.</p>
<h3><strong>Native SDK Logging with slogger2</strong></h3>
<p>With slogger2, the most important thing that you gain as a developer is speed. Slogger2 will have minimal system overhead and will be several times faster than the original slogger. Slogger2 will also log when interrupts are disabled, which might be of use to those hardcore low-level developers who require this type of capability. If you have code that uses the slogger APIs, don’t worry &#8212; we will continue to support it. Our slogger2 APIs will happily co-exist alongside the legacy slogger.</p>
<h3><strong>Notifications Manager</strong></h3>
<p>Some apps may want to send notifications to the user – for example, say an app that communicates with the cloud wants to inform the user when new data has been uploaded. The app can register with the notification service to send such a notification. We support simple LED notifications, sound and vibration, toast messages, dialogs, and Inbox notifications. Apps that want to leverage this service need to indicate this by specifying the post_notification action in their bar descriptor. The user will have the ability to customize the notification through the notification settings dialog.</p>
<h3><strong>Cascades Platform (C++) APIs</strong></h3>
<p>I’ve already used up so many words and haven’t even touched upon the C++ APIs yet! On the C++/Qt side of things, we’ve introduced a whole set of new APIs such as invocation API, Barcode processing, vibration control, copy and paste, and video capture (plus I already described the invoke API earlier). The C++ invoke API is similar in scope to the C layer API and is geared towards folks writing Cascades apps who would naturally be working with the Qt paradigm and would benefit from a Qt API.</p>
<h3><strong>Barcode Processing</strong></h3>
<p>Barcode Processing is a new API that was developed for encoding and decoding QR codes. While we’ve made the basic encoding and decoding functionality available to non -Cascades apps, the real interesting use cases would occur in conjunction with Cascades apps. The barcode-extended APIs in the Cascades namespace that will allow apps to create and display a barcode scanning control, which will in turn trigger the camera API to show a viewfinder surface as a Cascades foreign window. The app can then scan the QR code and use the provided APIs to encode it as a string and display it on screen.</p>
<p>In addition to this, you will also have APIs that allow your app to customize properties of the Viewfinder surface such as size and location.</p>
<h3><strong>Video and Camera</strong></h3>
<p>Speaking of camera, we now provide APIs to control camera settings and capture pictures within an application. This allows you to develop apps that interact with the camera, as well as ones that programmatically request a still image from the camera and start a video stream recording.</p>
<h3><strong>Location</strong></h3>
<p>For developers creating location-based apps, we have added a subset of the QtMobility location APIs. We have introduced APIs for querying current location such as latitude, longitude and altitude. We expect to continue to evolve this API in subsequent releases and plan to provide APIs for geocoding shortly. However, I should mention that we will likely not end up supporting the entire QtLocation API – certain functionality such as maps will be covered by Cascades-specific APIs in upcoming releases.</p>
<h3><strong>Vibration Control and Clipboard</strong></h3>
<p>Last but not least, we provide a C++ API for vibration control and a clipboard API, both of which are similar in scope to the C layer APIs we already provide. There have also been a myriad number of bug fixes, enhancements to existing APIs and optimizations, which are too many to list in this blog. The best way to explore all these changes is by downloading the NDK and taking a look at the headers, documentation and samples.</p>
<h3><strong>Tooling</strong></h3>
<p>On the tooling front, we’ve introduced some neat features such as invocation framework tooling, an option for faster bar deployment time, and pretty printing of objects in the debugger. More importantly, we also allow you to specify multiple icons and splash screens in your bar file. This is important for when we start releasing new devices based on the BlackBerry 10 platform, such as the BlackBerry® PlayBook™ tablet. To make it as easy as possible for you, Beta 2 of our IDE will allow you to package multiple icons and splash screens in your bar so that the bar can be deployed on multiple targets.</p>
<p>One of the challenges in writing a blog post like this is that there is a lot of content to present, and unfortunately I can’t do justice in describing all the functionality being released. My colleagues on the Developer Relations side and I are hoping to deep-dive into some of these technologies in dedicated blog posts that we plan to publish in the near future. Meanwhile, I hope this blog post provides at the very least a map of what’s available in Beta 2.</p>
<p>For more information, you should <a href="https://developer.blackberry.com/native/beta" target="_new">download our NDK on our website</a> and take a look at the new headers. You can also navigate to our NDK documentation and API reference to get more information on each of the APIs. If you still aren’t satisfied, please do not hesitate to consult our <a href="http://supportforums.blackberry.com/t5/Developer-Support-Forums/ct-p/blackberrydev" target="_new">developer forums</a> if you have questions or need support. API requests and feedback about our APIs are also very much welcomed &#8212; if there is an API you need on our platform, we want to hear about it so we can help unblock you. Happy coding!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/10232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/10232/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=10232&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/07/native-sdk-update-improvements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/aacfb04e6b02273d991e7bb0c519fdec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">russellandrade</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/07/native-sdk-1.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>Bringing your BlackBerry PlayBook apps to BlackBerry 10</title>
		<link>http://devblog.blackberry.com/2012/05/blackberry-playbook-apps-on-blackberry-10/</link>
		<comments>http://devblog.blackberry.com/2012/05/blackberry-playbook-apps-on-blackberry-10/#comments</comments>
		<pubDate>Wed, 09 May 2012 17:32:51 +0000</pubDate>
		<dc:creator>russellandrade</dc:creator>
				<category><![CDATA[How-to]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[apis]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[blackberry playbook]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[native]]></category>
		<category><![CDATA[native apps]]></category>
		<category><![CDATA[Native Development Kit]]></category>
		<category><![CDATA[native sdk]]></category>
		<category><![CDATA[orientation]]></category>
		<category><![CDATA[porting]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=9160</guid>
		<description><![CDATA[Going over two important upcoming changes to the BlackBerry 10 Native SDK in order to help developers prepare for upcoming releases, and examining how developers can easily port their BlackBerry PlayBook tablet apps to BlackBerry 10.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9160&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>While all the SDKs for <a href="http://blogs.blackberry.com/2012/05/blackberry-10-world-keynote/" target="_new">BlackBerry®</a> 10 are amazing, our pride and joy is the BlackBerry 10 Native SDK. If you’ve built native apps for the <a href="http://www.blackberry.com/playbook" target="_new">BlackBerry® PlayBook™</a> tablet, then you’ve used our BlackBerry Native SDK for Tablet OS. The new BlackBerry 10 Native SDK has the same underlying framework as the NDK platform and exposes many new APIs and tooling that will make your development experience even better. If you haven’t had a chance to download and write apps for the BlackBerry PlayBook tablet yet, now is a great time to start building some apps.</p>
<p>One of our priorities is to make sure that apps written with the BlackBerry Native SDK for Tablet OS will transition with minimal hassle to our BlackBerry 10 platform. We don’t want you, our <a href="http://www.blackberry.com/developer" target="_new">developer community</a>, to have to reinvent the wheel or tweak significant amounts of code. We also want to make sure that our developers are aware of changes coming to the platform that may impact them so they can prepare accordingly. With that in mind, I want to talk about two important upcoming changes to the BlackBerry 10 Native SDK in order to help developers prepare for upcoming releases. The motivation for both changes is to help developers scale their apps from tablets to phones.</p>
<p><span id="more-9160"></span></p>
<p>The first change has to do with multi-icon support. We want to create a seamless way for developers to port their BlackBerry PlayBook tablet applications to the BlackBerry 10 smartphone. As we support two device screen sizes, applications may need to provide more than one icon size depending on the device they are being installed on. Developers will now be able to specify a list of icons and splash screens per locale and per resolution in the bar descriptor. These would be of various sizes to suit the different target displays. The runtime will then choose the icon and splash screen that matches the given display. We will be maintaining backwards compatibility, so existing apps written for the BlackBerry PlayBook tablet should not have to modify anything. However, if you are moving your app to a BlackBerry 10 device, you will have to specify icons and splash screens with alternate sizes.</p>
<p>The second important change is with respect to orientation. On BlackBerry 10, native applications will not be able to get the width and height values that they need for sizing their windows and determining orientation by querying the ‘WIDTH’ and ‘HEIGHT’ environment variables. If the width is greater than the height, the application will know it is running in landscape mode and vice versa. This behaviour has changed from BlackBerry PlayBook OS 2.0. On BlackBerry PlayBook OS 2.0, an application would query the screen APIs to get its width and height. For applications running on BlackBerry PlayBook OS 2.0, they can continue to rely on this behaviour as this is now going to change. On BlackBerry 10, however, applications are discouraged from querying for their width and height using the screen APIs. The following code snippet illustrates how an app can query for its width and height:</p>
<p><code>int screen_resolution[2];<br />
screen_resolution[0] = atoi(getenv("WIDTH")); //get width<br />
screen_resolution[1] = atoi(getenv("HEIGHT")); //get height</code></p>
<p>Once the application gets these values (which it can and should do at startup), the application can proceed to create and set up its window.</p>
<p><code>screen_create_window(&amp;window, context);<br />
rc = screen_set_window_property_iv(window,<br />
SCREEN_PROPERTY_SIZE, screen_resolution);<br />
if (rc) {<br />
//handle error …<br />
}</code></p>
<p>rc = screen_set_window_property_iv(screen_win,<br />
SCREEN_PROPERTY_BUFFER_SIZE, screen_resolution);<br />
if (rc) {<br />
//handle error …<br />
}</p>
<p>Applications written for BlackBerry 10 should not set the SCREEN_PROPERTY_ROTATION value, as Navigator will set this for the application automatically when it posts its window.</p>
<p>Furthermore, if you were writing native apps on BlackBerry PlayBook OS 2.0, you would have had to write extra logic to rotate your window based on what you read out from the “ORIENTATION” environment variable. The box below shows an example of how orientation was set up in the BlackBerry PlayBook OS 2.0 setup. This code can now be removed, thereby simplifying your setup logic.</p>
<p><code>//THIS CODE CAN NOW BE DELETED</code></p>
<p>int angle = atoi(getenv(&#8220;ORIENTATION&#8221;));<br />
int buffer_size[2] = {screen_resolution[0], screen_resolution[1]};<br />
int flip = false;</p>
<p>if ((orientation == LANDSCAPE) &amp;&amp; (buffer_size[0] &lt;<br />
buffer_size[1])) {<br />
//In landscape, rotate to portrait<br />
buffer_size[0] = screen_resolution[1];<br />
buffer_size[1] = screen_resolution[0];</p>
<p>if ((angle == 0) || (angle == 180)) {<br />
//Landscape device in landscape mode<br />
angle = 90;<br />
} else if ((angle == 90) || (angle == 270)) {<br />
//Portrait device in landscape mode<br />
angle = 0;<br />
}</p>
<p>flip = true;<br />
}</p>
<p>if (flip) {<br />
rc = screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_ROTATION,<br />
&amp;angle);<br />
if (rc) {<br />
//handle error …<br />
}</p>
<p>rc = screen_set_window_property_iv(screen_win,<br />
SCREEN_PROPERTY_BUFFER_SIZE, buffer_size);<br />
if (rc) {<br />
//handle error …<br />
}<br />
}</p>
<p>When it comes to determining current orientation, applications should always rely on the navigator to present current orientation. You should never use the accelerometer to determine orientation. The navigator will also inform the application when it needs to rotate and will initiate the rotation sequence by sending the application a rotate (PORTRAIT or LANDSCAPE) message. These new “rotate” messages are replacing the “orientation” messages on the current 2.0 Navigator. It is to be noted as well that the old orientation messages used to specify rotation in angles, while rotation will be specified as Landscape or Portrait in the new messages. These new units are much more intuitive in my opinion and map more closely with how we think of orientation on the device.</p>
<p>As a native app developer, there are several things you need to consider:</p>
<ul>
<li>Continuing to support your application on BlackBerry PlayBook OS 2.0 won’t require any change – things will continue to work as before.</li>
<li>If you are developing a native app only for BlackBerry 10, you should make sure to use the new method of getting width and height parameters from navigator as well as using the new rotate messages.</li>
<li>If you already have an app on BlackBerry PlayBook OS 2.0 and want to move it to BlackBerry 10, you will have some minor changes to make to port your app over. Your code on BlackBerry PlayBook OS 2.0 will not be able to get the width/height parameters via environment variables, so you will continue to use the old methods. On BlackBerry 10, you should use the parameters you receive from navigator for this.</li>
</ul>
<p>These changes are not drastic, and our hope is that you will be able to migrate from BlackBerry PlayBook OS 2.0 to BlackBerry 10 with minimal fuss. In passing, I should also point out that these changes target developers who are writing applications right on top of our low-level windowing framework, so these changes mainly impact game developers. If you are writing a Cascades™-based application, you should also be abstracted from most of these changes and should consult your Cascades documentation.</p>
<p>I am personally excited about these changes as they will enhance the development capabilities of the BlackBerry 10 Native SDK when it comes to supporting multiple resolutions and orientation. When the time comes for you to start developing or moving your app or game over to the BlackBerry 10 platform, you should definitely consult the developer documentation for more details on these two features and how they will impact your application.</p>
<p>Happy developing!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/9160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/9160/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9160&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/05/blackberry-playbook-apps-on-blackberry-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/aacfb04e6b02273d991e7bb0c519fdec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">russellandrade</media:title>
		</media:content>
	</item>
	</channel>
</rss>
