<?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; Cascades</title>
	<atom:link href="http://devblog.blackberry.com/tag/cascades/feed/" rel="self" type="application/rss+xml" />
	<link>http://devblog.blackberry.com</link>
	<description></description>
	<lastBuildDate>Fri, 24 May 2013 15:08:31 +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; Cascades</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>Bluetooth Low Energy on BlackBerry 10 &#8211; Cadence and Cascades</title>
		<link>http://devblog.blackberry.com/2013/05/nfc-cadence-cascades/</link>
		<comments>http://devblog.blackberry.com/2013/05/nfc-cadence-cascades/#comments</comments>
		<pubDate>Wed, 22 May 2013 14:52:44 +0000</pubDate>
		<dc:creator>jcmrim</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[Bluetooth Low Energy]]></category>
		<category><![CDATA[nfc]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15066</guid>
		<description><![CDATA[I think everyone would agree that living a healthy lifestyle and following a suitable exercise regime is an important factor in keeping well in today’s world. It’s not without its challenges though! How many good intentions have fallen by the way-side? It’s not easy to get yourself out of that comfy chair and head off [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15066&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I think everyone would agree that living a healthy lifestyle and following a suitable exercise regime is an important factor in keeping well in today’s world. It’s not without its challenges though! How many good intentions have fallen by the way-side? It’s not easy to get yourself out of that comfy chair and head off to the gym, take that walk or get on that bicycle. More often than not the comfy chair wins. At least that’s been my experience. Maybe I have a special, demonic chair or something.  It also tells me to eat cake sometimes. Hmmm.</p>
<p>That said there are&#8230;. apparently&#8230;. people in this world who have a bit more resolve than I do and take their sporting and fitness activities a bit more seriously. Not only do they manage to get out of the comfy chair, they even like to measure and analyse their performance so they can improve.</p>
<p>Now my colleague Martin (<a href="https://twitter.com/mdwrim"><b>@mdwrim</b></a>) has normal furniture in his house and seems more than capable of getting out of the comfy chair and down to the climbing wall or out on his bike. He and I (<b><a href="https://twitter.com/jcmrim">@jcmrim</a> </b>) talked about the kind of technology available to sporty people, in particular cyclists. Martin had just come back from watching part of the Giro d’Italia and pointed out that all the pro cyclists have sensors on their bikes. BlackBerry 10, Bluetooth Low Energy and cycling! What a perfect combination of great technology, fun and exercise as well as a great opportunity for a new Blog post, video and sample app!</p>
<p>If you haven’t already done so, this is probably a good time to have a read of our previous blog posts and articles on the <a href="http://devblog.blackberry.com/2013/04/bluetooth-low-energy-and-the-internet-of-things/">Internet of Things</a> and <a href="http://devblog.blackberry.com/2013/04/dude-wheres-my-car-keys-bluetooth-le-and-blackberry-10-how-to/">Finding Car Keys</a> since they cover the basic concepts needed in this blog post.</p>
<p>As before, the first thing we did was to do a little bit of research to see if the Bluetooth SIG had defined any standards in this area; no point in re-inventing the wheel [no pun intended] and the existence of a standard would mean that a vendor may have already implemented the technology in a product.</p>
<p>Whenever you have a requirement that may be solvable using Bluetooth LE the first place to look is here: <a href="http://developer.bluetooth.org/gatt/Pages/default.aspx">http://developer.bluetooth.org/gatt/Pages/default.aspx</a>.</p>
<p>Browsing through the GATT Profiles we came upon this one: <a href="http://developer.bluetooth.org/gatt/profiles/Pages/ProfileViewer.aspx?u=org.bluetooth.profile.cycling_speed_and_cadence.xml">Cycling Speed and Cadence</a> (CSC)… this sounded promising, and the description looked like it was just what we needed.</p>
<blockquote><p><i>“The Cycling Speed and Cadence Profile is used to enable a data collection device to obtain data from a Cycling Speed and Cadence Sensor (CSC Sensor) that exposes the Cycling Speed and Cadence Service.”</i></p></blockquote>
<p>The key element of this profile is the <a href="http://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.cycling_speed_and_cadence.xml">Cycling Speed and Cadence Service</a> (<b>UUID 0&#215;1816</b>) which contains four really useful fields:</p>
<ul>
<li>“Cumulative Wheel Revolutions”</li>
<li>“Cumulative Crank Revolutions”</li>
<li>“Last Wheel Event Time”</li>
<li>“Last Crank Event Time”</li>
</ul>
<p>These are part of the “CSC Measurement” GATT Characteristic (<b>UUID 0x2A5B</b>). They are described in detail here: <a href="http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.csc_measurement.xml">CSC Characteristics</a> and outlined in Figure 1.</p>
<p>There are some other characteristics that allow configuration and control of the device but we’ll talk about these when we come across them.</p>
<div id="attachment_15070" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-15070 " alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/05/nfc1-e1369229551403.png?w=600&#038;h=604" width="600" height="604" /><p class="wp-caption-text">Figure 1 Key GATT Characteristics for CSC</p></div>
<p>So, if you think about these characteristics they allow you to derive a number of key measurements:</p>
<ol start="1">
<li><b>Total distance travelled</b> – using “Cumulative Wheel Revolutions” – all you need to know is the wheel circumference to calculate this, but if you combine this with a time and a geo-location measurement you can even derive sufficient information to plot your progress on a map.</li>
<li><b>Speed</b> – using “Last Wheel Event Time” – you can figure out how fast the bike is going if you do a simple calculation involving the time between successive Last Wheel Event Time values and the number of wheel revolutions that occurred in that time. But if you combine this with a geo-location measurement you can derive sufficient information to plot your speed on the map as well.</li>
<li><b>Instantaneous effort</b> – using ““Last Crank Event Time”” – this can help identify those times that you’re free-wheeling and not expending energy.</li>
</ol>
<p>It’s at this point that the engineer in me begins to wonder how to instrument a bicycle to make use of this GATT profile. Martin’s a cyclist, so, after identifying a device that matched the requirements (Wahoo Fitness Blue SC<a title="" href="/Users/akinsella/AppData/Local/Microsoft/Windows/Temporary%20Internet%20Files/Content.Outlook/X7OSEEYU/Bluetooth%20Low%20Energy%20and%20CSC%20V0_3.doc#_ftn1">[1]</a> device), he attached it to his cycle as shown in Figure 2.</p>
<div>
<div id="attachment_15073" class="wp-caption aligncenter" style="width: 610px"><a href="http://rimdevblog.files.wordpress.com/2013/05/nfc21.jpg"><img class="size-full wp-image-15073" alt="Figure 2 Attachment of cycle monitor" src="http://rimdevblog.files.wordpress.com/2013/05/nfc21-e1369229754261.jpg?w=600&#038;h=338" width="600" height="338" /></a><p class="wp-caption-text">Figure 2 Attachment of cycle monitor</p></div>
<p>For those of you who are mechanically minded small magnets on both the crank and the rear wheel spokes activate the sensor strapped to the frame. The sensor maintains the counts and timings and will report them to a suitable Bluetooth LE device such as a BlackBerry 10 smartphone.</p>
<p>The application that we developed based on this is actually very similar in structure to the Heart Rate Monitor application that was described in a previous blog and article. The basic logic is the same:</p>
<ol start="1">
<li>Pair the Bluetooth LE device with the BlackBerry 10 handset before using the application.</li>
<li>Launch the application which:
<ol start="1">
<li>Discovers devices that support the CSC Service (<b>UUID 0&#215;1816</b>)</li>
<li>Connects to a discovered device selected by the user</li>
<li>Requests the device to notify our application as changes are made to the CSC Measurement characteristic (<b>UUID 0x2A5B</b>) which contains the wheel and crank data that we’re interested in.</li>
<li>Receive, parse and display in numerical (RPM) and historical graphical form the CSC Measurement data as they are received.</li>
</ol>
</li>
</ol>
<p>Here are some screenshots showing what the application looks like:</p>
<div id="attachment_15076" class="wp-caption aligncenter" style="width: 610px"><a href="http://rimdevblog.files.wordpress.com/2013/05/nfc3.png"><img class="size-full wp-image-15076" alt="Figure 3 The CscMonitor Application" src="http://rimdevblog.files.wordpress.com/2013/05/nfc3-e1369229851373.png?w=600&#038;h=324" width="600" height="324" /></a><p class="wp-caption-text">Figure 3 The CscMonitor Application</p></div>
<p>Instantaneous values of the wheel and crank readings in revolutions per minute (RPM) are shown in the upper part of the screen whilst historical RPM data are plotted on the lower half of the display. Wheel and crank historical data displays can be toggled by touching the screen. Mapping RPM values to distance or energy expended would require additional information to be provided, such as the wheel circumference or radius of the crank &#8212; we’ll leave this for a possible later iteration of the application and focus on the Bluetooth LE aspects for now.</p>
<p>If we inspect the GATT services the CSC device supports using a tool like <b>BTool</b> we can see (Figure 4) that the CSC Measurement Characteristic (<b>UUID 0x2A5B</b>) is exposed at handle <b>0&#215;0023</b>. Handles are the references to entries in the GATT that our application will discover and use to access the value associated with a characteristic. We’ve used handles before in both our previous examples.</p>
<div id="attachment_15078" class="wp-caption aligncenter" style="width: 610px"><a href="http://rimdevblog.files.wordpress.com/2013/05/nfc4.png"><img class="size-full wp-image-15078" alt="Figure 4 GATT showing CSC Characteristics" src="http://rimdevblog.files.wordpress.com/2013/05/nfc4-e1369229973665.png?w=600&#038;h=128" width="600" height="128" /></a><p class="wp-caption-text">Figure 4 GATT showing CSC Characteristics</p></div>
<p>Associated with the CSC Measurement Characteristic is a “Client Characteristic Configuration” characteristic (<b>UUID 0&#215;2902</b>) exposed at handle <b>0&#215;0024</b>. The value of this field determines whether our application will receive <b>Notifications</b> or <b>Indications</b> for the CSC Measurement Characteristic. We’ve used these before as well in our previous examples. In this case this characteristic will be set to enable Notifications using the BlackBerry 10 Bluetooth LE API.</p>
<p>So, how do we manage the data that is notified to us from the CSC device? The CSC data received is managed by a class called “CscDataContainer” &#8230; here’s part of its definition:</p>
<pre><b>class</b> CscDataContainer: <b>public</b> QObject {
       Q_OBJECT
<b>private</b>:
       <b>CscDataContainer</b>();
...
       // notification data
       QQueue&lt;csc_notification_t&gt; _csc_notifications;
       // CSC values
       QQueue&lt;csc_values_t&gt; _csc_values;
       <b>int</b> _min_wheel_rpm;
       <b>int</b> _max_wheel_rpm;
       <b>int</b> _avg_wheel_rpm;
       <b>long</b> _total_wheel_rpm;<b></b>
...
}</pre>
<p>At its core are a couple of queues that maintain the data that is received. The queue has a maximum length that can accommodate one notification per second for an 8 hour period. A future version might persist these data in a database but this is sufficient to demonstrate the principle in this case.</p>
<p>Once again the excellent little JavaScript library called “Flot” is used to plot these data in a WebView component in QML.</p>
<p>As notifications are received by our application the <b>addNotification()</b> method of the <b>CscDataContainer </b>class is called with the CSC Measurement data passed as a (uint8_t *) and a length (uint16_t) &#8212; that is an array of bytes.</p>
<p>Parsing this data is the first task and it’s instructive to see how this works – the main points are highlighted in the code fragment below:</p>
<pre><b>void</b> <b>CscDataContainer::addNotification</b>(<b>const</b> uint8_t *val, uint16_t len) {
       // parse value, paying attention to the bit settings in the FLAGS field
       <b>bool</b> wheel_revolution_data_present = <b>false</b>; // bit 0 of Flags field
       <b>bool</b> crank_revolution_data_present = <b>false</b>; // bit 1 of Flags field
       uint32_t cumulative_wheel_revolutions = 0;
       uint16_t cumulative_crank_revolutions = 0;
       uint16_t last_wheel_event_time = 0;
       uint16_t last_crank_event_time = 0;
       <b>int</b> index = 0;
       uint8_t flags = val[index];
       wheel_revolution_data_present = ((
flags &amp; WHEEL_REVOLUTION_DATA_PRESENT) == WHEEL_REVOLUTION_DATA_PRESENT);
       crank_revolution_data_present = ((
flags &amp; CRANK_REVOLUTION_DATA_PRESENT) == CRANK_REVOLUTION_DATA_PRESENT);
       // Fields are in the order of LSO to MSO.
       // Where LSO = Least Significant Octet and MSO = Most Significant Octet.
       index++;
       <b>if</b> (wheel_revolution_data_present) {
              // Cumulative Wheel Revolutions, 4 bytes.
             // Field exists if the key of bit 0 of the Flags field is set to 1.
              cumulative_wheel_revolutions =
(val[index + 3] &lt;&lt; 24) | (val[index + 2] &lt;&lt; 16) |
(val[index + 1] &lt;&lt; 8)  |  val[index];
index += 4;
              // Last Wheel Event Time, 2 bytes. 
              // Field exists if the key of bit 0 of the Flags field is set to 1.
              last_wheel_event_time = (val[index + 1] &lt;&lt; 8) | val[index];
              index += 2;
...
}
       <b>if</b> (crank_revolution_data_present) {
// Cumulative Crank Revolutions, 2 bytes. 
// Field exists if the key of bit 1 of the Flags field is set to 1.
              cumulative_crank_revolutions =
(val[index + 1] &lt;&lt; 8) | val[index];
              index += 2;
              // Last Crank Event Time, 2 bytes. 
              // Field exists if the key of bit 1 of the Flags field is set to 1.
              last_crank_event_time = (val[index + 1] &lt;&lt; 8) | val[index];
              index += 2;
    ...
    }
...
}</pre>
<p>The first byte of data contains an 8-bit flag field (see Figure 1 for details). This indicates whether crank or wheel data is present in the following data.  If these are present they are represented in Little-endian form and need to be extracted by shifting them out a byte at a time.</p>
<p>The rest of the application is more focussed on the display of this data using QML so I’ll leave that for you to look at yourself since the main learning points are to do with how to interface to the Bluetooth Low Energy device itself.</p>
<p>We made a video which has Martin (<a href="https://twitter.com/mdwrim"><b>@mdwrim</b></a>) showing the application in action and explaining the code. Here it is:</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/KpoMm9rIvsk?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>If you want to know more then check out the following resources:</p>
<ul>
<li>The complete source code for this application on Git Hub;
<ul>
<li><a href="https://github.com/blackberry/Cascades-Community-Samples">https://github.com/blackberry/Cascades-Community-Samples</a></li>
</ul>
</li>
<li>If you’re completely new to Bluetooth LE then we recommend you read our “BlackBerry 10 Bluetooth LE Primer for Developers”  which you’ll find in our knowledge base. This and all other Bluetooth LE related developer resources that we’ve created, are listed in a single resource index page:
<ul>
<li><a href="http://supportforums.blackberry.com/t5/Native-Development/BlackBerry-10-Bluetooth-LE-resource-index/ta-p/2326147">http://supportforums.blackberry.com/t5/Native-Development/BlackBerry-10-Bluetooth-LE-resource-index/ta-p/2326147</a></li>
</ul>
</li>
</ul>
<p>I hope you’ve enjoyed this short note and hope it has piqued your interest to find out more about Bluetooth Low Energy and how it can be integrated into your BlackBerry 10 applications.</p>
<hr align="left" size="1" width="33%" />
<div>
<p><a title="" href="/Users/akinsella/AppData/Local/Microsoft/Windows/Temporary%20Internet%20Files/Content.Outlook/X7OSEEYU/Bluetooth%20Low%20Energy%20and%20CSC%20V0_3.doc#_ftnref1">[1]</a> This should not be regarded as an endorsement by BlackBerry, explicit or implied.</p>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15066/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15066/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15066&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/05/nfc-cadence-cascades/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/87d5f773c912570622fcb0a907a5636b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jcmurray2012</media:title>
		</media:content>

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

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/nfc21-e1369229754261.jpg" medium="image">
			<media:title type="html">Figure 2 Attachment of cycle monitor</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/nfc3-e1369229851373.png" medium="image">
			<media:title type="html">Figure 3 The CscMonitor Application</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/nfc4-e1369229973665.png" medium="image">
			<media:title type="html">Figure 4 GATT showing CSC Characteristics</media:title>
		</media:content>
	</item>
		<item>
		<title>Real-time Communications (VoIP) on BlackBerry 10: WebRTC and Open Peer</title>
		<link>http://devblog.blackberry.com/2013/05/hookflash/</link>
		<comments>http://devblog.blackberry.com/2013/05/hookflash/#comments</comments>
		<pubDate>Wed, 22 May 2013 13:09:22 +0000</pubDate>
		<dc:creator>Gurtej S.</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Interviews/Thought Leadership]]></category>
		<category><![CDATA[Case Studies & Success Stories]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[multimedia]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[voice]]></category>
		<category><![CDATA[ndk]]></category>
		<category><![CDATA[native]]></category>
		<category><![CDATA[VoIP]]></category>
		<category><![CDATA[WebRTC]]></category>
		<category><![CDATA[Real-time Communications]]></category>
		<category><![CDATA[RTC]]></category>
		<category><![CDATA[Open Peer]]></category>
		<category><![CDATA[Messaging]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15059</guid>
		<description><![CDATA[I would like take this opportunity and introduce you to our good friends at Hookflash who have successfully ported all major components of both WebRTC and Open Peer libraries to BlackBerry 10. To provide a brief overview, WebRTC is an open source multimedia &#38; network stack that supports real-time audio &#38; video. The value Open [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15059&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div id="attachment_15061" class="wp-caption aligncenter" style="width: 532px"><a href="http://rimdevblog.files.wordpress.com/2013/05/rtc1.png"><img class="size-full wp-image-15061" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/05/rtc1.png?w=522&#038;h=278" width="522" height="278" /></a><p class="wp-caption-text"><a href="http://www.webrtc.org/reference/architecture" rel="nofollow">http://www.webrtc.org/reference/architecture</a></p></div>
<p>I would like take this opportunity and introduce you to our good friends at <a href="http://hookflash.com/">Hookflash</a> who have successfully ported all major components of both <a href="http://www.webrtc.org/">WebRTC</a> and <a href="http://openpeer.org/">Open Peer</a> libraries to BlackBerry 10. To provide a brief overview, WebRTC is an open source multimedia &amp; network stack that supports real-time audio &amp; video. The value Open Peer delivers to WebRTC applications is peer-to-peer (P2P) signalling on the wire, Instant Messaging, Federated Identities and multiple mobile platform support.</p>
<p><span id="more-15059"></span></p>
<p>So why is this so important?  Well, it enables developers to build rich, compelling, real-time communication applications integrating Social Identities with Voice, Video and Messaging using <a href="https://developer.blackberry.com/native/">BlackBerry 10 Native SDK</a>. Secondly, WebRTC is free to use if you decide to commercialize your application. What Hookflash has achieved on BlackBerry 10 really exemplifies the power of our BlackBerry 10 Native Platform to deliver the best communications experience.</p>
<p>I would like to further highlight Hookflash team’s experience in porting both WebRTC and Open Peer stack’s over to BlackBerry 10 platform. Check out my interview with Erik Lagerway (Co-founder) &amp; Robin Raymond (Chief Architect) from Hookflash below:</p>
<blockquote>
<h3>What is Hookflash?</h3>
<p><a href="http://hookflash.com/">Hookflash</a> is a globally distributed software development team building “<a href="http://openpeer.org/">Open Peer</a>”, new “open” video, voice and messaging specification and software for mobile platforms and web browsers.  Open Peer enables an important new evolution of communications; <i>Open</i>, for developers and customers to create with. “<i>Over-the-top</i>” on the Internet, where users control their economics and quality of service. “<i>Federated Identity” </i>so user’s connections aren’t limited by service provider’s walled gardens and operating systems. “<i>Integrated”</i>, as communications become a native function in software and applications. Hookflash founders, lead developers and Advisors accomplishments include; creators of the world’s most popular softphones, built audio technology acquired and used by Skype, built GIPS technology acquired and open sourced by Google to create WebRTC, and engaged in <a href="http://webrtc.is/">WebRTC standards development</a> in the IETF and W3C.</p>
<h3>What is Open Peer SDK and how would this empower BlackBerry 10 developers?</h3>
<p>Open Peer enables direct integration of social identities, video, voice and messaging communications for developers building native BlackBerry 10 (NDK) applications. Voice, video and messaging flow Over The Top (OTT) via the Internet.</p>
<p>These services are delivered peer-to-peer (P2P) providing extremely strong privacy, security and encryption. Open Peer enables federated identities and allows developers to leverage and integrate whatever identity model they currently have, so their users <i>remain their users!</i></p>
<h3>What features does Open Peer SDK support?</h3>
<p>The Open Peer SDKs are built according to the <a href="http://docs.openpeer.org/OpenPeerProtocolSpecification/">Open Peer specification</a>. Here are a few of the features we have built into the current SDKs&#8230;</p>
<ul>
<li>HD real-time video</li>
<li>Wideband voice and messaging</li>
<li>Peer-to peer signalling &amp; media transport (greater efficiency, reliability &amp; privacy)</li>
<li>Federated identity for cross-platform communications (not to be confused with Single Sign-On)</li>
<li>Encrypted &amp; secure communications</li>
</ul>
<h3>Would HTML5/WebWorks developers be able to leverage this in BlackBerry 10?</h3>
<p>Yes. The current SDK is for BB10 NDK developers at this time. However, we have an active “opjs” project under development that will allow interaction between a native BB10 application and an HTML5/WebRTC enabled browser thus allowing web applications to communicate directly with native BB10 applications.</p>
<h3>Share your experience in cross compiling your code for BlackBerry 10</h3>
<p>Like all platforms, there’s is a learning curve relative to what you are used to until you find yourself comfortable in a new environment, and BB10/QNX is no different. The richness to the platform experience is impressive on the BB10 and made iOS feel somewhat dated by comparison.</p>
<p>Since QNX is a POSIX compliant system, it was relatively easy to get a majority of open source code ported to BlackBerry 10. The QNX GCC-compliant mode has helped us as well.</p>
<p>There were a few wrinkles along the way. The documentation and NDK felt young compared to other more established platforms but that kind of level of documentation grows out of community support and interaction.</p>
<p>One major difference between this project and other platforms has been the phenomenal support that Blackberry has provided us as developers, especially as Hookflash is pushing the platform and technology harder than most with real time communications in audio and video. This was refreshing, We&#8217;ve never seen such incredible support for their developer community.</p>
<h3>Have you ported over the entire webRTC engine to BlackBerry?</h3>
<p>Yes, we have ported all major components of webRTC library to BlackBerry. We will be extending what is offered by WebRTC’s library as well.</p>
<h3>How long did it take to port the WebRTC and Open Peer code to Blackberry 10?</h3>
<p>When you consider the size of the code-base that had to be moved, and the fact we had not worked on QNX /  Blackberry 10 before, it went relatively quickly. The entire move took us approximately 90 days.</p>
<h3>Are you going to commit this work back upstream to WebRTC project?</h3>
<p>Yes, our code will migrate back to the WebRTC project. Hookflash is extremely busy on a number of fronts making Open Peer widely available with limited resources.  We appreciate help from other developers. Pushing the WebRTC codebase back upstream will be of tremendous value to the Blackberry developer community. Requests to join <a href="https://github.com/openpeer/opbb10">our Open Peer BB10 github project</a> are always appreciated.</p>
<h3>What APIs did you use to build your application on BlackBerry 10?</h3>
<p><a href="https://developer.blackberry.com/native/reference/bb10/audio_libref/topic/summary.html">NDK’s audio</a>, camera and rendering subsystems and Boost are the bulk of the components. We use <a href="https://developer.blackberry.com/cascades/">Cascades/QT</a> for the sample application.</p>
<h3>Do you have VP8 Video working on BlackBerry 10?</h3>
<p>Yes. We had some difficulty getting the assembly to compile properly but with Blackberry’s support we were successful in porting an optimized version of VP8 to the BB10 platform. Keep in mind we have tested this mostly on Z devices at this time with limited testing done on the Q devices.</p>
<h3>How was your experience relative to working with other platforms and BlackBerry 10?</h3>
<p>As mentioned earlier, Blackberry feels a bit new in the documentation area and there are still a few bugs to take care of in the platform. Having said that, the platform is forward thinking, flexible and impressively powerful. Blackberry’s support has been beyond anything we could have hoped and even expected.</p>
<p>As more developers are drawn to the platform, documentation and community involvement will improve the access to information on the platform and increase the samples available to draw upon.</p>
<p>For such a new entrant into the market, our team is thoroughly impressed.</p>
<h3>How was your experience working with the RIM team?</h3>
<p>Bar-none, the best support we’ve ever had from a major platform vendor directly into the project. Kudos to RIM / Blackberry for providing such a spectacular community outreach.</p>
<h3>When is Open Peer SDK going to be available for BlackBerry 10?</h3>
<p>Our SDK is ready now in beta, developers can get it on <a href="https://github.com/openpeer/opbb10">Github</a> today. We continue to polish this and our other toolkits, we expect commercialization to begin later this year. Follow us on <a href="https://github.com/openpeer/">github</a> and <a href="http://twitter.com/hookflash">twitter</a> to get the latest news on Hookflash and Open Peer development.</p></blockquote>
<p>I hope you found this interview informative and useful.  If you have any questions or feedback please leave a comment below or reach out to me directly on Twitter <a href="https://twitter.com/_GurtejSandhu">_GurtejSandhu</a>. Kudos to Hookflash team for making this all happen.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15059/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15059/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15059&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/05/hookflash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/41e8b1a2189dfce0a51887beab21795d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gurtejsan1</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/rtc1.png" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>She Said: Leveraging the Power of Foursquare in BlackBerry 10</title>
		<link>http://devblog.blackberry.com/2013/05/she-said-leveraging-the-power-of-foursquare-in-blackberry-10/</link>
		<comments>http://devblog.blackberry.com/2013/05/she-said-leveraging-the-power-of-foursquare-in-blackberry-10/#comments</comments>
		<pubDate>Tue, 07 May 2013 17:40:23 +0000</pubDate>
		<dc:creator>Erin Rahnenfuehrer</dc:creator>
				<category><![CDATA[BlackBerry Jam]]></category>
		<category><![CDATA[BlackBerry Live]]></category>
		<category><![CDATA[How-to]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[foursquare]]></category>
		<category><![CDATA[sample]]></category>
		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=14924</guid>
		<description><![CDATA[We&#8217;ve spoken before about how to integrate your Cascades and WebWorks apps with Facebook, Twitter, and LinkedIn on BlackBerry 10. We&#8217;ve shared samples with you that show how easy it is to invoke these social networking apps in various ways. But there was a big square-shaped hole in our existing sample code. We were missing out on [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14924&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>We&#8217;ve spoken before about how to integrate your <a href="http://devblog.blackberry.com/2013/03/cascades-socialinvocation/" target="_blank">Cascades</a> and <a href="http://devblog.blackberry.com/2013/02/twitter-and-facebook-cards/" target="_blank">WebWorks</a> apps with Facebook, Twitter, and LinkedIn on BlackBerry 10. We&#8217;ve shared samples with you that show how easy it is to invoke these social networking apps in various ways. But there was a big square-shaped hole in our existing sample code. We were missing out on <a href="https://developer.foursquare.com" target="_blank">Foursquare’s powerful API’s</a> and location database.</p>
<p>So we&#8217;ve updated the <a href="https://github.com/blackberry/Cascades-Samples/tree/master/socialinvocation" target="_new">socialinvocation</a> sample to include examples of how to invoke Foursquare with all of the currently supported invocation parameters.</p>
<p><a href="http://rimdevblog.files.wordpress.com/2013/05/fs1.png"><img class="size-full wp-image-14926 aligncenter" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/05/fs1-e1367863197254.png?w=275&#038;h=458" width="275" height="458" /></a></p>
<p>As you can see, Foursquare allows BlackBerry 10 developers to leverage their app in a number of different ways, both through Cards and the Invocation Framework.</p>
<p>Big thanks to <a href="http://twitter.com/kfow35">Kyle</a> from Foursquare who has also documented these features in his sample app:  <a href="https://github.com/foursquare/foursquare-bb10-sdk">https://github.com/foursquare/foursquare-bb10-sdk</a></p>
<p>If you want to learn more about Social Invocation and why you should be including it in your app, come to one of our sessions next week at BlackBerry Live!  We’ll be talking about the benefits of integrating with Foursquare and the rest of the Social apps in two sessions:</p>
<p><a href="https://bblive.blackberryconferences.net/2013/connect/sessionDetail.ww?SESSION_ID=1584" target="_blank">JAM37 </a>- Building context-aware applications by leveraging the power of Foursquare APIs, Thursday, May 16</p>
<p><a href="https://bblive.blackberryconferences.net/2013/connect/sessionDetail.ww?SESSION_ID=2718" target="_blank">JAM52 </a>- Get Social: Connecting your app to Facebook, Twitter, Foursquare, and more! Wednesday, May 15</p>
<p>Kyle from Foursquare will be there, and we will show a real world example of how <a href="https://untappd.com/home" target="_blank">Untappd</a> found success by integrating with Foursquare.  Sample apps, best practices, and code snippets will also be presented that will show developers how to quickly get started in both the <a href="https://developer.blackberry.com/html5/" target="_blank">BlackBerry WebWorks SDK</a> and the <a href="https://developer.blackberry.com/native" target="_blank">BlackBerry Native SDK</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/14924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/14924/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14924&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/05/she-said-leveraging-the-power-of-foursquare-in-blackberry-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0432900fe27aa1429d5e6809cd149a3c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erahnen</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/fs1-e1367863197254.png" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry Jam Americas 2013 – Stereoscopic 3D and Much More</title>
		<link>http://devblog.blackberry.com/2013/05/stereoscopic-3d-and-much-more/</link>
		<comments>http://devblog.blackberry.com/2013/05/stereoscopic-3d-and-much-more/#comments</comments>
		<pubDate>Mon, 06 May 2013 17:17:00 +0000</pubDate>
		<dc:creator>Alex Kinsella</dc:creator>
				<category><![CDATA[BlackBerry Jam]]></category>
		<category><![CDATA[BlackBerry Live]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[native]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[stereoscopic 3D]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=14913</guid>
		<description><![CDATA[Guest post from Roberto Speranza &#8211; Ed. Next week is BlackBerry Jam Americas 2013 and as a member of the Developer Relations team, I’ll be stationed at various locations over the three days helping out developers when I can. Better yet, i’m also hosting a lab that I hope you will find a lot of fun [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14913&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em>Guest post from <a href="http://www.twitter.com/RSSessantotto" target="_blank">Roberto Speranza</a> &#8211; Ed.</em></p>
<p>Next week is <a href="http://www.blackberryjamconference.com" target="_blank">BlackBerry Jam Americas 2013</a> and as a member of the Developer Relations team, I’ll be stationed at various locations over the three days helping out developers when I can. Better yet, i’m also hosting a lab that I hope you will find a lot of fun and very informative on stereoscopic 3D and HDMI output for your apps. I’m also presenting a session on getting the most out of <a href="http://developer.blackberry.com/native" target="_blank">Momentics </a>to help you build and package your apps in an efficient manner and streamline your development process. This is something all developers should care about since saving time during development often means you can take on more projects and earn more in the process.</p>
<p><span id="more-14913"></span></p>
<p><strong><a href="https://bblive.blackberryconferences.net/2013/connect/sessionDetail.ww?SESSION_ID=2730">JAM54 &#8211; Lab: Adding a new Dimension to your BlackBerry Apps &#8211; Stereoscopic 3D ( and other advanced applications for output to the HDMI display)</a></strong></p>
<p>My first experience with stereoscopic 3D, like most people, was from playing with a ViewMaster as a child. In the years since, I have experimented with stereoscopic photography, utilizing stereoscopic 3D graphics in 3D modeling and rendering software I worked on in university and during the first few years of my career, and now I am reviving some of that early work in my spare time and applying that knowledge to develop stereoscopic software for the BlackBerry 10 platform.</p>
<p>Stereoscopic 3D represents another way your app can engage with its users and set it apart from the competition. Imagine users playing your game on the big screen with the game play literally in their face or taking a look at NASA rover stereoscopic photos with their smartphone and feeling like they are looking out the window at the Red Planet. That’s the kind of emotion and excitement that this technology brings to those who truly appreciate it.</p>
<p>The techniques we will review in the lab produce stereoscopic 3D output via the HDMI display in a manner that should be compatible with the majority of 3D TVs and monitors in the market today.  The diagram below provides an overview of what type of output is generated and I will have sample code on hand so that attendees can dive right in and integrate it into their applications.</p>
<p><a href="http://rimdevblog.files.wordpress.com/2013/05/3d1.jpg"><img class="aligncenter size-full wp-image-14914" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/05/3d1-e1367860270327.jpg?w=600&#038;h=445" width="600" height="445" /></a></p>
<p>Is that all we will cover? Absolutely not. The stereoscopic techniques rely on HDMI output. HDMI output can be useful in a number of other types of apps as well. We will review some other use cases and show how the existing sample code can be adapted for those purposes. If you want to incorporate stereoscopic 3D output into your app or if you just want to know how to output content to the HDMI display in general, join in on the fun. After the lab is over, the 3D TV will be moved into the Jam Space for attendees so you will have the rest of the event to access the TV and test the changes you make to your apps and demo your efforts to others.  I’m looking forward to seeing what our developers produce with this new tool in their arsenal.</p>
<p><strong><a href="https://bblive.blackberryconferences.net/2013/connect/sessionDetail.ww?SESSION_ID=1822"> JAM39 &#8211; Build and Packaging for native apps </a></strong></p>
<p>As your app portfolio grows, you are probably trying to come up with ways to reuse code you wrote in a different application or organize it better, turnaround changes faster. Maybe the app’s download time is a little slow and you want to improve on it but don’t know how? If any of these questions apply to you, you want to attend this session. We will run through some tips and tricks we use for internal apps and some little known options available in the Momentics IDE to help you develop a build system to be more efficient during the development process.  We will show you some tips on how to build a Qt or Cascades shared library. If you develop on multiple platforms, we will share some tips from our porting guides on how best to create a shared pool of code that you can build on multiple platforms. If you want to use a shared library developed by someone else, we’ll show you how to integrate that library with the IDE for seamless integration with your apps.</p>
<p>These sessions are just the tip of the iceberg of the session catalog at this year’s conference. <a href="http://www.blackberryjamconference.com/" target="_blank">Join us in Orlando</a> and learn a lot about what you can do now and what’s coming in future versions of BlackBerry 10. I am looking forward to seeing some familiar faces and to meeting more developers again this year.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/14913/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/14913/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14913&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/05/stereoscopic-3d-and-much-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d0e94a7e96e80d5911732d43f31a39c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alex K.</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/3d1-e1367860270327.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>10.1 Gold &#8211; With great SDK powers, comes a bit of responsibility!</title>
		<link>http://devblog.blackberry.com/2013/05/10-1-gold-with-great-sdk-powers-comes-a-bit-of-responsibility/</link>
		<comments>http://devblog.blackberry.com/2013/05/10-1-gold-with-great-sdk-powers-comes-a-bit-of-responsibility/#comments</comments>
		<pubDate>Fri, 03 May 2013 15:35:41 +0000</pubDate>
		<dc:creator>Shadab Rashid</dc:creator>
				<category><![CDATA[BlackBerry World]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[.BAR]]></category>
		<category><![CDATA[Dev Alpha]]></category>
		<category><![CDATA[Q10]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[variant]]></category>
		<category><![CDATA[Z10]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=14875</guid>
		<description><![CDATA[What responsibility? To make use of all the new features and make your app even greater! And of course, you want to ensure you are supporting as many in-market devices as possible. As you already know, the 10.1 Gold SDK and OS is out, along with the Q10 devices! However, since there are still some [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14875&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>What responsibility? To make use of all the new features and make your app even greater! And of course, you want to ensure you are supporting as many in-market devices as possible. As you already know, the 10.1 <a href="https://developer.blackberry.com/cascades/download/">Gold SDK</a> and <a href="https://developer.blackberry.com/devzone/blackberry10devalpha/devalpha_update.html" target="_blank">OS</a> is out, along with the Q10 devices! However, since there are still some Z10 devices on the market right now running the 10.0.X.X OS version, some questions and confusions might be present. Which SDK version to compile against? Which are the target devices? How many BAR files should I keep? How do I manage my code base? We will try to tackle some of these common questions here.</p>
<h3><strong>Coding and deploying for the devices with 10.1 OS</strong></h3>
<p>Even if your older 10.0 Z10 version of the app runs “fine” on the newer 10.1 devices (Q10 and upcoming Z10 update) running the 10.1 OS version, you should try to use the latest 10.1 SDK. Why? Starting with the 10.1 SDK, you get access to some new features which will enhance your app’s experience on the Q10 devices significantly. This particular blog post <a href="http://devblog.blackberry.com/2013/03/blackberry-z10-apps-to-blackberry-q10/?" target="_blank">here</a> is a great source of information when you are converting your Z10 app for the upcoming Q10 devices. In terms of the UI elements that you can leverage as a developer, <a href="https://developer.blackberry.com/cascades/download/releasenotes/#new" target="_blank">among others</a>, you now have access to certain components like the <a href="https://developer.blackberry.com/cascades/reference/bb__cascades__actionbarautohidebehavior.html" target="_blank">auto hiding ActionBar</a>, <a href="https://developer.blackberry.com/cascades/reference/bb__cascades__titlebar.html" target="_blank">customizable/freeform</a> and <a href="https://developer.blackberry.com/cascades/reference/bb__cascades__titlebarscrollbehavior.html" target="_blank">sticky</a> TitleBar – these elements will allow you to maximize your screen real estate (for the smaller screen Q10 devices) and provide more room for actual content for the users.</p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/sdk-1.jpg?w=500" /></p>
<p><span id="more-14875"></span></p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/sdk-2.jpg?w=500" /></p>
<p>Key <a href="https://developer.blackberry.com/cascades/documentation/dev/shortcuts/index.html" target="_blank">shortcuts</a> and <a href="https://developer.blackberry.com/cascades/documentation/dev/shortcuts/keylistener.html" target="_blank">listeners</a> are some of the other slick new features; they make common tasks much easier for your users. The Q10 devices are definitely designed for the power users who love the physical keyboard and who value productivity greatly. You want to show them as much useful content as possible (even in the smaller screen) and require as few user input as possible to get to the primary features and content.</p>
<h3><strong>What about my current applications for the Z10 devices?</strong></h3>
<p>If there are any updates or bug fixes necessary for your currently public Z10 versions of the app (made using 10.0 SDK), you definitely don’t want to keep your users waiting. Until the in-market Z10 devices receive the 10.1 updates, you should continue posting updates and bug fixes as necessary. Going forward, the new 10.1 features that you will be using for Q10 devices (which you definitely should be) and upcoming Z10 updates; if they are mainly on the QML asset files, you can just continue to maintain just one BAR file. All the 10.1 specific QML code; those asset files can be placed in the folder called 720&#215;720. For devices running lower 10.1 OS, that folder will just be ignored and only the QML files in the root folder would be considered. You can check out the github sample apps here to look at the code for projects like these. If you are using any new 10.1 C/C++ API then your application would need the latest 10.1.X.X SDK to compile against to bypass all the compile errors (the corresponding BAR file would also be a different one, since it would need the minimum 10.1 platform to run against).</p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/sdk-3.jpg?w=250" /></p>
<p style="text-align:center;"><i>Project Explorer View</i></p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/sdk-4.jpg?w=500" /></p>
<p style="text-align:center;"><i>The QML code under the <strong>720&#215;720</strong> folder. It is using some <strong>new</strong> 10.1 specific features (e.g. customizable TitleBar).<br />
If the same BAR file is run on the 10.0 devices, this code won’t be executed (the folder will be ignored).<br />
Note: This is a modified sample code shown here just for demonstration</i></p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/sdk-5.jpg?w=450" /></p>
<p style="text-align:center;"><i>The QML file under the root assets folder; this will run by default. Note that there is no 10.1 specific code here </i></p>
<p>Note that you can install all the different SDK versions through the IDE update options and install the different OS versions. Re-iterating what is mentioned on the <a href="https://developer.blackberry.com/cascades/download/releasenotes/#new" target="_blank">release notes</a>:</p>
<ul>
<li><i> If you are developing using a BlackBerry 10 Dev Alpha device, you need to download the 10.0.10.263 target from the update site.</i></li>
<li><i> If you are developing using the BlackBerry Z10 smartphone, you need to download a target from the update site that matches the device version that&#8217;s provided by your wireless service provider. You can verify the device version by opening the Settings app, tapping About, selecting OS in the Category drop-down list, and checking the version that&#8217;s listed in the OS Version field.</i></li>
<li><i>For more information about developing apps that work on different versions of the BlackBerry 10 Native SDK, see <a href="http://supportforums.blackberry.com/t5/Cascades-Development-Knowledge/Appropriate-version-of-the-BlackBerry-Native-SDK/ta-p/2284129" target="_blank">Appropriate version of the BlackBerry Native SDK</a> in the BlackBerry Support Community Forums.</i></li>
</ul>
<h3><strong>How do I specify restrictions to BlackBerry World and BAR files?</strong></h3>
<p>When you are submitting the signed BAR files through your vendor portal account, you can choose the minimum OS version and the devices accordingly. <strong>These settings control whether or not your app will show up on the users’ BlackBerry World app (depending on the devices and the OS version they are currently running on)</strong>.</p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/sdk-6.jpg?w=500" /></p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/sdk-7.jpg?w=500" /></p>
<p>Note that there is also a specific value that can be set through the bar-descriptor.xml file, which dictates the minimum required platform OS version required to install and run the app. This in turn gets reflected on the final signed BAR produced (MANIFEST.MF file). Do not modify this default value set unless you are absolutely certain which device OS versions you want to prevent the app from being installed (even if they are discovered through the BlackBerry World app). This value is checked by the OS itself when the app is installed and run using the BlackBerry World app. <strong>However, this is not something that the BlackBerry World looks at (currently) to filter what apps the user can see to download. This means, if you are playing around with this value, there could be instances where the user can see or buy the app through the BlackBerry World app but not be able to install it!</strong> The vendor portal filtering only gives you granularity between 10.0.0, 10.0.10 and 10.1.0 for now but if you are modifying the bar-descriptor.xml value for this, you can end up being really specific (10.0.9.X, 10.0.10.X, 10.1.X.X) which could prevent your users from installing the app (even if they are being able to see it or buy it).</p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/sdk-8.jpg?w=500" /></p>
<p><i>The bar-descriptor.xml editor from the QNX Momentics IDE</i></p>
<p>Viewing the resulting signed BAR file through the IDE (MANIFST.MF file)</p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/sdk-9.jpg?w=500" /></p>
<p><i>Viewing the resulting signed BAR file through the IDE (MANIFST.MF file) </i></p>
<h3><strong>Managing code base</strong></h3>
<p>Since there are newer API/libraries with 10.1 SDK, you might already be thinking about how to manage your code base better. Well, there are a few different options to choose from:</p>
<ol>
<li>If you are already using a version control system like <a href="https://github.com/" target="_blank">Github</a>, just use the <a href="http://learn.github.com/p/branching.html" target="_blank">branching and merging technique</a> for your code base
<ul>
<li>Create a new branch from your latest 10.0.X.X code version. Add all the new 10.1 features here and continue to use this one for devices running 10.1 (Q10 devices for now and soon to be Z10 as well)</li>
</ul>
</li>
<li>If your 10.1 changes (e.g. using some of the newer UI elements and features) are mainly on the QML assets, you can make use of the <a href="https://developer.blackberry.com/cascades/documentation/ui/resolution/using_static_asset.html" target="_blank">static asset selector</a> which is new with 10.1. Basically, your IDE will be pointing to the same project (code base) but based on which device you are targetting your app, it will select the respective .qml files
<ul>
<li>As mentioned before, the Z10 devices running lower than 10.1 OS, will just ignore the folders such as the <strong>720&#215;720</strong></li>
</ul>
</li>
<li>If you are using 10.1 specific API in your C++ code (only), you can use the NDK versioning macros to detect the OS versions. This forum post <a href="http://supportforums.blackberry.com/t5/Native-Development/Using-the-new-NDK-versioning-macros-to-detect-API-versions/td-p/2286807" target="_blank">here</a> talks about this in details</li>
</ol>
<h3><strong>To Sum Up</strong></h3>
<ul>
<li>For devices running 10.1 OS, definitely use 10.1 SDK to compile and deploy your app; make use of all the useful features which will make the Q10 experience of your app significantly better
<ul>
<li>As soon as 10.1 OS is picked up by the Z10 devices, these app releases will be shown through BlackBerry World as well (provided you set the vendor portal filtering accordingly)</li>
<li>There is more than one way to manage your code base; you have to decide which one is best for you</li>
</ul>
</li>
<li>For posting updates and bug fixes to the 10.0 Z10 versions of your app, continue to use the respective 10.0 SDK to compile and deploy the app</li>
<li>Sanity check: Don’t forget to test and try out the application on the OS versions that your users are expected to run the app</li>
</ul>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/sdk-10.jpg?w=500" /></p>
<p>We hope at least some of this was helpful to you. If we have missed any particular cases, do bring them to our attention and we will try to advise accordingly. Hope to see all of your apps for the Q10 devices soon!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/14875/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/14875/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14875&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/05/10-1-gold-with-great-sdk-powers-comes-a-bit-of-responsibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/80e97ad98707931e59eb2b03535cc8b2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shrashid</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/sdk-1.jpg?w=500" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/sdk-2.jpg?w=500" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/sdk-3.jpg?w=250" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/sdk-4.jpg?w=500" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/sdk-5.jpg?w=450" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/sdk-6.jpg?w=500" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/sdk-7.jpg?w=500" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/sdk-8.jpg?w=500" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/sdk-9.jpg?w=500" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/sdk-10.jpg?w=500" medium="image" />
	</item>
		<item>
		<title>BlackBerry Java to BlackBerry 10 Cascades Porting Series – Part 8: Storage</title>
		<link>http://devblog.blackberry.com/2013/04/blackberry-java-to-blackberry-10-cascades-porting-series-part-8-storage/</link>
		<comments>http://devblog.blackberry.com/2013/04/blackberry-java-to-blackberry-10-cascades-porting-series-part-8-storage/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 15:54:38 +0000</pubDate>
		<dc:creator>Alex Kinsella</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[porting]]></category>
		<category><![CDATA[Storage]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=14827</guid>
		<description><![CDATA[Part 8 of our Porting Series has us focus on Storage. The Cascades Framework uses a modular approach to store, access, and display data in your apps. There is a good chance you will need your app to interact with external data – the raw data for your app. The format of the external data [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14827&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Part 8 of our Porting Series has us focus on Storage.</p>
<p>The Cascades Framework uses a modular approach to store, access, and display data in your apps.</p>
<p>There is a good chance you will need your app to interact with external data – the raw data for your app. The format of the external data can vary depending upon your needs and Cascades provides classes that help you manage three common data formats: XML, JSON, and SQL.</p>
<p>First, let’s look at a table comparing BBOS and BlackBerry 10 Data Storage:</p>
<p><span id="more-14827"></span></p>
<table>
<tbody>
<tr>
<td><strong>Storage Type</strong></td>
<td><strong>BlackBerry OS</strong></td>
<td><strong>BlackBerry 10</strong></td>
</tr>
<tr>
<td><strong>Application Storage</strong><br />
(internal to the BlackBerry deice)</td>
<td>Contains the operating system, Java® Virtual Memory (JVM), and an internal file system. Application storage is also called flash memory and onboard memory. Application storage is the only place on a BlackBerry device from which applications can be run. All BlackBerry devices have application storage.</td>
<td>Three file systems exist, BASE, USER and RADIO. Please note that BASE and RADIO are both “read-only”.<br />
USER is read/write and contains the applications and BlackBerry 10 platform volatile data.</td>
</tr>
<tr>
<td><strong>External Media Card Storage</strong><br />
Optional and removable microSD card that Users can insert to extend the storage on their device.</td>
<td>A File Allocation Table (FAT) file system is mounted on the media card. microSD cards are supported on all devices running BlackBerry® Device Software 4.2 or later.</td>
<td>A File Allocation Table (FAT) file system is mounted on the media card.</td>
</tr>
</tbody>
</table>
<h3><strong>USER File system</strong></h3>
<p>BlackBerry 10 introduces a file system (recall on BBOS there was no file system). So, what to know about the file system? Firstly, the <strong>working directory</strong> is where your app is started – it is also called <strong>current directory</strong> and <strong>the sandbox ($sandbox/app)</strong>. Access to files and folders in the working directory is controlled through Unix-style groups and permissions. <strong>Key point</strong>: never hardcode absolute file paths – all should be relative to your sandbox.</p>
<p>Please review the following file system diagram:</p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/04/bb10java.png" /></p>
<p>And visit this page :</p>
<p><a href="https://developer.blackberry.com/cascades/documentation/device_platform/filesystem/index.html" target="_new">https://developer.blackberry.com/cascades/documentation/device_platform/filesystem/index.html</a></p>
<p>For more information on the file system.</p>
<p>Secondly, let’s look at working with XML, JSON, and SQL. The following provides some code snippets for all three along with links to more information.</p>
<h3><strong>XML</strong></h3>
<p>The following is a code snippet on how to load XML using a GroupDataModel</p>
<pre>// Create the data model, specifying sorting keys of "firstName" and "lastName" 
GroupDataModel *model = new GroupDataModel(QStringList() &lt;&lt; "firstName"
                                           &lt;&lt; "lastName"); 

// Create an XmlDataAccess object and load the .xml file. The QDir::currentPath() 
// function returns the current working directory for the app. 
XmlDataAccess xda; 
QVariant list = xda.load(QDir::currentPath() + 
                         "/app/native/assets/employees.xml", 
                         "/employees/employee");</pre>
<p><i>For more on XML data, please click “Working with XML”</i></p>
<p><a href="http://developer.blackberry.com/cascades/documentation/device_platform/data_access/working_with_xml.html" target="_new">http://developer.blackberry.com/cascades/documentation/device_platform/data_access/working_with_xml.html</a></p>
<h3><strong>JSON</strong></h3>
<p>The following is a code snippet on how to create a JSON Data Access Object and load the JSON file</p>
<pre>// Create a JsonDataAccess object and load the .json file. The  
// QDir::currentPath() function returns the current working  
// directory for the app. 
JsonDataAccess jda; 
QVariant list = jda.load(QDir::currentPath() + 
                         "/app/native/assets/employees.json");</pre>
<p>For more on JSON, please click <i>“Working with JSON data”</i></p>
<p><a href="http://developer.blackberry.com/cascades/documentation/device_platform/data_access/working_with_json.html" target="_new">http://developer.blackberry.com/cascades/documentation/device_platform/data_access/working_with_json.html</a></p>
<h3><strong>SQL</strong></h3>
<p>The following is a code snippet on how to create SQL</p>
<pre> // Create an SqlDataAccess object 
    SqlDataAccess sda(home.absoluteFilePath("mySQLFile.db")); 

    // Create a table called Employee in the database file 
    sda.execute("CREATE TABLE Employee( firstName VARCHAR(50), 
                 lastName VARCHAR(50), salary INT);"); 

    // Insert employee records into the table 
    sda.execute("INSERT INTO Employee (firstName, lastName, salary) 
                 VALUES ("Mike", "Smith", 42000);"); 
    sda.execute("INSERT INTO Employee (firstName, lastName, salary) 
                 VALUES ("Joe", "Brown", 55000);");</pre>
<p>For more on SQL data, please click <i>“Working with SQL”</i></p>
<p><a href="http://developer.blackberry.com/cascades/documentation/device_platform/data_access/working_with_sql.html" target="http://developer.blackberry.com/cascades/documentation/device_platform/data_access/working_with_sql.html">http://developer.blackberry.com/cascades/documentation/device_platform/data_access/working_with_sql.html</a></p>
<p><strong>In conclusion</strong>, the data files that you work with in your apps are stored in the file system on the device. Different file system locations have different permissions; in some areas, you can create new files to store your app data, while in others, you can only load data from existing files. If you want to access your data files using the method that works best for you, you need to understand where your data files are located in the file system. Please follow this link “<a href="https://developer.blackberry.com/cascades/documentation/device_platform/filesystem/index.html" target="_new">File system access for app</a>” for more information.</p>
<p>Data files that you package with your app (when you compile the app) are located in the assets folder in the file system. Your app has read-only access to this folder, which means that you can load data from files in this location, but you can&#8217;t save new data in these files. When you create new data files dynamically while your app is running, they are stored in the data folder. Your app has full read-write access to this folder, so you can load and save data using files in this location.</p>
<p>Now on to Part 9!!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/14827/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/14827/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14827&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/04/blackberry-java-to-blackberry-10-cascades-porting-series-part-8-storage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d0e94a7e96e80d5911732d43f31a39c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alex K.</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/04/bb10java.png" medium="image" />
	</item>
		<item>
		<title>BlackBerry Jam Unplugged: Cascades</title>
		<link>http://devblog.blackberry.com/2013/04/blackberry-jam-unplugged-cascades/</link>
		<comments>http://devblog.blackberry.com/2013/04/blackberry-jam-unplugged-cascades/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 14:59:56 +0000</pubDate>
		<dc:creator>Tim N.</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Interviews/Thought Leadership]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Jam]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[Unplugged]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=14763</guid>
		<description><![CDATA[Continuing our BlackBerry Jam Unplugged series, we’ve now posted the latest episode which gives a little more information around the future of the Cascades UI Framework. We’ll be posting videos as part of this series leading up to BlackBerry Jam Americas in Orlando in order to give some more background surrounding the topics that we’ll [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14763&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Continuing our <a href="http://devblog.blackberry.com/?s=jam+unplugged&amp;search=" target="_new">BlackBerry Jam Unplugged series</a>, we’ve now posted the latest episode which gives a little more information around the future of the Cascades UI Framework.</p>
<p>We’ll be posting videos as part of this series leading up to <a href="http://www.blackberryjamconference.com/americas" target="_new">BlackBerry Jam Americas in Orlando</a> in order to give some more background surrounding the topics that we’ll be discussing in detail during the conference.</p>
<p>This particular video will give you some information about the upcoming roadmap items that we’re looking at for the Cascades UI Framework. In this video we’re joined by Markus Landin, all the way from Malmo Sweden, to talk to us about Cascades and the evolution of the framework on BlackBerry 10!</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/GnCYWDHJWbM?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>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/14763/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/14763/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14763&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/04/blackberry-jam-unplugged-cascades/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3939390650b170ba28e9bf3c53d397ad?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timneil1</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry Jam Starter Session – Event Review</title>
		<link>http://devblog.blackberry.com/2013/04/blackberry-jam-event-review/</link>
		<comments>http://devblog.blackberry.com/2013/04/blackberry-jam-event-review/#comments</comments>
		<pubDate>Fri, 12 Apr 2013 10:50:33 +0000</pubDate>
		<dc:creator>mannyelawar</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Introduction Event]]></category>
		<category><![CDATA[Starter]]></category>
		<category><![CDATA[webworks]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=14528</guid>
		<description><![CDATA[Last week we traveled out West to Vancouver and Saskatoon and teamed up with WaveFront to host our first ever BlackBerry Jam Starter Sessions. The aim of these Starter Sessions is to introduce the BlackBerry 10 platform to eager developers in the area, and get their hands dirty by offering hands-on labs and walkthroughs that [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14528&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/04/wavefrontbb.jpg?w=500" /></p>
<p>Last week we traveled out West to Vancouver and Saskatoon and teamed up with WaveFront to host our first ever BlackBerry Jam Starter Sessions. The aim of these Starter Sessions is to introduce the BlackBerry 10 platform to eager developers in the area, and get their hands dirty by offering hands-on labs and walkthroughs that demonstrate the ease and power of developing using WebWorks and Cascades…and to have fun while doing it!</p>
<p>The mornings begin with an overview of the BlackBerry 10 Development platform. How is BlackBerry 10 different from previous BlackBerry operating systems? What tools are available to develop on the platform? Why should you care about writing apps for BlackBerry 10? How do you get started? All of these questions and more are answered within the first 30 minutes of the day!</p>
<p>After the overview, we get into the fun stuff. The first half is all WebWorks. What support does BlackBerry offer for HTML5 development? What can you do with HTML5? What is included in the WebWorks toolkit? How do I access native APIs? By the time this presentation is over, everyone is ready to start writing…and that’s what we do! The following two hours are dedicated towards getting you acquainted with WebWorks and writing your first application for BlackBerry 10. How does it look? You’ll find out using our Ripple Emulator!</p>
<p>After an awesome lunch break (seriously, we had pad thai!), and an opportunity to network, we get back to it with Cascades and the C/C++ native SDK. You’re introduced to the Cascades UI framework, the various controls available to you, the abundance of APIs you can leverage, and more. We discuss how events work in Cascades, built-in behaviors of the UI, and some of the key components you’ll come to love.</p>
<p>Once you’re done learning, it’s time to start doing! We get your environments setup and get to building, step-by-step, your first beautiful Cascades application, and run it through the BlackBerry 10 simulator so you can interact with it.</p>
<p>The turnouts were great, and so were the people. I’m still receiving awesome feedback from developers that learned a ton…and who doesn’t want to be part of an end-of-day rock-paper-scissors tournament for great prizes?!</p>
<p>Sound like something you’re interested in? Well the Starter Sessions don’t stop in Saskatoon! We’re heading out to Montreal and Halifax April 16th and 18th to do it all over again. If you’d like to participate, hit the link below for details on location, registration, and agenda; we’d love to have you.</p>
<h3><strong>Starter Session Details:</strong></h3>
<p><a href="http://www.wavefrontac.com/wavefront-events/vancouver-blackberry-jam-starter-session/" target="_new">http://www.wavefrontac.com/wavefront-events/vancouver-blackberry-jam-starter-session/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/14528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/14528/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14528&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/04/blackberry-jam-event-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d316a858e6ba89a6c1ce0e03c2b62d8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mannyelawar</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/04/wavefrontbb.jpg?w=500" medium="image" />
	</item>
		<item>
		<title>BlackBerry Jam Starter Session – Montreal and Halifax</title>
		<link>http://devblog.blackberry.com/2013/04/blackberry-jam-starter-session/</link>
		<comments>http://devblog.blackberry.com/2013/04/blackberry-jam-starter-session/#comments</comments>
		<pubDate>Mon, 08 Apr 2013 18:09:43 +0000</pubDate>
		<dc:creator>Tom Anderson</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Introduction]]></category>
		<category><![CDATA[Starter WebWorks]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=14548</guid>
		<description><![CDATA[Ever since the launch of BlackBerry 10 on January 30th, momentum for the BlackBerry 10 platform has been explosive – BlackBerry World currently has over 100,000 apps and games and is growing every single day. Now is the time to port your existing apps and build new ones for the rapidly growing Built for BlackBerry [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14548&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/04/popop.jpg?w=500" /></p>
<p>Ever since the launch of BlackBerry 10 on January 30th, momentum for the BlackBerry 10 platform has been explosive – BlackBerry World currently has over 100,000 apps and games and is growing every single day. Now is the time to port your existing apps and build new ones for the rapidly growing Built for BlackBerry platform.</p>
<p>Wavefront and BlackBerry are teaming up to present hands-on development workshops to support your app building and get you prepared to submit to BlackBerry World.</p>
<p>The <strong>BlackBerry Jam Starter Session</strong> will take you through the basic principles of building BlackBerry apps, with an overview of what to expect through the process. After the session, you will have the opportunity to start building your own BlackBerry apps with support from on-site BlackBerry Evangelists.</p>
<h3><strong>Who should attend?</strong></h3>
<ul>
<li>Developers with an HTML5, Cascades, Air, or Android app, who are ready to port to BlackBerry 10</li>
<li>Experienced developers wanting to learn more about the BlackBerry opportunity</li>
</ul>
<h3><strong>Why develop apps for BlackBerry?</strong></h3>
<ul>
<li>Increase your reach to a new audience of early adopters looking for great quality apps</li>
<li>Showcase your apps that may be buried or lost in other saturated stores</li>
<li>BlackBerry developers are well supported and rewarded &#8211; <a href="http:/developer.blackberry.com" target="_new">check it out</a></li>
</ul>
<h3><strong>What to bring &amp; prepare: </strong></h3>
<ul>
<li>Laptop running Windows 8, Windows 7, Windows Vista, or Mac</li>
<li>Download and install the free current versions of <a href="http://developer.blackberry.com/html5/download" target="_new">WebWorks</a> and <a href="http://developer.blackberry.com/cascades/download/" target="_new">Cascades</a> developer tools ahead of time</li>
</ul>
<h3><strong>Agenda:</strong></h3>
<p>08:30AM – 09:00AM – Registration and Breakfast</p>
<p>09:00AM – 9:30AM – Presentation Overview</p>
<p>09:30AM – 10:30AM – Intro to HTML5</p>
<p>10:30AM – 10:45AM – Coffee Break</p>
<p>10:45AM – 12:30AM – Hands on Lab – Getting Started with WebWorks</p>
<p>12:30PM – 01:30PM – Lunch</p>
<p>01:30PM – 02:30PM – Intro to Cascades</p>
<p>02:30PM – 02:45PM – Coffee Break</p>
<p>02:45PM – 04:30PM – Hands on Lab – Getting Stared with Cascades</p>
<p>04:30PM – 05:00PM – Wrap Up and Prize Draws</p>
<p>Fee: $25 + HST, includes breakfast, lunch and refreshments.</p>
<h3><strong>When:</strong></h3>
<p>Tuesday, April 16th, 2013</p>
<p>8:30am to 5:00pm</p>
<h3><strong>Where:</strong></h3>
<p><a href="https://maps.google.ca/maps?q=405+Avenue+Ogilvy,+Montr%C3%A9al,+Communaut%C3%A9-Urbaine-de-Montr%C3%A9al,+Qu%C3%A9bec+H3N&amp;hl=en&amp;ie=UTF8&amp;ll=45.530677,-73.624497&amp;spn=0.002807,0.006824&amp;oe=utf-8&amp;client=firefox-a&amp;geocode=FTW-tgIdT5Sc-w&amp;hnear=405+Avenue+Ogilvy,+Montr%C3%A9al,+Communaut%C3%A9-Urbaine-de-Montr%C3%A9al,+Qu%C3%A9bec+H3N&amp;t=m&amp;z=18" target="_new">CRIM</a></p>
<p>405 Ogilvy Avenue</p>
<p>Suite 101</p>
<p>Montreal, QC, H3N 1M3</p>
<p><a href="https://www.cvent.com/events/montreal-blackberry-jam-starter-session/registration-d7198e86fba94f35a5661380bc1dbe52.aspx" target="_new"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/04/pop-2.png" /></a></p>
<h3><strong>When:</strong></h3>
<p>Thursday, April 18th, 2013</p>
<p>8:30am to 5:00pm</p>
<h3><strong>Where:</strong></h3>
<p><a href="https://maps.google.ca/maps?q=Halifax+World+Trade+and+Convention+Centre&amp;ll=44.649101,-63.575671&amp;spn=0.011403,0.027294&amp;oe=utf-8&amp;client=firefox-a&amp;fb=1&amp;gl=ca&amp;hq=Halifax+World+Trade+and+Convention+Centre&amp;hnear=Halifax+World+Trade+and+Convention+Centre&amp;cid=0,0,3546722457212026923&amp;t=m&amp;z=16&amp;iwloc=A" target="_new">Halifax World Trade and Convention Centre</a></p>
<p>1800 Argyle Street, Suite 101</p>
<p>Halifax, NS</p>
<p><a href="https://www.cvent.com/events/halifax-blackberry-jam-starter-session/registration-664f779e91d24e74b704eaad453aedd2.aspx" target="_new"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/04/pop-3.png" /></a></p>
<p>Register now to learn how you can develop cutting edge BlackBerry apps that will increase your reach and grow your revenue.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/14548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/14548/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14548&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/04/blackberry-jam-starter-session/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/f39ae628054ae183cf8b25746979ec67?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">noctivagan</media:title>
		</media:content>

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

		<media:content url="http://rimdevblog.files.wordpress.com/2013/04/pop-2.png" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/04/pop-3.png" medium="image" />
	</item>
		<item>
		<title>BlackBerry Java to BlackBerry 10 Cascades Porting Series – Part 5: User Interface</title>
		<link>http://devblog.blackberry.com/2013/03/blackberry-java-to-blackberry-10-cascades-porting-series-part-5-user-interface/</link>
		<comments>http://devblog.blackberry.com/2013/03/blackberry-java-to-blackberry-10-cascades-porting-series-part-5-user-interface/#comments</comments>
		<pubDate>Wed, 27 Mar 2013 19:12:42 +0000</pubDate>
		<dc:creator>suavekz</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[porting]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=14348</guid>
		<description><![CDATA[In this part of the series on porting BlackBerry Java applications to BlackBerry 10 using Cascades, we’ll examine the user interface.. Let’s take a side by side look at the UI components in both frameworks. The Cascades framework is a rich and powerful modern UI framework build on top of the Qt application framework. The [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14348&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In this part of the series on porting BlackBerry Java applications to BlackBerry 10 using <a href="http://developer.blackberry.com/cascades" target="_new">Cascades</a>, we’ll examine the user interface.. Let’s take a side by side look at the UI components in both frameworks.</p>
<p>The Cascades framework is a rich and powerful modern UI framework build on top of the Qt application framework. The UI can be developed in C/C++ or Qt Modeling Language (QML) or both.</p>
<p>Lets take a look at a sample HelloWorld application in both frameworks:</p>
<p>HelloWorld side-by-side. A label in both Java and Cascades</p>
<table>
<tbody>
<tr>
<td>
<pre>// MAIN: the setup
public static void main(String[] args)    
{
      HelloApp app = new HelloApp();
      app.enterEventDispatcher();

}</pre>
</td>
<td>
<pre>	// MAIN: the setup
Q_DECL_EXPORT int main
(int argc, char **argv)
{
   Application app(argc, argv);
   new HelloWorld(&amp;app);
   return Application::exec();
}</pre>
</td>
</tr>
<tr>
<td>
<pre>// HELLO WORLD CLASS

public class HelloApp extends
   UiApplication {
public HelloApp () {
 HScreen scr = new HScreen();
  pushScreen( scr );
      }</pre>
</td>
<td>
<pre>	// HELLO WORLD CLASS

HelloWorld::HelloWorld 
(bb::cascades::Application *app)
: QObject(app)
{
    QmlDocument *qml = 
QmlDocument::create("asset:///main.qml")
.parent(this);

    // create root object for the UI
    AbstractPane *root = 
qml-&gt;createRootObject();
    app-&gt;setScene(root);
}</pre>
</td>
</tr>
<tr>
<td>
<pre>// SCREEN CLASS: THE UI

public class HScreen 
extends MainScreen {

  private LabelField lbl;
  public HScreen()
  {
    lbl = new   LabelField( "Welcome!" );

    add( lbl );</pre>
</td>
<td>
<pre>  }}	// QML Page : THE UI

Page {
    Container {
        layout: DockLayout {}
        Label {
            text: qsTr("Hello World")
}}}</pre>
</td>
</tr>
</tbody>
</table>
<p>Both frameworks start with the main application and the HelloWorld class. In the case of Java a screen gets pushed on the screen stack. In the case of Cascades a QML document gets associated with root UI object.</p>
<p>In Java, a Screen Class gets created by extending MainScreen and adding a LabelField to it. In Cascades a Page gets declared and a Label is placed inside a container as shown on the screen.</p>
<p>When embarking on porting any application that include the User Interface. It’s important to review the UI guidelines for both platforms.</p>
<p>The BlackBerry Java UI guidelines can be found at:<br />
<a href="https://developer.blackberry.com/design/bb7/" target="_new">https://developer.blackberry.com/design/bb7/</a></p>
<p>The BlackBerry 10 UI guidelines can be found at:<br />
<a><a href="https://developer.blackberry.com/design/bb10/" rel="nofollow">https://developer.blackberry.com/design/bb10/</a></a></p>
<h3><strong>A note on Java UI</strong></h3>
<p>The BlackBerry Java Development Environment (JDE) or the Eclipse Plugin is used to develop applications for BlackBerry OS 7.1 or lower.</p>
<p>There are two main supported frameworks for creating user interfaces in Java:</p>
<ul>
<li>MIDP UI APIs</li>
<li>BlackBerry UI APIs</li>
</ul>
<p>For compliance, the MIDP APIs are included for porting apps from MIDP devices. The BlackBerry UI APIs target specifically BlackBerry development and are the main focus of this article.</p>
<h3><strong>Rendering in Java And Cascades UI Frameworks </strong></h3>
<p>In Java UI rendering is done in “widgets” using the paint() functions. Normally, a list of such “widgets” will represent your entire UI. The system will go through the entire set of “widgets” and ask them to draw themselves by calling the “paint()” method. The consequences of this implementation are as follows:</p>
<table>
<tbody>
<tr>
<td>Customization: You can override the paint() method. This leads to inconsistency in the UI.</td>
<td>This is in fact how many Java UI custom components are created. This is usually an advanced activity involving drawing lines, circles and rectangles to get the desired UI look and effect.<br />
The end result is that each application can have completely different looking UI components that behave differently.</td>
</tr>
<tr>
<td>Side Effects: UI can block</td>
<td>If the paint() method is slow or the developer implemented their own custom component and their own paint(), the system UI can block executing a slow paint() function in one of the widgets.</td>
</tr>
<tr>
<td>Performance: Overdraw</td>
<td>For party covered or obscured widgets, the system first has to draw the entire widget and then overdraw several times. This results in performance penalty.</td>
</tr>
</tbody>
</table>
<p>In Cascades, rendering is done differently. Unlike in Java where the application is part of the rendering loop a Cascades application only manages the UI tree. The Cascades Rendering engine (which executes on a separate thread) takes care of drawing the UI. The consequences of this implementation are as follows:</p>
<table>
<tbody>
<tr>
<td>Customization: You cannot override the paint() method which leads to UI <strong>Consistency</strong>.</td>
<td>Every Cascades component is carefully crafted. These components blend and flow together and were designed to be used together. No cascades component is an island in and of itself. Thus Cascades <strong>custom</strong> components are usually <strong>composed</strong> of other existing components.</td>
<td></td>
</tr>
<tr>
<td>Side Effects: UI cannot block. No more hour-glassing during rendering!</td>
<td>Slow running application has no ability to block the UI. The speed of rendering depends on the complexity of the UI tree and the ability of the application to provide data to the renderer fast enough.</td>
</tr>
<tr>
<td>Performance: GPU optimizations</td>
<td>UI engine can get a holistic view of the entire user interface. This results in many GPU texture and state optimizations.</td>
</tr>
</tbody>
</table>
<p>For more information on the topic please see this blog post.</p>
<p>(<a href="http://devblog.blackberry.com/2012/09/cascades-custom-ui/" target="_new">http://devblog.blackberry.com/2012/09/cascades-custom-ui/</a>)</p>
<h3><strong>Navigation:</strong></h3>
<p><strong>Single Screen</strong></p>
<p>Normally a single screen Java application would extend from MainScreen as in the HelloWorld sample provided. Similarly in Cascades a Page would get created with individual components added to it.</p>
<table>
<tbody>
<tr>
<td><strong>Screen</strong></td>
<td><strong>Page</strong></td>
</tr>
<tr>
<td><img class="aligncenter size-full wp-image-14359" alt="Image1" src="http://rimdevblog.files.wordpress.com/2013/03/image1.jpg?w=173&#038;h=129" width="173" height="129" /></td>
<td><img class="aligncenter size-medium wp-image-14360" alt="Image2" src="http://rimdevblog.files.wordpress.com/2013/03/image2.jpg?w=188&#038;h=300" width="188" height="300" /></td>
</tr>
</tbody>
</table>
<p><strong>Stack of Screens</strong></p>
<p>In traditional Java applications flow is maintained by adding and removing screens to/from the stack, which is owned by the main application. The equivalent to this on BlackBerry 10 is the Navigation pane where individual pages can be pushed and popped from a stack. For more information on Cascades Navigation Pane please see: <a href="http://developer.blackberry.com/cascades/reference/bb__cascades__navigationpane.html" target="_new">http://developer.blackberry.com/cascades/reference/bb__cascades__navigationpane.html</a></p>
<table>
<tbody>
<tr>
<td><strong>Screen, MainScreen, FullScreen </strong></td>
<td><strong>             NavigationPane</strong></td>
</tr>
<tr>
<td>The screen transitions occur through push/pop from the screen stack</p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image3.jpg" /></p>
</td>
<td>Navigation pane maintains a stack of screens</p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image4.jpg?w=300" /></p>
</td>
</tr>
</tbody>
</table>
<p><strong>Tabs and Filtering content</strong></p>
<p>In Java applications Tabs are used to display filtered content and are achieved with the PaneManagerModel. This can be achieved in Cascades using Segmented Control.</p>
<p>Cascades tabs allow the apps to change the flow of the application. In BlackBerry Java, this effect was achieved through the use of custom components.</p>
<table>
<tbody>
<tr>
<td>PaneManagerModel, Pane, HorizontalTabTitleView, PaneView, PaneManagerView</td>
<td>SegmentedControl<br />
<a href="http://developer.blackberry.com/cascades/reference/bb__cascades__segmentedcontrol.html" target="_new">http://developer.blackberry.com/cascades<br />
/reference/bb__cascades__segmentedcontrol.html</a></td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image5.jpg?w=200" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image6.jpg?w=200" /></td>
</tr>
<tr>
<td>Custom Component implementing custom Toolbar<a><a href="http://docs.blackberry.com/en/developers/" rel="nofollow">http://docs.blackberry.com/en/developers/</a><br />
deliverables/17965/Toolbars_6_0_1137042_11.jsp</a></td>
<td>Tabbed Pane<a href="http://developer.blackberry.com/cascades/reference/bb__cascades__tabbedpane.html" target="_new">http://developer.blackberry.com/cascades<br />
/reference/bb__cascades__tabbedpane.html</a></td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image7.jpg?w=200" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image8.jpg" /></td>
</tr>
</tbody>
</table>
<h3><strong>Layout</strong></h3>
<p><strong>Java:</strong></p>
<p><a href="http://btsc.webapps.blackberry.com/btsc/fetch/2000/348583/800332/800505/800508/How_To_-_Create_tabbed_view_screens.html?nodeid=1357482&amp;vernum=0">http://btsc.webapps.blackberry.com/btsc/fetch/2000/348583/800332/800505/800508/How_To_-_Create_tabbed_view_screens.html?nodeid=1357482&amp;vernum=0</a></p>
<p><strong>Cascades:</strong></p>
<p><a><a href="http://developer.blackberry.com/cascades/reference/user_interface_layouts.html" rel="nofollow">http://developer.blackberry.com/cascades/reference/user_interface_layouts.html</a></a></p>
<p>The following tables illustrate layout mapping of the most frequently used layouts.</p>
<p>In BlackBerry Java, the most common approach is to use combination of HorizontalFieldManager and VerticalFieldManager. This can be achieved in Cascades using the DockLayout.</p>
<table>
<tbody>
<tr>
<td>FlowFieldManager</td>
<td>Stack Layout default behavior</td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image9.png?w=200" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image10.png" /></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td>HorizontalFieldmanager</td>
<td>Stack Layout with LayoutProperties<br />
and spaceQuota</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td>VerticalFieldManager</td>
<td>Stack Layout with each component having<br />
HorizontalAlignment.Center</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td>Combination of Horizontal<br />
and Vertical Field Managers</td>
<td>Dock Layout</td>
</tr>
<tr>
<td></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image11.png" /></td>
</tr>
</tbody>
</table>
<p>AbsoluteLayout</p>
<table>
<tbody>
<tr>
<td>AbsoluteFieldManager</td>
<td>AbsoluteLayout</td>
</tr>
</tbody>
</table>
<h3><strong>Menus:</strong></h3>
<p>The Java Menus documentation can be referenced at:</p>
<p><a><a href="http://developer.blackberry.com/java/documentation/menu_items_1970228_11.html" rel="nofollow">http://developer.blackberry.com/java/documentation/menu_items_1970228_11.html</a></a></p>
<p>The Cascades Menus can be reference at:</p>
<p><a href="http://developer.blackberry.com/cascades/documentation/ui/navigation/menus.html" target="_new">http://developer.blackberry.com/cascades/documentation/ui/navigation/menus.html</a></p>
<p>The most common way of interacting with content in BlackBerry Java was through the BlackBerry Menu (the hardware key). On BlackBerry 10, Cascades applications would use an action in the action menu to get the equivalent functionality.</p>
<p>BlackBerry Key Menu vs. BlackBerry 10 Action Menu</p>
<table>
<tbody>
<tr>
<td><strong>Menu (Screenshot)</strong></td>
<td><strong>ActionSet</strong></td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image12.png?w=200" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image13.png?w=200" /></td>
</tr>
</tbody>
</table>
<p>Application “Settings” Menu. [BlackBerry 10 Only]</p>
<p>A swipe-down menu is accessible on BlackBerry 10 for <strong>infrequently</strong> used actions such as settings, getting customer information, managing accounts or downloads etc…</p>
<table>
<tbody>
<tr>
<td>N/A</td>
<td>Menu class and ActionItem object</td>
</tr>
<tr>
<td></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image14.png?w=200" /></td>
</tr>
</tbody>
</table>
<p><strong>Context Menu</strong></p>
<p>Context menu is a common BlackBerry specific method of acting upon an item in a specific context. This can be achieved on both platforms as illustrated below.</p>
<table>
<tbody>
<tr>
<td>Context Menu</td>
<td>contextActions</td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image15.png?w=200" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image16.png?w=200" /></td>
</tr>
</tbody>
</table>
<p><strong>Custom Menu</strong></p>
<p>In certain cases you might want to create a completely custom menu that makes sense for your application. This is possible in BlackBerry 10 using the MenuManager API.</p>
<table>
<tbody>
<tr>
<td>Override keyDown and then<br />
create a custom component to display on the screen.</td>
<td>MenuManager</td>
</tr>
<tr>
<td></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/image17.png" /></td>
</tr>
</tbody>
</table>
<h3><strong>Active Home Screen Elements</strong></h3>
<p>In BlackBerry Java, apps would normally change the icons and the icon descriptions to keep track of the application state. For more information on the APIs please see:</p>
<p><a href="http://www.blackberry.com/developers/docs/7.1.0api/" target="_new">http://www.blackberry.com/developers/docs/7.1.0api/</a></p>
<p>In BlackBerry 10, apps would use Active Frames to update the status of an application. For more information of Active Frames please see:</p>
<p><a> <a href="http://developer.blackberry.com/cascades/documentation/ui/active_frames/index.html" rel="nofollow">http://developer.blackberry.com/cascades/documentation/ui/active_frames/index.html</a></a></p>
<p>Active Home Screen App Elements</p>
<table>
<tbody>
<tr>
<td>Active Icons</td>
<td>Active Frames</td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/18.png?w=200" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/19.png?w=200" /></td>
</tr>
</tbody>
</table>
<p><strong>Notifications</strong></p>
<p>To learn more about BlackBerry 7 notifications please see:</p>
<p><a href="https://developer.blackberry.com/java/documentation/message_list_1984778_11.html" target="_new">https://developer.blackberry.com/java/documentation/message_list_1984778_11.html</a></p>
<p>To learn more about BlackBerry 10 hub notifications please see:</p>
<p><a href="https://developer.blackberry.com/cascades/documentation/device_comm/notifications/index.html" target="_new">https://developer.blackberry.com/cascades/documentation/device_comm/notifications/index.html</a></p>
<table>
<tbody>
<tr>
<td style="text-align:center;"><strong>MessageList</strong></td>
<td style="text-align:center;"><strong>Hub Notifications</strong></td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/20.png" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/21.png?w=200" /></td>
</tr>
</tbody>
</table>
<p><strong>Popup Dialogs</strong></p>
<table>
<tbody>
<tr>
<td style="text-align:center;"><strong>DialogFieldManager and PopupManager</strong></td>
<td style="text-align:center;"><strong>NotificationDialog</strong></td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/22.png" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/23.png?w=185" /></td>
</tr>
</tbody>
</table>
<h3><strong>Custom Controls</strong></h3>
<p>In BlackBerry Java, custom controls are challenging to implement and often involve overriding the paint() method of native components. For more information and samples please see:</p>
<p><a href="https://developer.blackberry.com/java/documentation/advanced_ui_components_and_managers_1970227_11.html" target="_new">https://developer.blackberry.com/java/documentation/<br />
advanced_ui_components_and_managers_1970227_11.html</a></p>
<p>In Cascades, custom controls are created by combining existing components and modifying their behavior. For more information on how to create a custom control in Cascades, please see:</p>
<p><a href="http://developer.blackberry.com/cascades/documentation/dev/integrating_cpp_qml/custom_control_tutorial.html" target="_new">http://developer.blackberry.com/cascades/documentation/<br />
dev/integrating_cpp_qml/custom_control_tutorial.html</a></p>
<table>
<tbody>
<tr>
<td><strong>Sample Use of Custom Components</strong></td>
<td><strong>Custom Control </strong></td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/24.png?w=200" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/25.png?w=200" /></td>
</tr>
</tbody>
</table>
<h3><strong>Dialog Boxes, Prompts, Toasts</strong></h3>
<p>The BlackBerry Java platform supports Dialogs of different format (information, status, inquiry). For information on dialog boxes please see:</p>
<p><a href="http://developer.blackberry.com/java/documentation/dialog_boxes_1970203_11.html" target="_new">http://developer.blackberry.com/java/documentation/dialog_boxes_1970203_11.html</a></p>
<p>Cascades supports dialog boxes, prompts and toasts. For more information on how to implement them please see:</p>
<p><a href="http://developer.blackberry.com/cascades/documentation/ui/dialogs_toasts/index.html" target="_new">http://developer.blackberry.com/cascades/documentation/ui/dialogs_toasts/index.html</a></p>
<table>
<tbody>
<tr>
<td>Dialog Class</td>
<td>Dialog, SystemDialog, SystemListDialog …<br />
Below is an example of a custom dialog box.</td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/26.png" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/27.png?w=182" /></td>
</tr>
</tbody>
</table>
<h3><strong>Lists</strong></h3>
<p>For reference of List implementations in Java please see:</p>
<p><a href="http://developer.blackberry.com/java/documentation/lists_and_tables_1970216_11.html" target="_new">http://developer.blackberry.com/java/documentation/lists_and_tables_1970216_11.html</a></p>
<p>For list implementation in Cascades please see:</p>
<p><a href="http://developer.blackberry.com/cascades/documentation/ui/lists/" target="_new">http://developer.blackberry.com/cascades/documentation/ui/lists/</a></p>
<p><strong>Active Home Screen App Elements</strong></p>
<table>
<tbody>
<tr>
<td>SimpleList, RichList, TableView</td>
<td>ListView</td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/28.png?w=200" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/29.png?w=200" /></td>
</tr>
</tbody>
</table>
<h3><strong>Text</strong></h3>
<p>For reference on how to handle text in Cascades please see:</p>
<p><a><a href="http://developer.blackberry.com/cascades/documentation/ui/text/index.html" rel="nofollow">http://developer.blackberry.com/cascades/documentation/ui/text/index.html</a></a></p>
<p><strong>Label</strong></p>
<table>
<tbody>
<tr>
<td>Label<a href="http://developer.blackberry.com/java/documentation/text_field_label_1984828_11.html" target="_new">http://developer.blackberry.com/java/<br />
documentation/text_field_label_1984828_11.html</a></td>
<td>Label</td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/30.png?w=200" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/31.png" /></td>
</tr>
</tbody>
</table>
<p><strong>Text Field</strong></p>
<table>
<tbody>
<tr>
<td>LabelField, RitchTextField, BasicEditField, PasswordEditField, EmailAddressEditField, KeywordFilterField, AutoTextEditField</td>
<td>TextField with TextFieldInputMode<br />
Of type:<br />
<a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textfieldinputmode.html#enumvalue-default" target="_new">Default, </a><a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textfieldinputmode.html#enumvalue-text" target="_new">Text, </a><a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textfieldinputmode.html#enumvalue-emailaddress" target="_new">EmailAddress, </a><a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textfieldinputmode.html#enumvalue-password" target="_new">Password, </a><a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textfieldinputmode.html#enumvalue-chat" target="_new">Chat, </a><a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textfieldinputmode.html#enumvalue-url" target="_new">Url, </a><a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textfieldinputmode.html#enumvalue-phonenumber" target="_new">PhoneNumber, </a><a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textfieldinputmode.html#enumvalue-numbersandpunctuation" target="_new">NumbersAndPunctuation,</a><a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textfieldinputmode.html#enumvalue-numericpassword" target="_new">NumericPassword, </a><a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textfieldinputmode.html#enumvalue-pin" target="_new">Pin </a></td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/32.png?w=200" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/33.png" /></td>
</tr>
</tbody>
</table>
<p><strong>Text Area</strong></p>
<table>
<tbody>
<tr>
<td>RitchTextField and ActiveRitchTextField</td>
<td>TextArea with TextAreaInputMode of type:<br />
<a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textareainputmode.html#enumvalue-default" target="_new">Default, </a><a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textareainputmode.html#enumvalue-text" target="_new">Text, </a><a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textareainputmode.html#enumvalue-chat" target="_new">Chat, </a><a href="http://developer.blackberry.com/cascades/reference/bb__cascades__textareainputmode.html#enumvalue-emailaddress" target="_new">EmailAddress </a></td>
</tr>
<tr>
<td></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/34.png" /></td>
</tr>
</tbody>
</table>
<h3><strong>Web Content</strong></h3>
<p><strong>WebView</strong></p>
<table>
<tbody>
<tr>
<td>BrowserField<br />
<a href="//www.blackberry.com/developers/docs/7.1.0api/net/rim/device/api/browser/field2/BrowserField.html" target="_new;">http://www.blackberry.com/developers/<br />
docs/7.1.0api/net/rim/device/api/<br />
browser/field2/BrowserField.html</a></p>
<pre>BrowserField  BrowserField browserField = 
new BrowserField();
screen.add( browserField ); 
browserField.requestContent
( "http://blackberry.com" );</pre>
</td>
<td>WebView<br />
<a href="http://developer.blackberry.com/cascades/reference/bb__cascades__webview.html" target="_new">http://developer.blackberry.com/<br />
cascades/reference/bb__cascades<br />
__webview.html</a></p>
<pre>WebView {
    id: webView
    url: " http://blackberry.com "
}</pre>
</td>
</tr>
<tr>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/35.png?w=200" /></td>
<td><img alt="" src="http://rimdevblog.files.wordpress.com/2013/03/36.png" /></td>
</tr>
</tbody>
</table>
<p></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/14348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/14348/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14348&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/03/blackberry-java-to-blackberry-10-cascades-porting-series-part-5-user-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da12ace9c233f2b65ec288ed8ff59f06?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">suavekz</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image1.jpg" medium="image">
			<media:title type="html">Image1</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image2.jpg?w=188" medium="image">
			<media:title type="html">Image2</media:title>
		</media:content>

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

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image4.jpg?w=300" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image5.jpg?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image6.jpg?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image7.jpg?w=200" medium="image" />

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

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image9.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image10.png" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image11.png" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image12.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image13.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image14.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image15.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image16.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/image17.png" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/18.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/19.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/20.png" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/21.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/22.png" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/23.png?w=185" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/24.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/25.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/26.png" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/27.png?w=182" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/28.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/29.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/30.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/31.png" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/32.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/33.png" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/34.png" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/35.png?w=200" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/36.png" medium="image" />
	</item>
	</channel>
</rss>
