<?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; BlackBerry 7</title>
	<atom:link href="http://devblog.blackberry.com/tag/blackberry-7/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; BlackBerry 7</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 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>BlackBerry Java to BlackBerry 10 Cascades Porting Series – Part 3: Networking</title>
		<link>http://devblog.blackberry.com/2013/02/java-to-cascades-part-3/</link>
		<comments>http://devblog.blackberry.com/2013/02/java-to-cascades-part-3/#comments</comments>
		<pubDate>Mon, 25 Feb 2013 14:53:20 +0000</pubDate>
		<dc:creator>Paul Bernhardt</dc:creator>
				<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 7]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[native]]></category>
		<category><![CDATA[networking]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=13908</guid>
		<description><![CDATA[Networking in BlackBerry 7 OS was based on the Connector.open() paradigm, where you would specify the protocol and transport in the connection string (“http://www.example.com;deviceside=true”), and get back a Connection object of a certain type (HttpConnection, for example). Networking in BlackBerry 10 is done through the QNetwork module. You no longer need to worry about transport [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13908&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Networking in BlackBerry 7 OS was based on the Connector.open() paradigm, where you would specify the protocol and transport in the connection string (“http://www.example.com;deviceside=true”), and get back a Connection object of a certain type (HttpConnection, for example).</p>
<p><a href="https://developer.blackberry.com/cascades/documentation/device_comm/networking/index.html">Networking</a> in BlackBerry 10 is done through the <a href="https://developer.blackberry.com/cascades/reference/qtnetwork.html" target="_new">QNetwork</a> module. You no longer need to worry about transport selection. Your typical HTTP communication can be handled through <a href="https://developer.blackberry.com/cascades/reference/qnetworkaccessmanager.html" target="_new">QNetworkAccessManager</a>. It provides methods such as get() and post(), which take a <a href="https://developer.blackberry.com/cascades/reference/qnetworkrequest.html" target="_new">QNetworkRequest</a> and then asynchronously return a <a href="https://developer.blackberry.com/cascades/reference/qnetworkreply.html" target="_new">QNetworkReply</a>.</p>
<p><strong>For example:</strong></p>
<pre>QUrl *url = new QUrl("http://www.iana.org/domains/example/");

    QNetworkAccessManager *manager = new QNetworkAccessManager(this);

    connect(manager, SIGNAL(finished(QNetworkReply*)),
    		this, SLOT(replyFinished(QNetworkReply*)));

    manager-&gt;get(QNetworkRequest(*url));</pre>
<p><strong>And then in your replyFinished slot:</strong></p>
<pre>void App::replyFinished(QNetworkReply* reply) {
	qDebug() &lt;readAll();

	// Call deleteLater to make sure the reply gets cleaned up
	reply-&gt;deleteLater();
}</pre>
<p>You can also do TCP with <a href="https://developer.blackberry.com/cascades/reference/qtcpsocket.html" target="_new">QTCPSocket</a> and <a href="https://developer.blackberry.com/cascades/reference/qtcpserver.html" target="_new">QTCPServer</a>, UDP with <a href="https://developer.blackberry.com/cascades/reference/qudpsocket.html">UDPSocket</a> , and FTP with <a href="https://developer.blackberry.com/cascades/reference/qftp.html" target="_new">QFtp</a>.</p>
<p>And of course, lower level <a href="http://developer.blackberry.com/native/reference/bb10/library_support_at_a_glance.html" target="_new">libraries</a> such as <a href="http://curl.haxx.se/" target="_new">cURL</a> are available if you should require them.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/13908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/13908/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13908&#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-3/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>
	</item>
		<item>
		<title>Introducing Proximity Gaming with NFC</title>
		<link>http://devblog.blackberry.com/2012/10/proximity-gaming-nfc/</link>
		<comments>http://devblog.blackberry.com/2012/10/proximity-gaming-nfc/#comments</comments>
		<pubDate>Tue, 16 Oct 2012 17:06:03 +0000</pubDate>
		<dc:creator>mdwrim</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[How-to]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 7]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Near Field Communications]]></category>
		<category><![CDATA[nfc]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Proximity Gaming]]></category>
		<category><![CDATA[sample code]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=10865</guid>
		<description><![CDATA[Amongst the many interesting things I’m lucky enough to get involved with in my role on the RIM® Developer Relations team, Near Field Communications (NFC) has become very much center stage for me over the last year. Some readers of this post may be familiar with the NFC-related articles and code samples that I’ve co-authored [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=10865&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Amongst the many interesting things I’m lucky enough to get involved with in my role on the RIM® Developer Relations team, Near Field Communications (NFC) has become very much center stage for me over the last year. Some readers of this post may be familiar with the NFC-related articles and code samples that I’ve co-authored with my buddy John Murray (<a href="http://twitter.com/jcmrim" target="_new">@jcmrim</a>), which you can find listed in our <a href="http://supportforums.blackberry.com/t5/Java-Development/NFC-Article-and-Code-Index/ta-p/1538775" target="_new">NFC Article and Code Index</a>.</p>
<p>Now it has to be said that it wasn’t the best summer here in the UK (though fortunately the weather gave us a break just in time for the Olympics!) and so I occasionally found myself at the weekend with “fine weather-dependent plans” cancelled and time on my hands. One such weekend, I was thinking about NFC and my thoughts turned to discussions I’d had with John about whether NFC could enrich games and the gaming experience in some way.</p>
<p>The world of computer games has changed somewhat in the 30-something years I’ve been playing them! It’s gone from text-based adventure games (“go north!”) played on a PDP-11 with a teletype and no screen, through the block graphics of Lunar Lander on a Commodore Pet, and onwards through Space Quest, Civilisation I, the Monkey Island series and (many) more favourites.</p>
<p>In the beginning and for many years, games were single-player &#8212; or at least they were single machine games. More than one player could play, but you’d have to share the keyboard or take turns. Then came LAN games, and this evolved into Internet-based gaming with huge online gaming communities (without whom, I have no doubt, the world would now be over-run with zombies). The truly great thing about online gaming is that you need never know that “goreslayer765” who just destroyed you in your favourite game is actually a 9-year-old with far more knowledge of automatic weapons than can possibly be healthy. I mean, whose fragile ego could handle knowing that?</p>
<p>So, both extreme ends of the single player vs. multiplayer spectrum are well catered to these days. But in what way might NFC enrich the gaming experience, and in what kind of games? I had a quick brainstorm with John on IM and we came up with a few use cases:</p>
<p><span id="more-10865"></span></p>
<table border="5">
<tbody>
<tr>
<td><strong>Start Game</strong></td>
<td>Two-player games could be kicked off by the two players touching devices. This could trigger an NFC based interaction which your application drives, the outcome of which could be the decision as to which of the players is “Player 1” and which is “Player 2” for example.</td>
</tr>
<tr>
<td><strong>Your Turn</strong></td>
<td>Turn based games would work well with NFC being used to indicate “it’s your turn now,” with a player taking their turn and then touching the other player’s device with theirs.</td>
</tr>
<tr>
<td><strong>Pass it on</strong></td>
<td>It could be cool to create digital tokens of some sort that you could pass to other players by touching their device with yours. With a web component of your game, you could perhaps track your token as it moves from player to player and perhaps travels the world!</td>
</tr>
<tr>
<td><strong>Been there</strong></td>
<td>Games involving visiting physical locations could use NFC tags to allow players to “prove” they’ve been to a place and found the item with the tag. Each tag would contain unique content, including perhaps clues on how to find the next game location. Touching and reading the tag from your application would establish the “been there” credentials required.</td>
</tr>
</tbody>
</table>
<p>But why would you want to do this? After all, there are plenty of other ways to trigger “new game” or “it’s your turn now” and to share data across a network. Well, the appeal of using NFC is simply this: it adds a physical, tactile element to the game. You’re sitting right next to the person you’re playing with, and having to touch devices at intervals in the game could add a novel and fun element to the experience.</p>
<p>We then realized our most important task. We needed a name for the phenomenon of NFC-enabled games that we were now thinking about. In a flash, I had it! Please welcome “<strong>Proximity Gaming</strong>” to the world!</p>
<p>Armed with a few ideas, we decided to develop a game as a proof of concept and set about thinking about what the first game would be and how it would work. We decided we’d develop an NFC-enabled version of “tic tac toe” or “noughts and crosses” as it’s known in the UK.</p>
<p>We decided to use NFC in two places. Firstly, players would have to touch devices to start a game, and secondly, they’d touch devices to indicate “it’s your turn now”.</p>
<p>We had to consider a few issues regarding the implementation. It was immediately apparent that we’d have to pass some kind of message from device A to device B and that we’d probably need several message types. In other words, we’d need a simple protocol.</p>
<p>We could also see several technical ways of sending a message from one device to another. We could use virtual target emulation in theory, or maybe we could use one of the two NFC peer-to-peer APIs, SNEP (Simple NDEF Exchange Protocol) or LLCP (Logical Link Control Protocol).</p>
<p>We dismissed target emulation and focused on the peer-to-peer options, since this was clearly a peer-to-peer scenario. We concluded that either SNEP or LLCP could be used, but that SNEP would be a little easier to work with &#8212; LLCP being a lower-level connection-oriented protocol whereas SNEP is a higher-level message-oriented protocol. We’d worked with both in the past, so we had a pretty good feel for what the coding would be like.</p>
<p>In conclusion, we decided to invent a simple message-oriented protocol and use SNEP as the NFC protocol, which would transport game messages between devices. The UI design was to be basic: an initial screen that prompted players to touch devices to start a new game; a screen for “player 1” to choose either noughts or crosses; and the main game screen upon which to place noughts and crosses.</p>
<p>We also decided to implement the game for both BlackBerry® 7 OS using Java®, and our BlackBerry® 10 Dev Alpha devices using C++/Qt/Cascades. Being able to play the game between a BlackBerry 7 device and a BlackBerry 10 device would be a nice proof of the interoperability of NFC between generations of BlackBerry technology.</p>
<p>Here are some screen shots from the proof of concept game, first from the BlackBerry 7 version of the game:</p>
<p><img class="aligncenter size-full wp-image-10868" title="" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2012/08/proximity-gaming-1.jpg?w=507&#038;h=382" height="382" width="507" /></p>
<p style="text-align:center;"><i>Figure 1 &#8211; New game screen</i></p>
<p><img class="aligncenter size-full wp-image-10867" title="" alt="" src="http://rimdevblog.files.wordpress.com/2012/08/proximity-gaming-2.jpg?w=507&#038;h=382" height="382" width="507" /></p>
<p style="text-align:center;"><i>Figure 2 &#8211; Player 1, choose nought or cross</i></p>
<p><img class="aligncenter size-full wp-image-10866" title="" alt="" src="http://rimdevblog.files.wordpress.com/2012/08/proximity-gaming-3.jpg?w=507&#038;h=382" height="382" width="507" /></p>
<p style="text-align:center;"><i>Figure 3 &#8211; Main game screen</i></p>
<p>And here are some screen shots from the proof of concept game, from the BlackBerry 10 version of the game:</p>
<p style="text-align:center;"><img title="" alt="" src="http://rimdevblog.files.wordpress.com/2012/10/proximity-gaming-4.jpg?w=155" width="155" /> <img title="" alt="" src="http://rimdevblog.files.wordpress.com/2012/10/proximity-gaming-5.jpg?w=155" width="155" /> <img title="" alt="" src="http://rimdevblog.files.wordpress.com/2012/10/proximity-gaming-6.jpg?w=155" width="155" /><br />
<i>Figure 4 &#8211; New game screen; Figure 5 &#8211; In game; Figure 6 &#8211; Game over</i></p>
<p>Thoughts on the “game protocol” crystalized properly as we worked through prototyping the game and we found we needed the following message types in the simple protocol:</p>
<table border="5">
<tbody>
<tr>
<td><strong>Bid for player 1</strong></td>
<td>The act of requesting a new game by touching devices would also determine which of the two players would be Player 1 and get to choose which of noughts or crosses to play with. The “bid” message would be exchanged by both devices and contain a random number. The device that had produced the highest number would “win” the bid and become Player 1.</td>
</tr>
<tr>
<td><strong>End of turn</strong></td>
<td>After placing their nought or cross on the board, players would touch devices so that the other player’s game instance would be informed it could now let the player update the game screen. The protocol message to indicate “end of turn” would need to include information about the turn taken by the current player; specifically, which square on the board they had updated in their turn.</td>
</tr>
<tr>
<td><strong>Reset</strong></td>
<td>There would be occasions where the game state in a device would need to be reset and a suitable message type in the protocol would allow this.</td>
</tr>
</tbody>
</table>
<p>We’d like to tell you how we went about coding the game.</p>
<p>If you want to know how to use SNEP in general terms, we’ve written articles on the subject for both BlackBerry 7 and BlackBerry 10 and sample code too. You’ll find details here:</p>
<p><a href="http://supportforums.blackberry.com/t5/Java-Development/NFC-Peer-to-Peer-Communications-with-SNEP/ta-p/1532841" target="_new">BlackBerry 7 – Peer to Peer Communication with SNEP</a><br />
<a href="http://supportforums.blackberry.com/t5/Native-Development/NFC-on-BlackBerry-10-peer-to-peer-communication-using-SNEP/ta-p/1758859" target="_new">BlackBerry 10 – Peer to Peer Communication with SNEP</a></p>
<p>There’s a key point here: you could implement your Proximity Gaming ideas for either BlackBerry 7 or BlackBerry 10 because both have the specific types of NFC peer-to-peer capabilities that you will need.<br />
Harnessing NFC SNEP in the way we wanted for our game was easy. The APIs themselves are very straightforward to use. For BlackBerry 7 we designed some Java classes, which represent the various message types in the game protocol. This was standard stuff if you’re accustomed to working with protocols, and we ended up with an abstract class called ProtocolMessage and a series of concrete sub-classes, one for each message type. Each of these classes implemented a marshall and demarshall method so that we could easily swap between byte array representations, which would be exchanged over NFC SNEP and Java objects for internal use in the application.</p>
<p>Here&#8217;s an example of one of the protocol message classes:</p>
<pre>public class ProtocolMessageMasterBid extends ProtocolMessage {

    private int bid;

    public ProtocolMessageMasterBid() {
        message_id = Constants.PROTOCOL_MASTER_BID;
        Random rand = new Random(System.currentTimeMillis());
        bid = rand.nextInt(1000000);
    }

    public byte[] marshall() {
        byte [] bid_bytes = Utilities.toBytes(bid);
        byte [] bytes = new byte[1+bid_bytes.length];
        bytes [0] = message_id;
        System.arraycopy(bid_bytes, 0, bytes, 1, bid_bytes.length);
        return bytes;
    }

    public void demarshall(byte[] bytes) {
        if (bytes.length != 5) {
            Utilities.log("XXXX invalid parameter length passed to ProtocolMessageMasterBid demarshall:"+ bytes.length);
            return;
        }
        message_id = bytes[0];
        bid = Utilities.toInt(bytes,1);
    }

    public int getBid() {
        return bid;
    }

    public void setBid(int bid) {
        this.bid = bid;
    }

    public String toString() {
        String string = super.toString() + ",ProtocolMessageMasterBid" + ",bid="+bid;
        return string;
     }
}</pre>
<p>We also implemented classes called NfcReceiver and NfcSender, which implemented NDEFMessageListener and NDEFMessageBuilder respectively and provided the basic mechanism for sending and receiving my protocol messages.</p>
<p>For BlackBerry 10, life was actually simpler and we just needed to create message using the Qt QbyteArray class and then utilize the BlackBerry 10 native APIs for NFC, as shown below:</p>
<pre>void NfcWorker::sendTurnData(bps_event_t *bps_event) {
	nfc_event_t *nfc_event;
	nfc_target_t* target;
	nfc_ndef_record_t* myNdefRecord;
	nfc_ndef_message_t* myNdefMessage;
	// Obtain NFC target object from our BPS NFC event object
	//------------------------------------------------------------------------------
	CHECK(nfc_get_nfc_event(bps_event, &amp;nfc_event));
	CHECK(nfc_get_target(nfc_event, &amp;target));
	//------------------------------------------------------------------------------

	QByteArray ba;
	ba.resize(9);
	ba[0] = 2; // turn over message ID
	// tile changed
	ba[1] = 0;
	ba[2] = 0;
	ba[3] = 0;
	ba[4] = _state-&gt;lastSelection();
	int ls = _state-&gt;lastSelection();
	// symbol changed
	ba[5] = 0;
	ba[6] = 0;
	ba[7] = 0;
	ba[8] = _state-&gt;mySymbol();
	int ms = _state-&gt;mySymbol();
	_state-&gt;mySymbol();
	myNdefRecord = makeTurnOverRecord(ba.constData());
	//------------------------------------------------------------------------------
	CHECK(nfc_create_ndef_message(&amp;myNdefMessage));
	//------------------------------------------------------------------------------
	CHECK(nfc_add_ndef_record(myNdefMessage, myNdefRecord));
	qDebug() &lt;&lt; "XXXX Pushing NDEF message over SNEP";
	//------------------------------------------------------------------------------
	CHECK(nfc_push_ndef_message(target, myNdefMessage));
	//------------------------------------------------------------------------------
	CHECK(nfc_delete_ndef_message(myNdefMessage, true));
	CHECK(nfc_destroy_target(target));
}</pre>
<p>So, having designed and implemented a message-oriented protocol and coded classes which used NFC SNEP to transport those messages between devices, the rest of the effort that rainy weekend was spent on standard game development issues like creating the UI. The UI was really easy to create for the BlackBerry 10 version using Cascades™, and took a fraction of the time and effort we spent on the BlackBerry 7 Java version of the game. In both cases, the NFC part was also quite easy and took relatively little effort as a portion of the whole application.</p>
<p>The next step was to find some guinea pigs to test the application out. (Not real guinea pigs, of course &#8212; their paws are too small and they have claws that make working with a touch screen problematic. So instead, we decided to use humans &#8212; our respective friends and family to be precise. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p>Testing was informal. In my case, I explained I’d developed a two-player game that allowed you to take certain actions just by touching the two devices back to back. My guinea pigs generally looked a bit blank or even cynical at this point. “Just touch them together? Really?!” But with a little coaxing I got them started and watched them carefully.</p>
<p>At the very start of the game, the two players are instructed to touch devices to start the game. Looking a little unsure at first, the players touched devices and held them together for a second. The devices responded, vibrating to indicate an NFC message had been received, and the game moved on to the next screen to allow the selected Player 1 to choose noughts or crosses. At this point, the expressions on the players’ faces changed &#8212; from expressions that suggested they were being asked to participate in a black magic ritual to sheer delight with big smiles all around! And from that point, there was no stopping them. They were each playing on devices with touch screens – the BlackBerry® Bold™ 9900 and 9790 smartphones, to be precise – so selecting a place to put their mark on the game “board” was simply a case of touching the screen. And passing turns to the other player? They just touched the devices together, of course!</p>
<p>Here’s a video showing the game in use:</p>
<p style="text-align:center;"><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='560' height='315' src='http://www.youtube.com/embed/ApEO_WJWlZM?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p style="text-align:center;">[ <a href="http://www.youtube.com/watch?v=ApEO_WJWlZM" target="_new">YouTube link for mobile viewing</a> ]</p>
<p>The verdict was very positive. Players liked the idea in general and enjoyed the tactile element of the game play. It seemed that Proximity Gaming was a big hit!</p>
<p>The two versions of our NFC-enabled tic tac toe games are available with full source code from our github repositories here:</p>
<p><a href="https://github.com/blackberry/Samples-for-Java/tree/master/NFC/TouchTicTacToe" target="_new">https://github.com/blackberry/Samples-for-Java/tree/master/NFC/TouchTicTacToe</a><br />
<a href="https://github.com/blackberry/Cascades-Community-Samples/tree/master/TouchTicTacTen" target="_new">https://github.com/blackberry/Cascades-Community-Samples/tree/master/TouchTicTacTen</a></p>
<p>So over to you, BlackBerry developers! How could you use NFC in your BlackBerry smartphone game?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/10865/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/10865/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=10865&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/10/proximity-gaming-nfc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d86c7fdd0d15b754b2760af4536923b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mdwrim</media:title>
		</media:content>

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

		<media:content url="http://rimdevblog.files.wordpress.com/2012/08/proximity-gaming-2.jpg" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2012/08/proximity-gaming-3.jpg" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2012/10/proximity-gaming-4.jpg" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2012/10/proximity-gaming-5.jpg" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2012/10/proximity-gaming-6.jpg" medium="image" />
	</item>
		<item>
		<title>The NFC Webinar Series</title>
		<link>http://devblog.blackberry.com/2012/10/nfc-webinar-series/</link>
		<comments>http://devblog.blackberry.com/2012/10/nfc-webinar-series/#comments</comments>
		<pubDate>Mon, 01 Oct 2012 17:02:11 +0000</pubDate>
		<dc:creator>mdwrim</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 7]]></category>
		<category><![CDATA[Near Field Communications]]></category>
		<category><![CDATA[nfc]]></category>
		<category><![CDATA[NFC Webinar Series]]></category>
		<category><![CDATA[webinar]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=11145</guid>
		<description><![CDATA[On October 4th at 10:00 AM EST, we kick off the first in a series of webinars on the subject of Near Field Communications (NFC). NFC is in the media a lot these days, but usually in the context of contact-less mobile payment solutions. Through our series of webinars, we plan to explain and demonstrate [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=11145&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:center;"><img class="aligncenter  wp-image-11308" title="Consumer" src="http://rimdevblog.files.wordpress.com/2012/10/bbtag_nfc_dakota_apollo_120204-232_bg_q_72dpi-1.jpg?w=517&#038;h=344" alt="TITLE_IMAGE" width="517" height="344" /></p>
<p>On October 4th at 10:00 AM EST, we kick off the first in a series of <a href="http://www.blackberrydeveloperevents.com/events/webcast/registration/register.html?scoid=1067172297" target="_blank">webinars on the subject of Near Field Communications</a> (NFC).</p>
<p>NFC is in the media a lot these days, but usually in the context of contact-less mobile payment solutions. Through our series of webinars, we plan to explain and demonstrate how NFC has great potential for allowing the user to interact with the physical world in all manner of scenarios, and that applications of all types can benefit from a sprinkling of NFC magic. Non-developers will learn all about the concepts around NFC and the ways in which it can be exploited. Developers will learn how to code various types of NFC function for the BlackBerry® 7 OS and BlackBerry® 10. We&#8217;ll be leaving no NFC stone unturned as we make a structured and thorough journey through the many aspects and capabilities of NFC!</p>
<p>On October 4th, we&#8217;ll start the ball rolling with &#8220;An introduction to NFC on BlackBerry&#8221;. This session is aimed at non-developers and developers who want to start from scratch and learn about the most fundamental aspects of NFC; what it is, what you can do with it, how much effort is required, skills required, and so on. Developers are more than welcome (as always!) but this session will not look at code. The sessions that follow will include plenty of code and demonstrations too.</p>
<p>After this, initial kick off session, we have the following two sessions scheduled:</p>
<p><strong>18th October (10:00 AM EST)</strong> &#8211; Working with NFC Tags on BlackBerry 10, presented by my learned colleague, John Murray. John is another member of the BlackBerry Developer Relations team who specializes in NFC.</p>
<p><strong>25th October (10:00 AM EST)</strong> &#8211; Working with NFC Tags on BlackBerry 7, presented by myself, Martin Woolley.</p>
<p>After that, we&#8217;ll be scheduling other sessions to cover other aspects of NFC such as peer to peer mode. Watch this space for further news on this.</p>
<p>It&#8217;s forecast that there will be a quarter of a billion mobile NFC users by 2015. Make sure your apps are ready to exploit the NFC phenomenon and join me on October 4th for an introduction to this exciting technological development!</p>
<p>Sign up <a href="http://www.blackberrydeveloperevents.com/events/webcast/registration/register.html?scoid=1067172297" target="_blank">here</a>!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/11145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/11145/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=11145&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/10/nfc-webinar-series/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d86c7fdd0d15b754b2760af4536923b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mdwrim</media:title>
		</media:content>

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

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

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

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

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/connected-apps-1.jpg" medium="image" />
	</item>
		<item>
		<title>New BlackBerry 9220 Smartphone Simulator and Specifications Now Available</title>
		<link>http://devblog.blackberry.com/2012/03/9220-smartphone/</link>
		<comments>http://devblog.blackberry.com/2012/03/9220-smartphone/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 15:17:35 +0000</pubDate>
		<dc:creator>MSohm</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[app world]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[BlackBerry 7]]></category>
		<category><![CDATA[BlackBerry 9220]]></category>
		<category><![CDATA[capabilities]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[simulator]]></category>
		<category><![CDATA[specs]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=8740</guid>
		<description><![CDATA[Introducing a new simulator and specs for the upcoming BlackBerry 9220 smartphone.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=8740&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:center;"><img class="aligncenter size-full wp-image-8813" src="http://rimdevblog.files.wordpress.com/2012/03/blackberry-logo.jpg?w=500&#038;h=164" alt="TITLE_IMAGE" width="500" height="164" /></p>
<p>As noted during <a href="http://devblog.blackberry.com/2011/10/bbx-blackberry-java-sdk-roadmap/" target="_new">BlackBerry DevCon Americas</a>, there would continue to be BlackBerry smartphone releases based on BlackBerry® 7 OS.  Today we’re pleased to provide you with a new developer tool to prepare for this: the BlackBerry® 9220 smartphone simulator.</p>
<p>We have a new simulator available for download on our <a href="http://us.blackberry.com/developers/resources/simulators.jsp" target="_new">simulator download page</a>, or you can download it directly using this link:</p>
<ul>
<li><a href="http://swdownloads.blackberry.com/Downloads/contactFormPreload.do?code=060AD92489947D410D897474079C1477&amp;dl=8ECE54CC2EAA5DBD4B23C19959DF9688" target="_new">BlackBerry 9220 smartphone simulator</a></li>
</ul>
<p>Alongside the launch of the new simulator, we have also opened up the BlackBerry App World™ storefront to allow you to start posting your applications for sale. Many applications designed for the BlackBerry® 9300 smartphone series should be easily ported to this new device with little to no change in the application.</p>
<p>We encourage you to test your applications as soon as possible using the <a href="http://swdownloads.blackberry.com/Downloads/contactFormPreload.do?code=060AD92489947D410D897474079C1477&amp;dl=8ECE54CC2EAA5DBD4B23C19959DF9688" target="_new">new simulator</a>, and then navigate to the <a href="https://appworld.blackberry.com/isvportal/" target="_new">BlackBerry App World vendor portal</a> to post your applications for the BlackBerry 9220 smartphone running BlackBerry® 7.1 OS.</p>
<p><span id="more-8740"></span></p>
<p>The BlackBerry 9220 will support Bluetooth® 2.1 and include the following profiles:</p>
<ul>
<li>Headset Profile (HSP)</li>
<li>Hand Free Profile (HFP)</li>
<li>Address Book Integration using AT commands or OBEX (Object Push)</li>
<li>Phone Book Access Profile (PBAP)</li>
<li>Dial-Up Networking (DUN)</li>
<li>Bluetooth Stereo (A2DP / AVRCP)</li>
<li>Serial Port Profile (SPP)</li>
<li>Secure Simple Pairing (SSP)</li>
<li>A/V Remote Control Version 1.3</li>
<li>Bluetooth Message Access Profile (MAP)</li>
</ul>
<h3><strong>BlackBerry 9220 – Device Info</strong></h3>
<ul>
<li>320 x 240 resolution, 164 dpi</li>
<li>Application Icon size: 46 x 46 pixels</li>
<li>Memory: 512 MB Internal Persistent Storage, 512 MB RAM</li>
<li>2 MP Camera, 5 X digital zoom</li>
<li>QWERTY keyboard</li>
<li>Networks: EDGE, GPRS, GSM</li>
<li>FM Radio</li>
<li>Wi-Fi® 802.11 b/g/n</li>
<li>Mime Type: Mozilla/5.0 (BlackBerry; U; BlackBerry 9220; en-GB) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.316 Mobile Safari/534.11+</li>
</ul>
<h3><strong>BlackBerry 9220 – Multimedia Capabilities</strong></h3>
<p><img class="aligncenter size-full wp-image-8803" title="" src="http://rimdevblog.files.wordpress.com/2012/03/9220-specs2.jpg?w=600&#038;h=766" alt="" width="600" height="766" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/8740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/8740/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=8740&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/03/9220-smartphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/76c7dc9f1e2068196cd724a8bd5bac54?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">msohm</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/03/blackberry-logo.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/03/9220-specs2.jpg" medium="image" />
	</item>
		<item>
		<title>Digging Deep: Understanding BlackBerry Theme Builder – Part 3: Manipulating Themes</title>
		<link>http://devblog.blackberry.com/2012/02/digging-deep-understanding-blackberry-theme-builder-part-3-manipulating-themes/</link>
		<comments>http://devblog.blackberry.com/2012/02/digging-deep-understanding-blackberry-theme-builder-part-3-manipulating-themes/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 21:11:34 +0000</pubDate>
		<dc:creator>garett</dc:creator>
				<category><![CDATA[Theme Development]]></category>
		<category><![CDATA[BlackBerry 7]]></category>
		<category><![CDATA[BlackBerry Theme Builder]]></category>
		<category><![CDATA[BlackBerry Theme Studio 6]]></category>
		<category><![CDATA[theme development]]></category>
		<category><![CDATA[Themes]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=8362</guid>
		<description><![CDATA[The third and final part in our series on modifying BlackBerry Theme Builder to create BlackBerry 7 OS themes.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=8362&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As mentioned in <a href="http://devblog.blackberry.com/2012/01/blackberry-7-theme-development/" target="_new">Part 1 of our “Understanding BlackBerry® Theme Builder”</a> series, when BlackBerry Theme Builder exports themes, it dumps all image and SVG files to the Windows® temp directory, uses them to compile the theme, then deletes the files. The SVG files need to be customized to provide a layout for the target device’s resolution. This portion of the process is done manually and is very difficult, so read this blog post closely!</p>
<p>The first thing that needs to be done is to retrieve the pz_ directory and the pz_ properties file from the Windows temp directory after BlackBerry Theme Builder exports these files , but before the files can be deleted. Doing this manually would likely not work ; it happens very quickly, so you may need to apply permissions to the directory to prevent file deletion.</p>
<p>(<strong>Note:</strong> When changing any system permissions it is extremely important to fully understand the repercussions and only make changes at your own discretion.)</p>
<p>After you have these files saved to a safe place, such as your desktop of a common development directory, you can copy the pz_ properties file to the pz_ directory to keep them all in one place.</p>
<p><span id="more-8362"></span></p>
<p>Next you will need to open the various SVG files in the directory you save and make manual changes to support the resolution and desired layout on the target device. For example, the main SVG wrapper element has width and height attributes; these can be set to the width and height of the target device’s resolution. For any other elements, the width, height, x and y values may need to be set. Here is a list of some elements which can be accessed and modified:</p>
<ul>
<li>xlink:href
<ul>
<li>CurrentDateTime</li>
<li>AlarmIndicator</li>
<li>BatteryLevel</li>
<li>Coverage</li>
<li>SystemStatus</li>
<li>GridIndicators</li>
<li>Roaming</li>
<li>SignalLevel</li>
<li>WLANSignalLevel</li>
<li>GPSMode</li>
<li>Image</li>
<li>OwnerInfo</li>
<li>ProfileIndicator</li>
</ul>
</li>
</ul>
<ul>
<li>Id
<ul>
<li>hs_profile_underlay</li>
<li>hs_profile_entry_icon</li>
<li>hs_profile_focus_entry_icon</li>
</ul>
</li>
</ul>
<ul>
<li>
<ul>
<li>Id</li>
<li>wifi_bullets</li>
</ul>
</li>
</ul>
<p>A forum post will be started where users can contribute additional elements and attributes in the <a href="http://supportforums.blackberry.com/t5/BlackBerry-Themes-Animated/bd-p/plazmic_cdk">BlackBerry® Themes &amp; Animated Graphics</a> board.</p>
<p>After you have modified all of the SVG files, you will need to compile the theme files into CODs that can be installed to your device.</p>
<p>First, you will need to modify the ThemeBundler.contentDir element of the pz_.properties file to point to the current directory. Then you can run the following two commands from a command prompt:</p>
<p><code>\bin\svgc.exe *.svg<br />
\bin\tbbundle.exe pz_.properties<br />
</code></p>
<p>Make sure to watch the console for any errors when parsing the SVG. If all is successful then the theme CODs should be output to the directory specified in the ThemeBundler.outFileDir element of the pz_.properties file.</p>
<p>Your theme is now ready to be loaded for testing onto an actual BlackBerry smartphone!</p>
<p>However, this method of theme creation is not an exact science. The layout of all elements and items will take some time to get right and not all portions of the theme will be fully supported. It may take some time to get it right with several testing iterations:</p>
<p><code>while (theme != perfect)<br />
modify SVG → compile code → load onto device → test thoroughly<br />
</code></p>
<p>It would be a good idea to progress with a small number of modifications until you reach the desired theme state. A few things to note:</p>
<ol>
<ol>
<li>There is a 5MB file size limit for themes on the smartphone , any themes greater than this will be rejected by the target device</li>
<li>All images exported by Theme Studio using this method will be of an incorrect size as you are targeting a different handheld. To optimize the user experience you will need to change each image to the size expected by the target device.</li>
</ol>
</ol>
<p>Once you are satisfied, you can then distribute your theme using your preferred distribution channels, including the BlackBerry App World storefront.</p>
<p>Have you had success creating themes this way? Let us know in the comments!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/8362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/8362/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=8362&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/02/digging-deep-understanding-blackberry-theme-builder-part-3-manipulating-themes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/75e7e69af37da351a3462a17576c2209?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gbeuk</media:title>
		</media:content>
	</item>
		<item>
		<title>Digging Deep: Using BlackBerry Theme Studio 6 to Build Themes for BlackBerry 7 – Part 2</title>
		<link>http://devblog.blackberry.com/2012/02/blackberry-7-theme-development-part-2/</link>
		<comments>http://devblog.blackberry.com/2012/02/blackberry-7-theme-development-part-2/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 15:46:45 +0000</pubDate>
		<dc:creator>garett</dc:creator>
				<category><![CDATA[Theme Development]]></category>
		<category><![CDATA[BlackBerry 7]]></category>
		<category><![CDATA[BlackBerry Theme Builder]]></category>
		<category><![CDATA[BlackBerry Theme Studio 6]]></category>
		<category><![CDATA[theme development]]></category>
		<category><![CDATA[Themes]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=8326</guid>
		<description><![CDATA[Part 2 of our three-part series on how to modify BlackBerry Theme Builder to create themes for BlackBerry 7 OS devices.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=8326&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In <a href="http://devblog.blackberry.com/2012/01/blackberry-7-theme-development/" target="_new">Part 1 of our “Understanding BlackBerry® Theme Builder”</a> series, an overview of how BlackBerry Theme Builder works was provided. This blog post serves as the background to modifying BlackBerry® Theme Studio, which is what we’ll be doing today – read on!</p>
<p>1. The first thing we need to do is modify the device_profiles.properties file to include information for the BlackBerry® smartphone model/series for which we will be creating a theme.</p>
<p><strong>Example:</strong><br />
plazmic.device&lt;NUM&gt;.name=BlackBerry &lt;Model&gt; [Series]<br />
plazmic.device&lt;NUM&gt;.shortName=&lt;Model&gt;<br />
plazmic.device&lt;NUM&gt;.modelName=&lt;ModelName&gt;<br />
plazmic.device&lt;NUM&gt;.file=blackberry/BB&lt;Model&gt;.properties<br />
plazmic.device&lt;NUM&gt;.thumbnail=blackberry/images/BB&lt;Model&gt;_thumbnail.png</p>
<p><strong>&lt;NUM&gt;</strong> Each device listed in this file is incremented in this element. Any new element added should be exactly one higher than the previous listed.</p>
<p><strong>&lt;Model&gt;</strong> The smartphone model you will be creating the theme for (ie. BlackBerry® Bold™ 9900 smartphone)</p>
<p><strong>[Series]</strong> If there are multiple smartphones with the same UI characteristics (ie BlackBerry Bold 9900 smartphone and BlackBerry® Bold™ 9930 smartphone) you can include “Series”</p>
<p><strong>&lt;ModelName&gt;</strong> The commercial name for the smartphone (ie. Bold™, Curve™ or Torch™)</p>
<p><span id="more-8326"></span></p>
<p>2. Next we need to create the BB&lt;Model&gt;.properties file referenced by the device_profiles.properties file. The easiest way to do this would be to copy an existing BB&lt;Model&gt;.properties of a BlackBerry® 6 device, then simply rename the file to reflect the target model and update the resolution (screen.size) with the resolution of the target device.</p>
<p>3. We also need to create some files to let BlackBerry Theme Builder know which theme types are supported for our new device. To do this, copy an existing device’s .properties file:</p>
<p><strong>Example:</strong><br />
&lt;ThemeStudio&gt;\resources\theme\BlackBerry6_480x360\9780BlackBerry6.properties</p>
<p>From there, rename it to suit the model of device being targeted but <strong>keep it in the same directory</strong>.</p>
<p>4. Finally, open this file in a text editor and change the following values:<br />
theme.name = &lt;Model&gt; BlackBerry®6 Custom<br />
theme.device = &lt;Model&gt;<br />
theme.base = BlackBerry®7_&lt;Resolution&gt;_b<br />
theme.alternateBase = //Remove this line entirely from the file, it is not needed<br />
theme.supportedHandheldOs = 6.0,7.0<br />
theme.preferredHandheldOs = 7.0</p>
<p>&lt;Resolution&gt; &#8211; The resolution of the target device’s display</p>
<p>After this is done, you should be able to launch BlackBerry Theme Builder and select the model of device you have just added as well as the theme layout. If this works, then you have successfully modified BlackBerry Theme Builder!</p>
<p>(<strong>Note:</strong> Functionalities such as previewing on device and/or simulator will not work. Test themes need to be loaded outside of BlackBerry Theme Builder for testing using methods such as JavaLoader or BlackBerry® Desktop Software.)</p>
<p>Exporting the theme file at this time and trying to load it onto a device will cause some usability issues, as the theme has been created for a device with a different resolution from the target device. There is a bit more work that will go into customizing the theme before it can look and function properly. This will be covered in Part 3 – Manipulating Themes. Watch for this blog post soon!</p>
<p>Let us know if you have any questions so far!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/8326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/8326/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=8326&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/02/blackberry-7-theme-development-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/75e7e69af37da351a3462a17576c2209?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gbeuk</media:title>
		</media:content>
	</item>
		<item>
		<title>Digging Deep: Using BlackBerry Theme Studio 6 to Build Themes for BlackBerry 7 – Part 1</title>
		<link>http://devblog.blackberry.com/2012/01/blackberry-7-theme-development/</link>
		<comments>http://devblog.blackberry.com/2012/01/blackberry-7-theme-development/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 21:04:49 +0000</pubDate>
		<dc:creator>garett</dc:creator>
				<category><![CDATA[Theme Development]]></category>
		<category><![CDATA[BlackBerry 7]]></category>
		<category><![CDATA[BlackBerry Theme Builder]]></category>
		<category><![CDATA[BlackBerry Theme Studio 6]]></category>
		<category><![CDATA[theme development]]></category>
		<category><![CDATA[Themes]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=8304</guid>
		<description><![CDATA[The first part in a three-part blog post series about how to use BlackBerry Theme Studio 6 to build themes for BlackBerry 7 OS devices.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=8304&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>BlackBerry® Theme Studio provides a suite of design tools that allow designers and developers to create themes for BlackBerry® smartphones. With BlackBerry Theme Studio v6.0, theme developers were able to target BlackBerry® smartphones running software versions up to and including BlackBerry® 6. As some of you may have heard, developers have made great strides in creating themes for BlackBerry 7 OS devices despite the lack of a BlackBerry Theme Studio release that officially supports these devices. How did they do it? Some BlackBerry theme advocates were able to determine the anatomy of how BlackBerry Theme Builder creates and compiles themes, and then interrupt and modify the process to have it create themes for unreleased device resolutions.</p>
<p><strong>Will Research In Motion (RIM®) let me modify BlackBerry Theme Studio to create themes for OS 7 devices?</strong></p>
<p>Absolutely! Note that the method proposed in this workaround is by no means easy. It will require considerably more effort to get even basic themes working, but it can be used as a means to create themes until an official BlackBerry Theme Studio is released that supports BlackBerry 7 OS devices. Although these steps are being provided, this method of creating themes is essentially unsupported. Theme creation and stability will entirely be the responsibility of the developer; no bugs will be logged against this method of creating themes.</p>
<p><span id="more-8304"></span></p>
<p><strong>If Liquid Graphics broke theme support, then how can themes be made?</strong></p>
<p>For the most part, the anatomy of a theme has stayed relatively unchanged between OS releases. With the introduction of BlackBerry 7 OS, several screens now use a completely new mechanism to create the UI, known as Liquid Graphics. Because of this large change, some features and functionalities supported in previous OS themes may be unsupported. This would be a limitation of BlackBerryTheme Studio 6.0 not being aware of how themes are expected in BlackBerry 7 OS. For example, both the phone and home screens previously used SVG for layouts and actions; in BlackBerry 7 OS, the phone screens no longer use SVG at all, while the home screen only uses SVG for layout purposes. All animations on the home screen and the layout of the phone screens are handled by Liquid Graphics.</p>
<p><strong>Understanding how BlackBerry Theme Builder works</strong></p>
<p>For the sake of simplicity, I will be referring to the BlackBerry Theme Studio 6.0 installation directory (wherever you may have chosen to install it on your system) as &lt;ThemeStudio&gt;.</p>
<p>Once BlackBerry Theme Builder is launched, it starts off by determining which devices and theme types are supported by reading bundled property files:</p>
<p>1) &lt;ThemeStudio&gt;\resources\devices\device_profiles.properties<br />
This file contains a list of information for all supported BlackBerry smartphone models, including a link to a file which describes the characteristics of each device and a thumbnail view of the device.</p>
<p>2) &lt;ThemeStudio&gt;\resources\devices\blackberry\BB&lt;Model&gt;.properties<br />
One of these files is included for each device model/series supported by BlackBerry Theme Studio. It lets BlackBerry Theme Builder know information about the device, such as display resolution, supported fonts, et cetera.</p>
<p>3) &lt;ThemeStudio&gt;\resources\theme\&lt;ThemeDir&gt;\&lt;Model&gt;&lt;ThemeType&gt;.properties<br />
Once BlackBerry Theme Builder reads the list of supported devices (1) and determines their properties (2), the next step is to determine which themes are available for each device. All found theme types will be displayed in the splash screen’s Select Layout Type drop-down. These themes will be based off the .thm file located in the same directory as this file.</p>
<p>After BlackBerry Theme Builder launches, and you make your changes to the theme and export your created masterpiece, BlackBerry Theme Builder does the following:</p>
<p>1) Analyzes the theme for any changes from the base theme (the default theme loaded by BlackBerry Theme Builder before any modifications are made).</p>
<p>2) Any changes found results in certain files being created during the export process by BlackBerry Theme Builder.</p>
<ul>
<li>Layout changes: SVG and associated PME files are created.</li>
<li>Image changes/additions: New image files are included.</li>
</ul>
<p>The more modifications that are made, the more files that will be exported (one image file for each image that is added). The SVG files are used to specify the layout, behavior, and reference the appropriate image files for the various icons, backgrounds, and other UI components.</p>
<p>3) These files are exported to the current user’s Windows® temp directory in a folder named with the following format:<br />
pz_&lt;5-RandomLetters&gt;</p>
<p>Also, a properties file will be exported to the temp directory in the following format:<br />
pz_&lt;5-RandomLetters&gt;.properties</p>
<p>4) BlackBerry Theme Builder then compiles these files into the theme COD file and stores that COD in another folder in the Windows temp directory with the same naming format.</p>
<p>5) BlackBerry Theme Builder then copies the COD to the defined output directory along with the required installation files (JAD, ALX etc) and deletes the two directories created in Step 4 from the file system entirely.</p>
<p>By now you should have a good idea of how BlackBerry Theme Builder figures out which devices should be supported and what happens in the theme export process behind the scenes. This should serve as a good base for the next section where we go into how to actually interrupt the build process for BlackBerry Theme Studio to create themes for devices that are not originally supported. Stay tuned for part 2 of this blog post series!</p>
<p>Got any questions about building BlackBerry themes in the meantime? Let us know in the comments!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/8304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/8304/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=8304&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/01/blackberry-7-theme-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/75e7e69af37da351a3462a17576c2209?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gbeuk</media:title>
		</media:content>
	</item>
		<item>
		<title>Code Signing: Past, Present and Future</title>
		<link>http://devblog.blackberry.com/2012/01/code-signing/</link>
		<comments>http://devblog.blackberry.com/2012/01/code-signing/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 20:02:12 +0000</pubDate>
		<dc:creator>Alex Kinsella</dc:creator>
				<category><![CDATA[Adobe AIR Development]]></category>
		<category><![CDATA[Android Development]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[BlackBerry 7]]></category>
		<category><![CDATA[blackberry tablet os]]></category>
		<category><![CDATA[code signing]]></category>
		<category><![CDATA[debug tokens]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=8292</guid>
		<description><![CDATA[Learn more about code signing, why we do it and what benefits it has for developers.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=8292&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em>Hey BlackBerry® devs! Got another guest post for you today &#8211; this one from Mark, who&#8217;s got some useful info about code signing (what it is and why we do it). Enjoy! &#8211; Ed.</em></p>
<p>There are many great things about developing for the BlackBerry platform – including our commitment and support of open source technologies and multiple development languages (Native, HTML5 with BlackBerry® WebWorks™, Adobe® AIR®, Java®). One thing we’ve really invested in over the last year is to respond to developer feedback and requests, in order to enable you to build the way that’s best for you. One of the areas we’ve been focusing on especially is code signing.</p>
<p><strong>What is Code Signing anyway, and why does BlackBerry code sign?</strong></p>
<p>Code signing has been designed to provide security for consumers. They can feel confident that the application they are installing has not been modified after it was signed by the application developer. Code signing is also a means for applications to protect their data.</p>
<p>Code signing has many benefits for both developers and consumers. Developers can distribute an unsigned version of their application along with a debug token to a limited set of beta testers. The debug token helps to ensure that only those beta testers that a developer has issued a token to can run the application. I’ll walk through this process in more detail in a future blog post.</p>
<p>Debug tokens also allow for central key management, allowing for a single code signing key to be used by a team of developers testing an application. Debug tokens can be issued to each developer, allowing them to test builds on their BlackBerry® PlayBook™ tablet. The code signing key can be deployed to a secure build server, protecting it and ensuring that only official builds of the application are signed for public distribution.</p>
<p><span id="more-8292"></span></p>
<p>BlackBerry® Tablet OS applications each have their own sandboxed private data area that only the application itself can access, which is protected in part by the code signing key. This can prevent a malicious application from impersonating another application. If a malicious application &#8211; signed with a different code signing key &#8211; were to attempt to masquerade as an upgrade to an existing application the user has installed, it would install it as a new, unique application and it would not have access to the private data area of the original application. This makes it important to back up your code signing key because if you lose it, you’ll be <a href="http://supportforums.blackberry.com/t5/Testing-and-Deployment/Application-Upgrade-Appears-as-a-New-Separate-Application/ta-p/1122645" target="_new">unable to provide upgrades</a> to your application.</p>
<p>Data protection isn’t just limited to BlackBerry Tablet OS applications. BlackBerry® 7 OS (and lower) support similar data access control through the use of a custom code signing key. You can read all about that <a href="http://supportforums.blackberry.com/t5/Java-Development/Protect-persistent-objects-from-access-by-unauthorized/ta-p/524282" target="_new">here</a>.</p>
<p><strong>What We’ve Been Doing over the Last Year</strong></p>
<p>We’ve made a number of improvements to code signing over the last year and we will continue to build on this in 2012. Here is a rundown of what we’ve done so far:</p>
<ul>
<li>Made code signing keys easier to obtain by removing the credit card requirement for ordering them</li>
<li>Reduced the order time for code signing keys from 7-10 days to approximately 1-2 hours so you can start building right away!</li>
<li>Created <a href="https://bdsc.webapps.blackberry.com/native/beta/documentation/com.qnx.doc.native_sdk.devguide/com.qnx.doc.native_sdk.devguide/topic/configure_app_signing_from_ide.html" target="_new">Configuration Wizards</a> to walk you through configuring and backing up your keys</li>
<li>Automated many previously manual steps by integrating Debug Tokens into the SDKs</li>
<li>Updated the hardware for our code signing servers</li>
<li>Created the Code Signing Supportsite to walk through the ordering, configuration and signing process</li>
</ul>
<p>This is by no means the end of the road when it comes to improvements. The golden age of code signing will arrive when you can request keys instantly from the SDKs themselves and have the tools take care of all the dirty work for you. We’re actively re-writing the code signing infrastructure to accommodate this in the future.</p>
<p><strong>The Future Is Secure AND Easy</strong></p>
<p>These are just some of the major benefits that code signing provides. Of course, in any situation, the benefits have to outweigh the effort. We hope to achieve a near zero effort for code signing for both developers and consumers.</p>
<p>Got questions about the code signing process? Let us know in the comments!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/8292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/8292/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=8292&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/01/code-signing/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>
	</channel>
</rss>
