<?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; porting</title>
	<atom:link href="http://devblog.blackberry.com/tag/porting/feed/" rel="self" type="application/rss+xml" />
	<link>http://devblog.blackberry.com</link>
	<description></description>
	<lastBuildDate>Fri, 17 May 2013 17:47:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='devblog.blackberry.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/9ef0a66c09615fa946c4179662398878?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>BlackBerry Developer Blog &#187; porting</title>
		<link>http://devblog.blackberry.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://devblog.blackberry.com/osd.xml" title="BlackBerry Developer Blog" />
	<atom:link rel='hub' href='http://devblog.blackberry.com/?pushpress=hub'/>
		<item>
		<title>BlackBerry 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 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>
		<item>
		<title>BlackBerry Java to BlackBerry 10 Cascades Porting Series – Part 4: Multimedia</title>
		<link>http://devblog.blackberry.com/2013/03/cascades-porting-series-multimedia/</link>
		<comments>http://devblog.blackberry.com/2013/03/cascades-porting-series-multimedia/#comments</comments>
		<pubDate>Wed, 20 Mar 2013 13:31:27 +0000</pubDate>
		<dc:creator>Paul Bernhardt</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 7]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[multimedia]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[porting]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=14214</guid>
		<description><![CDATA[Multimedia on BlackBerry 7 was based on the multimedia JSR (135). There were a lot of limitations regarding supported formats, how many sounds could be played at the same time, and even what worked on which device. In BlackBerry 10, there are a wide range of supported codecs, containers, and protocols. For video, we recommend [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14214&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div id="attachment_14224" class="wp-caption aligncenter" style="width: 260px"><a href="http://giphy.com/gifs/TznYiZCFXeLle"><img class="size-full wp-image-14224" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/03/original.gif?w=250&#038;h=195" width="250" height="195" /></a><p class="wp-caption-text"><a href="http://giphy.com/gifs/TznYiZCFXeLle" target="_blank">http://giphy.com/gifs/TznYiZCFXeLle</a></p></div>
<p>Multimedia on BlackBerry 7 was based on the multimedia JSR (135). There were a lot of limitations regarding supported formats, how many sounds could be played at the same time, and even what worked on which device.</p>
<p>In BlackBerry 10, there are a wide range of supported <a href="https://developer.blackberry.com/develop/supported_media/bb10_media_support.html" target="_new">codecs, containers</a>, and <a href="https://developer.blackberry.com/devzone/develop/supported_media/bb10_pbos_streaming_support.html" target="_new">protocols</a>.</p>
<p>For video, we recommend an MP4 containing H.264 video at 720p and AAC audio. For audio, it depends a lot on your use case. In addition to mainstays such as MP3 and AAC, we support things like <a href="http://flac.sourceforge.net/" target="_new">FLAC</a> and <a href="http://www.vorbis.com/" target="_new">Ogg Vorbis</a>.</p>
<p>To actually play your multimedia, you should be looking at the <a href="https://developer.blackberry.com/cascades/reference/bb__multimedia__mediaplayer.html" target="_new">MediaPlayer</a> class. That will handle audio or video. You can also easily play the built in system sounds with the <a href="https://developer.blackberry.com/cascades/reference/bb__multimedia__systemsound.html" target="_new">SystemSound</a> class.</p>
<ul>
<li><a href="https://developer.blackberry.com/cascades/documentation/design/audio_video/playing_audio_or_video.html" target="_new">Tutorial: Playing Audio or Video</a></li>
<li><a href="https://developer.blackberry.com/cascades/documentation/design/audio_video/playing_system_sounds_in_an_app_tutorial.html" target="_new">Tutorial: Playing SystemSounds in an app</a></li>
</ul>
<p>Recording audio is through the AudioRecorder class. You can record a few different formats, including AAC (.mp4) and PCM (.wav).</p>
<ul>
<li><a href="https://developer.blackberry.com/cascades/reference/bb__multimedia__audiorecorder.html" target="_new">Recording Audio</a></li>
</ul>
<p>This is all pretty straightforward and should be pretty easy to adjust to if you are used to the Java way of doing things. There are a few key differences that you might not be expecting though.</p>
<p>The first is the <a href="https://developer.blackberry.com/cascades/reference/bb__multimedia__nowplayingconnection.html" target="_new">NowPlayingConnection</a>. If you are building any sort of media player type application: use it. What it does is let the user control the volume and playback of your app from in another app, using the volume keys on the side. You can also provide a bit of data like a thumbnail image and the current song playing. No user is going to want to have to go back into your application just to change the volume, and it’s really easy to implement.</p>
<ul>
<li><a href="https://developer.blackberry.com/cascades/documentation/design/audio_video/working_with_the_nowplayingconnection.html" target="_new">Working with NowPlayingConnection</a></li>
</ul>
<p>Secondly, unlike in BlackBerry 7, in BlackBerry 10 you can enable echo cancellation in order to do VoIP. There is no convenient Qt API to do this, but you can use <a href="http://developer.blackberry.com/native/reference/bb10/audio_libref/topic/summary.html" target="_new">QSA</a> and <a href="http://developer.blackberry.com/native/reference/bb10/audio_libref/topic/libs/snd_pcm_open_name.html" target="_new">open a connection</a> to the “voice” PCM audio interface.</p>
<ul>
<li><a href="http://devblog.blackberry.com/2013/01/blackberry-10-voip/" target="_new">BlackBerry 10 VoIP</a></li>
</ul>
<p>The other big difference is that you can’t just feed bytes directly into the media player. You need to have an actual file to play, or be using one the streaming protocols supported. Of course, there is nothing stopping you from dropping down to <a href="http://connect.creativelabs.com/openal/default.aspx" target="_new">OpenAL/ALUT</a> and doing whatever you need if that’s your style. You also have <a href="http://developer.blackberry.com/native/reference/bb10/audio_libref/topic/summary.html" target="_new">QSA</a> available as mentioned before, as well as <a href="http://developer.blackberry.com/native/reference/bb10/mmrenderer_libref/topic/about.html" target="_new">mm-renderer</a> (which is what MediaPlayer is using), but that is all beyond the scope of this article.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/14214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/14214/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14214&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/03/cascades-porting-series-multimedia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7a3bf8c930434e9f401be449eb7ea556?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">paulbe1</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/original.gif" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>[VIDEO] Top Reasons to Port to BlackBerry 10 according to Macadamian – February 2013</title>
		<link>http://devblog.blackberry.com/2013/03/port-to-blackberry-10-top-reasons/</link>
		<comments>http://devblog.blackberry.com/2013/03/port-to-blackberry-10-top-reasons/#comments</comments>
		<pubDate>Mon, 18 Mar 2013 13:43:20 +0000</pubDate>
		<dc:creator>Alex Kinsella</dc:creator>
				<category><![CDATA[Adobe AIR Development]]></category>
		<category><![CDATA[Android Development]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Interviews/Thought Leadership]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Platform Services]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[app porting]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[Macadamian]]></category>
		<category><![CDATA[port app to BlackBerry 10]]></category>
		<category><![CDATA[porting]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=14003</guid>
		<description><![CDATA[You’ve heard it from us before that porting applications to BlackBerry 10 is easy. Some have even done it in 36 hours or less! One of the most compelling reasons to bring your applications to our platform is that developers do not have to spend time learning a complete new set of skills to get [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14003&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>You’ve heard it from us before that porting applications to BlackBerry 10 is easy. Some have even done it in <a href="http://devblog.blackberry.com/2013/02/port-app-to-blackberry-10/" target="_new">36 hours or less</a>! One of the most compelling reasons to bring your applications to our platform is that developers do not have to spend time learning a complete new set of skills to get apps running on BlackBerry 10. Whether you’re building for <a href="http://developer.blackberry.com/native/" target="_new">C/C++</a>, <a href="http://developer.blackberry.com/cascades/">Cascades</a>, <a href="http://developer.blackberry.com/html5/" target="_new">HTML5</a>, <a href="http://developer.blackberry.com/air/" target="_new">AIR</a>, <a href="http://developer.blackberry.com/android/" target="_new">Android</a>, or with one of our numerous <a href="http://developer.blackberry.com/develop/platform_partners/" target="_new">platform partners</a>, there’s bound to be some language that can guide you in building for BlackBerry 10.</p>
<p>That said, we wanted to put our money where our mouth is so Alec Saunders sat down with Frédéric Boulanger, CEO &amp; Co-Founder of <a href="http://www.macadamian.com/" target="_new">Macadamian</a>, to find out what their reasons are to port to BlackBerry 10. Watch what happened below.</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='560' height='315' src='http://www.youtube.com/embed/XcRPUZV8BX0?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 style="text-align:center;">[ <a href="http://www.youtube.com/watch?feature=player_embedded&amp;v=XcRPUZV8BX0" target="_new">YouTube link for mobile viewing</a> ]</p>
<p>If you’re interested in using Macadamian to port to BlackBerry 10, make sure you visit them <a href="http://www.macadamian.com" target="_new">here</a>.</p>
<p>Have you ported your app to BlackBerry 10? We want to know your story! Let us know in the comments!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/14003/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/14003/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14003&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/03/port-to-blackberry-10-top-reasons/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>
	</item>
		<item>
		<title>BlackBerry Java to BlackBerry 10 Cascades Porting Series – Part 2: Application Life Cycle</title>
		<link>http://devblog.blackberry.com/2013/02/java-to-cascades-part-2/</link>
		<comments>http://devblog.blackberry.com/2013/02/java-to-cascades-part-2/#comments</comments>
		<pubDate>Fri, 22 Feb 2013 16:16:29 +0000</pubDate>
		<dc:creator>Pratik S.</dc:creator>
				<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Application Life Cycle]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[porting]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=13902</guid>
		<description><![CDATA[Guest post from Roberto S. &#8211; Ed. In Part 2 of this series, we would like to introduce BlackBerry Java developers to what has changed with respect to application lifecycle in BlackBerry 10, and what you should be aware of when you port this aspect of your application to Cascades. All BlackBerry 10 applications have [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13902&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><P><I>Guest post from Roberto S. &#8211; Ed.</i></p>
<p>In Part 2 of this series, we would like to introduce BlackBerry Java developers to what has changed with respect to application lifecycle in BlackBerry 10, and what you should be aware of when you port this aspect of your application to Cascades.</p>
<p>All BlackBerry 10 applications have a similar lifecycle that includes three possible states: running in the foreground, running in the background, and stopped.</p>
<ul>
<li>An app <strong>running in the foreground</strong> is visible and is taking up the entire screen.</li>
<li>An app <strong>running in the background</strong> is either displayed as a thumbnail, such as when a user swipes up from the bottom of the screen to display a list of running apps, or is invisible but has the run_when_backgrounded permission to run in the background.</li>
<li>An app that is <strong>stopped</strong> is not visible and doesn&#8217;t have permission to run in the background.</li>
<li>An app that is <strong>pooled</strong> (the app is paused and ready to be opened in the foreground)</li>
</ul>
<p><span id="more-13902"></span></p>
<p style="text-align:center;"><img alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/02/applifecycle.jpg?w=450" /></p>
<p><img class="aligncenter size-full wp-image-13904" alt="AppLife" src="http://rimdevblog.files.wordpress.com/2013/02/applife.png?w=450&#038;h=405" width="450" height="405" /></p>
<p>Developers porting their apps from BlackBerry OS will need to take this into account and make the following changes to their apps:</p>
<ol>
<li>Unlike in BlackBerry OS, apps do not have an extra entry point available to them for starting up a background thread at startup, or for modifying theirs icons. Homescreen Icons are not modifiable in BlackBerry 10 so any such logic is not portable as is. However, the active frames feature allows developers to customize their frames when minimized. Therefore, this may allow some of the icon logic to be applied to the cover instead on a BlackBerry 10 version of the app. For more information about Active covers, go to <a href="https://developer.blackberry.com/cascades/documentation/ui/active_frames/index.html" target="_new">https://developer.blackberry.com/cascades/documentation/ui/active_frames/index.html</a> .</li>
<li>Background services capabilities are currently not available to third party developers. They will be available in a future release of BlackBerry 10. Developers relying on background services to poll servers for updates or execute code when they are not running will have to implement an alternative approach for the time being. The alternative currently recommended is to use push to launch your apps when new data is available. With Push, your server side application can poll for new data on behalf of the client application and deliver any new data in a push message which can be processed even if the client application is closed. Check out this recent blog post on push for more information: <a href="http://devblog.blackberry.com/2013/01/push-samples/" target="_new">http://devblog.blackberry.com/2013/01/push-samples/</a> .</li>
<li>To handle the life cycle changes that occur in your app, there are several signals made available to Cascades apps that an app developer can intercept and process accordingly. For more details on application lifecycle and the various signals available, go to <a href="https://developer.blackberry.com/cascades/documentation/dev/fundamentals/index.html" target="_new">https://developer.blackberry.com/cascades/documentation/dev/fundamentals/index.html</a> and <a href="https://developer.blackberry.com/cascades/reference/bb__application.html" target="_new">https://developer.blackberry.com/cascades/reference/bb__application.html</a> for more information. The developer must take their state into consideration and reduce app activity accordingly:
<ul>
<li>When your app enters the thumbnail state, it should stop any extraneous processing and use only the resources it needs to update the cover or maintain critical functionality like maintain a server connection or check a remote server for updates. Your app should stop other threads that aren&#8217;t required when running in the background. Examples of what to stop are rendering, multimedia playback, audio playback, etc.</li>
<li>The invisible signal is emitted when the app (and its thumbnail) is no longer visible. This state might occur if the device backlight is off or if another app has been brought to the foreground. When your app is in this state and doesn&#8217;t have the run_when_backgrounded permission, it is considered stopped and won&#8217;t receive any processing time. If your app does have the run_when_backgrounded permission, your app should stop any rendering operations (for example, updating the UI) and any other unnecessary operations. Your app should only listen for events that it needs to respond to, and process these events when they occur.</li>
<li>It is very important for applications to reduce processing as much as possible while thumbnailed or invisible. It will conserve CPU usage and also save on battery life. This is an important criterion that is taken into consideration when applications are evaluated during the BlackBerry World approval process.</li>
</ul>
</li>
<li>When a user closes your app, your app usually needs to perform some final cleanup operations, whether it be saving the user&#8217;s data, shutting down your threads in a particular way, or manually closing the app database or network connections. Cascades provides developers with a choice of automatic or manual exit mechanisms that they can take advantage depending on their cleanup needs.</li>
<li>BlackBerry OS developers should be aware of the fact that C++ does not have automatic garbage collection like Java does. However, Qt does provide some built-in mechanisms that provide limited object cleanup. Please refer to the API references for QObject and other QtCore classes like QSharedPointer for additional information on how to manage pointers and automatically delete objects after use. For more information about object ownership in C++ and QML and what that entails, go to <a href="https://developer.blackberry.com/cascades/documentation/dev/fundamentals/index.html" target="_new">https://developer.blackberry.com/cascades/documentation/dev/fundamentals/index.html</a></li>
<li>The new pooled state is designed to take advantage of the extra memory added to BlackBerry 10 devices. The system sends a signal to the app to prepare to be pooled. The app is expected to reset its UI t o a point that matches startup conditions and signal back that the operation is completed. If the app fails to do this, the app will be terminated.</li>
<li>Another limitation to be aware of is that currently only eight apps can run at the same time on BlackBerry 10. As a best practice, developers should ensure that any apps launched in the background to process push events should exit as soon as possible if user interaction is not required or if they launch a notification to alert the user to launch the app later. This will prevent push interactions from bumping up the number of running apps for more than a short period of time.</li>
</ol>
<p>Please stay tuned for series Part 3 – UI Overview.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/13902/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/13902/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13902&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/02/java-to-cascades-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5c7714acaeda7a566baa9545c280c91c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pratiks1</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/02/applifecycle.jpg?w=450" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/02/applife.png" medium="image">
			<media:title type="html">AppLife</media:title>
		</media:content>
	</item>
		<item>
		<title>Qt porting guide: a reference to help you bring your Qt apps to BlackBerry 10</title>
		<link>http://devblog.blackberry.com/2013/02/qt-porting-guide-blackberry-10/</link>
		<comments>http://devblog.blackberry.com/2013/02/qt-porting-guide-blackberry-10/#comments</comments>
		<pubDate>Tue, 19 Feb 2013 19:08:05 +0000</pubDate>
		<dc:creator>Veronica O</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[porting]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[Qt apps]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=13841</guid>
		<description><![CDATA[Guest post from Kizito &#8211; Ed. Qt developers often ask the following questions: Is there a porting guide to help me port my Qt apps to BlackBerry 10? What about porting Qt Quick to BlackBerry 10? How do I configure Qt Creator for BlackBerry 10? The good news has arrived: you now have a porting [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13841&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><i>Guest post from Kizito &#8211; Ed.</i></p>
<p><img class="aligncenter size-full wp-image-13842" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/02/qt-porting.jpg?w=500&#038;h=280" width="500" height="280" /></p>
<p>Qt developers often ask the following questions: <i>Is there a porting guide to help me port my Qt apps to BlackBerry 10? What about porting Qt Quick to BlackBerry 10? How do I configure Qt Creator for BlackBerry 10?</i></p>
<p>The good news has arrived: you now have a porting guide covering the most commonly-encountered use cases. This guide provides the necessary information to developers of native mobile apps who fall in one of the following categories:</p>
<ul>
<li>Developers who have Qt apps written in C/C++/ QML/JavaScript and intend to have their apps running on the BlackBerry 10 platform;</li>
<li>Developers who want to write new Qt C++, QML and/or JavaScript code for the BlackBerry 10 platform;</li>
<li>And finally, developers who want to take advantage of the Cascades UI framework and change their existing UI to the Cascades framework.</li>
</ul>
<p>BlackBerry supports developers in all of the above described scenarios, and so this guide provides developers with best practices for each category. It also explains why a particular practice is considered the best one.</p>
<p>Please check the full Qt porting guide at:</p>
<p><a href="http://developer.blackberry.com/native/documentation/bb10/porting_qt_apps.html" target="_new">http://developer.blackberry.com/native/documentation/bb10/porting_qt_apps.html</a></p>
<p>Related Posts:</p>
<p><a href="http://www.youtube.com/watch?v=hCMMyG3EJ9A" target="_new">YouTube: BlackBerry Jam Session (JAM12): Porting Qt Applications to BlackBerry 10</a><br />
<a href="http://devblog.blackberry.com/2012/11/porting-qt-apps-to-blackberry-10/" target="_new">Porting Qt Applications to BlackBerry 10 is Easier than Ever!</a><br />
<a href="http://devblog.blackberry.com/2012/11/writing-qt-apps-blackberry-10/" target="_new">Writing Qt apps for the BlackBerry 10 platform</a><br />
<a href="http://www.youtube.com/watch?v=f2nKK1XBsR4" target="_new">YouTube: QtDD12 &#8211; How Qt Helped RIM Build BlackBerry 10</a><br />
<a href="http://www.youtube.com/watch?v=KF0c_gd1Fp0" target="_new">YouTube: QtDD12 &#8211; Developing with Qt for the BlackBerry 10</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/13841/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/13841/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13841&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/02/qt-porting-guide-blackberry-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b375d2578c668cc015d7452d495c9ff?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">veronchiquita</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/02/qt-porting.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry 10 and Paganza</title>
		<link>http://devblog.blackberry.com/2013/02/blackberry-10-paganza/</link>
		<comments>http://devblog.blackberry.com/2013/02/blackberry-10-paganza/#comments</comments>
		<pubDate>Tue, 05 Feb 2013 11:46:15 +0000</pubDate>
		<dc:creator>btafel</dc:creator>
				<category><![CDATA[Case Studies & Success Stories]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Innovation center]]></category>
		<category><![CDATA[porting]]></category>
		<category><![CDATA[Support]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=13314</guid>
		<description><![CDATA[Two weeks ago it was just an idea, but today it is a reality. The most popular mobile payment solution in Uruguay took advantage of the BlackBerry Developer relation’s team support to port the entire solution to BlackBerry 10 &#8211; in just 3 days. How did that happen? Easy: they arrived to the BlackBerry Innovation [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13314&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2013/02/devblog-paganza.png"><img class="aligncenter  wp-image-13465" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/02/devblog-paganza-e1360055877119.png?w=504&#038;h=142" width="504" height="142" /></a></p>
<p>Two weeks ago it was just an idea, but today it is a reality. The most popular mobile payment solution in Uruguay took advantage of the BlackBerry Developer relation’s team support to port the entire solution to BlackBerry 10 &#8211; in just 3 days. How did that happen? Easy: they arrived to the <a href="http://devblog.blackberry.com/2012/11/blackberry-buenos-aires-innovation-center/" target="_new">BlackBerry Innovation Center in Buenos Aires</a> on Monday with no BlackBerry app and left on Thursday with it already submitted to BlackBerry World. Simple.</p>
<p>Seriously, how did that happen?</p>
<p>I’ll let them tell you what, how and why&#8230;</p>
<blockquote><p>Paganza is a revolutionary application for paying family bills. The app allows scanning the barcode of the invoice and making payments through a bank account. The service was recently launched in Uruguay and within weeks was already leading the ranking of finance applications in the iPhone and Android stores.</p>
<p>The last week of last December, Paganza was invited to the BlackBerry Innovation Center in Buenos Aires with the aim of having its application available on the new platform before January 30th. While those were complicated dates and the term was very short, we decided to accept the challenge. The result was that in single a week we managed to migrate the application and today we have the first version of Paganza available in BlackBerry World.</p>
<p>Development was carried out with the native BlackBerry 10 SDK, which allowed us to easily access existing C++ libraries without compromising performance. At the same time the user interface was developed with Cascades, which gave us access to an extensive library of controls and a rapid iteration of logic in JavaScript. The application uses a C++ library of recognition of bar codes developed in-house with the support of the National Agency for research and innovation of the Uruguay (ANII). This library, unlike those used to read barcodes of books, allows to read longer bar codes such as those present in utility bills, in a very heterogeneous universe of cameras, like the ones we have in Latin America.</p>
<p>The company&#8217;s plan is to consolidate a case of success in Uruguay to then expand to countries in Latin America, making agreements with banks in the region, where the payment of invoices is a headache and cell phones are growing exponentially.</p>
<p>Marcelo Lanfranconi<br />
<a href="mailto:marcelo@mail.paganza.com">marcelo@mail.paganza.com</a><br />
CTO – Paganza</p></blockquote>
<p>This is another success story of a startup company investing a really small amount of time and money to bring their solution to BlackBerry 10. Additionally, this is another success story of the commitment of our developer relations team and how the one-on-one support makes a huge difference. Come and join us!</p>
<p>Do you want to know more about the BlackBerry Innovation Center and how you can leverage it? Ping me on Twitter &#8211; <a href="http://twitter.com/bryantafel" target="_new">@bryantafel</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/13314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/13314/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13314&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/02/blackberry-10-paganza/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01a58649dedc793ca2c840470f5af775?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">btafel</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/02/devblog-paganza-e1360055877119.png" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry Java to BlackBerry 10 Cascades Porting Series – Part 1: Introduction</title>
		<link>http://devblog.blackberry.com/2013/01/port-java-to-cascades-part-1/</link>
		<comments>http://devblog.blackberry.com/2013/01/port-java-to-cascades-part-1/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 17:07:38 +0000</pubDate>
		<dc:creator>Gurtej S.</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[app porting]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[port app to BlackBerry 10]]></category>
		<category><![CDATA[porting]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=13401</guid>
		<description><![CDATA[With all the excitement around BlackBerry 10 launch, one key request from our developer community is how to bring your existing BlackBerry Java applications to BlackBerry 10. As always, we at RIM developer relations constantly strive to break any barriers for developers. Starting today, we will be publishing a series of blog posts specifically designed [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13401&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-13402" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/01/bb10-porting.jpg?w=557&#038;h=408" width="557" height="408" /></p>
<p>With all the excitement around BlackBerry 10 launch, one key request from our developer community is how to bring your existing BlackBerry Java applications to BlackBerry 10. As always, we at RIM developer relations constantly strive to break any barriers for developers.</p>
<p>Starting today, we will be publishing a series of blog posts specifically designed to help port your existing BlackBerry Java application to BlackBerry 10. As you may already be aware, BlackBerry Java is no longer supported on BlackBerry 10. Our goal here is to provide you all the info needed to quickly migrate your app functionality.</p>
<p>The BlackBerry 10 Native SDK enables you to develop applications in C/C++ and provides an open-source friendly environment for porting POSIX compliant code. It comes with the Cascades framework allowing you to build visually rich applications. The key focus of this development guide is specifically on BlackBerry 10 Cascades development. For more information on BlackBerry Native Development, please refer to <a href="http://developer.blackberry.com/native/" target="_new">http://developer.blackberry.com/native/</a></p>
<p><span id="more-13401"></span></p>
<p><img class="aligncenter size-full wp-image-13403" alt="cascades-porting-2" src="http://rimdevblog.files.wordpress.com/2013/01/cascades-porting-2.jpg?w=600&#038;h=265" width="600" height="265" /></p>
<h3><strong>What is Cascades?</strong></h3>
<p>BlackBerry Cascades is built using the Qt framework, which allows Cascades to leverage the Qt object model, event model and threading model. BlackBerry Cascades enables you to develop your UI in C++, Qt Modeling Language (QML), or both. Qt Modeling Language (QML) is a declarative language that&#8217;s based on JavaScript and is included as part of Qt. You can use QML to describe the structure and behavior of a set of UI controls. BlackBerry Cascades uses a modified version of QML to let you create UIs for your apps.</p>
<p>One fundamental importance when looking to develop your BlackBerry Cascades application is deciding when to use QML or C++. You can use both of these languages in your application, but as a general rule of thumb you should use QML for your UI development and C++ for your business logic. Please refer to the below link more information on BlackBerry Cascades development and to download Native SDK and BlackBerry 10 Simulator. <a href="https://developer.blackberry.com/cascades/" target="_new">https://developer.blackberry.com/cascades/</a></p>
<h3><strong>API Feature Parity</strong></h3>
<p>One of the main challenges while migrating app functionality from BlackBerry Java to Cascades is finding the correct mapping of APIs. To simplify this process, below is an API Feature Parity table that covers the most common BlackBerry Java APIs and their corresponding equivalent API in Cascades.</p>
<p><img class="aligncenter size-full wp-image-13412" alt="cascades-table" src="http://rimdevblog.files.wordpress.com/2013/01/cascades-table1.jpg?w=593&#038;h=959" width="593" height="959" /></p>
<p>As you can see from the above table image, most of the common Java APIs have a direct mapping in Cascades making it easy for you to port your existing BlackBerry Java application to BlackBerry 10.</p>
<p>Please stay tuned for series Part 2 – Application Life Cycle.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/13401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/13401/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13401&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/01/port-java-to-cascades-part-1/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/01/bb10-porting.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/01/cascades-porting-2.jpg" medium="image">
			<media:title type="html">cascades-porting-2</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/01/cascades-table1.jpg" medium="image">
			<media:title type="html">cascades-table</media:title>
		</media:content>
	</item>
		<item>
		<title>Buffer now available for BlackBerry 10</title>
		<link>http://devblog.blackberry.com/2013/01/buffer-blackberry-10/</link>
		<comments>http://devblog.blackberry.com/2013/01/buffer-blackberry-10/#comments</comments>
		<pubDate>Fri, 25 Jan 2013 14:24:22 +0000</pubDate>
		<dc:creator>Luca Filigheddu</dc:creator>
				<category><![CDATA[Android Development]]></category>
		<category><![CDATA[BlackBerry World]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 10 app]]></category>
		<category><![CDATA[Buffer]]></category>
		<category><![CDATA[cross-posting]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[porting]]></category>
		<category><![CDATA[social media]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=13217</guid>
		<description><![CDATA[Leo and Joel from Buffer are definitely two smart guys. We’ve never met in person, but have been in touch for more than a year in regards to their beautiful service, Buffer. What’s Buffer? Well, the name speaks for itself &#8211; it’s a service that allows you to send your status updates to a buffer [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13217&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://twitter.com/leowid" target="_new">Leo</a> and <a href="http://twitter.com/joelgascoigne">Joel</a> from <a href="http://bufferapp.com/" target="_new">Buffer</a> are definitely two smart guys. We’ve never met in person, but have been in touch for more than a year in regards to their beautiful service, <a href="http://www.bufferapp.com" target="_new">Buffer</a>.</p>
<p>What’s Buffer? Well, the name speaks for itself &#8211; it’s a service that allows you to send your status updates to a buffer in order to post them to multiple social networks at once and stagger these posts throughout the day. This way, you won’t flood your followers/social media friends with tons of posts all at once. More importantly, you can choose the time of day that you want the posts to be published, in order to have the best visibility in terms of audience.</p>
<p>You can even keep track of the number of retweets, likes and clicks that your posts get. Smart, right?</p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/01/devblogbufferpic1.jpg?w=180" /> <img alt="" src="http://rimdevblog.files.wordpress.com/2013/01/devblogpic2.jpg?w=180" /></p>
<p><span id="more-13217"></span></p>
<p>After they launched the service more than a year ago, they built an app for iOS and Android that quickly became successful.</p>
<p>A few weeks ago, I contacted them again to inform them about my new adventure here at RIM and to ask them about the possibility of porting Buffer to BlackBerry 10. They are not a big company, so they need to prioritize tasks and were very busy at the time. One option was to <a href="http://devblog.blackberry.com/2011/12/android-aggregator-submit-apps-blackberry/" target="_new">port their Android app to BlackBerry 10</a> and then to plan the development of a native Cascades version later.</p>
<p>I am happy to announce that as of last week, Buffer was made available for <a href="http://appworld.blackberry.com/webstore/content/20385669/?lang=en" target="_new">download from BlackBerry World.</a></p>
<p>Do you think that 24 hours after publication, and given that BlackBerry 10 devices are not commercially available yet, we could impact their service? Well, apparently, YES!</p>
<p>Here is what Leo says:</p>
<p><i>&#8220;Converting Buffer to the new BlackBerry 10 platform couldn&#8217;t have been any easier. It took us less than one day to do so and it was running super smoothly immediately. Seeing hundreds of downloads within days and great reviews too was an incredibly overwhelming response from our userbase.&#8221;</i><br />
<i>&#8220;Being part of the new BlackBerry 10 platform is super exciting for us. What few people know is that BlackBerry users are the second largest mobile traffic for Buffer, even before Android. So being able to provide a slick app in such a hassle free way made our life extremely easy. And, a large part of our userbase is a lot happier and more productive. Happy Buffering from BlackBerry! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8220;</i></p>
<p>Impressive, right? I really recommend giving Buffer a try &#8211; the BlackBerry 10 app in conjunction with their browser extensions is a killer social media weapon!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/13217/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/13217/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13217&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/01/buffer-blackberry-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5f08858996f1a3f396417883f8d8a70?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lfiligheddu</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/01/devblogbufferpic1.jpg?w=180" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/01/devblogpic2.jpg?w=180" medium="image" />
	</item>
		<item>
		<title>Port-A-Thon Updates</title>
		<link>http://devblog.blackberry.com/2013/01/port-a-thon-updates/</link>
		<comments>http://devblog.blackberry.com/2013/01/port-a-thon-updates/#comments</comments>
		<pubDate>Wed, 23 Jan 2013 23:05:27 +0000</pubDate>
		<dc:creator>jesseariss</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Port-A-Thon]]></category>
		<category><![CDATA[porting]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=13246</guid>
		<description><![CDATA[This is such an exciting time to create applications for BlackBerry. Many thanks to our dedicated developer community for submitting more than 40,000 apps during our five Port-A-Thons! Let’s talk about one of the best parts of the Port-A-Thons; the rewards. Here’s an update on the reward process that highlights how and when things will [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13246&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is such an exciting time to create applications for BlackBerry. Many thanks to our dedicated developer community for submitting more than 40,000 apps during our five Port-A-Thons!</p>
<p>Let’s talk about one of the best parts of the Port-A-Thons; <b>the rewards</b>. Here’s an update on the reward process that highlights how and when things will happen.</p>
<p><b>Updated Timelines</b></p>
<p>For the <b>All Aboard, Community, Android</b> and <b>Last Chance Port-A-Thon’s</b>, we’re extending the deadline to get your app approved.</p>
<p>You will now have up to <b>February 18, 2013</b> to get your apps approved. This fits nicely with the deadline to apply for the $10k Developer Commitment.</p>
<p><b>Please note:</b> The Got Game Port-A-Thon is now closed.</p>
<p><span id="more-13246"></span></p>
<p><b>Rewards Process</b></p>
<p>Rewards are distributed to vendors <b>only after all the apps have been put “up for sale”</b>. By default, apps are automatically put “up for sale” when approved.  If you chose otherwise, please take a moment to put them “up for sale” and ensure you take this step to receive your rewards.</p>
<p><b>Cash Rewards</b> are distributed by our program partner Milestone. You will receive an email to confirm payment information from <a href="mailto:rimredemption@milestoneintegrated.com">rimredemption@milestoneintegrated.com</a> . If you live in a country serviced by PayPal, you will need to confirm your PayPal Account. If you live in a country not serviced by PayPal, you will need to provide wire payment details. After this information is provided you will receive your payment in 4-6 weeks. We are working hard to have the money transferred as quickly as possible.</p>
<p><b>Device rewards</b> are distributed by Touchstone. You will receive an email to confirm shipping information from <a href="mailto:BlackBerryPlayBookOffer@tmgideas.com">BlackBerryPlayBookOffer@tmgideas.com</a>. After confirming your shipping details, the device(s) will be shipped as quickly as possible. Note that RIM pays all shipping costs and duties. If you are required to pay these fees, please contact <a href="mailto:BlackBerryPlayBookOffer@tmgideas.com">BlackBerryPlayBookOffer@tmgideas.com</a> with the details and you will be reimbursed.</p>
<p><b>Trip rewards</b> are distributed by HRG. You will receive an email from A Thousand Words Marketing and HRG.</p>
<p><b>My apps are approved, when do I see reward emails?</b></p>
<p>To mirror the extension of the submission deadlines, the reward emails will extend as follows. We take a snapshot of approved apps at the end of day each Friday. Information is then provided to Touchstone (for cash), Milestone (for devices) and HRG/Thousand Words Marketing (for Trips) who then send out the reward emails on Tuesdays.</p>
<p>If you notice your apps are approved, please wait until the following Tuesday to get your reward emails.</p>
<p><b>What happens if you are not able to attend BlackBerry Jam?</b></p>
<p>Given the new deadline extensions, we realize that trip winners may have some logistical challenges getting to Amsterdam for the BlackBerry Jam Europe 2013.  For those that are unable to attend BlackBerry Jam Europe 2013, we will extend the trip offer to BlackBerry Live in Orlando on May 14-16, 2013 under the same conditions. Please note that the trips are non-transferrable.<b></b></p>
<p><b>When are the draws happening for Community Port-A-Thon?</b></p>
<p>The Community Port-A-Thon draw for Trips and devices will be held on February 18, giving participants additional time to get their apps approved and become eligible for the draw.</p>
<p>As the draw happens after BlackBerry Jam Europe, the trip will be for BlackBerry Live in Orlando on May 14-16, 2013. To make this even more exciting, we’re adding $500 USD spending money for the trip winners.</p>
<p>The draws for the All Aboard and Got Game Port-A-Thons have been drawn and winners have been notified.</p>
<p><b>Last Chance Port-A-Thon</b></p>
<p>If you participated in the Last Chance Port-A-Thon last weekend, expect to be notified of your eligibility by Friday, January 25. This email will inform you of the apps that were submitted during the Port-A-Thon and your eligibility for rewards. Please note that those apps must be “Up for Sale” on or before February 18, 2013 to be eligible to receive an award.</p>
<p><b>Thanks for all your apps!</b></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/13246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/13246/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13246&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/01/port-a-thon-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/80c19748589d76bbaeb5b9b6a2c42549?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jesseariss</media:title>
		</media:content>
	</item>
	</channel>
</rss>
