Category Archives: Blackberry

Blackberry Widget – Update Funktion

Auf dem Blackberry kann man zum Glück noch Programme installieren die nicht aus der App World kommen. Entweder man installiert sie OTA (OverTheAir) oder mit dem Blackberry Manager. Ich denke das jeder lieber die OTA Variante wählt. Wenn man eine App über App World heruntergeladen und Installiert hat, dann wird man auch über neue Updates informiert. Das Funktioniert leider nicht bei Apps die man OTA von irgendwo anders installiert hat und so muss jede App eine eigene Update Funktion mit sich bringen. Dazu habe ich einen kleinen XML Parser geschrieben der auf Abruf (oder Automatisiert – je nachdem wie man es einbaut) nachschauen kann ob es eine neue Version vorhanden ist. Dafür muss man selber nur in der App das folgende Script einbauen und auf dem Server die passende xml Datei hinterlegen und updaten wenn man eine neue Veröffentlichen will.

Die XML Datei sieht bei mir folgendermaßen aus:

<version>
<weatherme version=”1.0.0.4″ url=”http://blackberry.itbert.de/weatherme/weatherme.jad”></weatherme>
<wmlive version=”1.0.0.3″ url=”http://blackberry.itbert.de/wmlive/wmlive.jad”></wmlive>
<wadokulive version=”1.0.0.4″ url=”http://blackberry.itbert.de/wadokuonline/wadokuonline.jad”></wadokulive>
</version>

An sich ganz einfach. Für jede Anwendung kann man die Version und die URL des Downloads angeben. Was braucht man mehr? Das Javascript sieht auch nicht viel komplizierter aus:

var AppVersion = “1.0.0.2”;
var AppName = “weatherme”;

function checkUpdates () {

var req = new XMLHttpRequest();
req.open(“GET”, “http://blackberry.itbert.de/finger/version.xml”, false);
req.send(null);

if (req) {
version = req.responseXML.getElementsByTagName(AppName).item(0).getAttribute(“version”);
url = req.responseXML.getElementsByTagName(AppName).item(0).getAttribute(“url”);

if ( AppVersion < version ) {
if (confirm(‘Do you want Upgrade to version ‘+version+’?’))
{
var args = new blackberry.invoke.BrowserArguments(url);
blackberry.invoke.invoke(blackberry.invoke.APP_BROWSER, args);
}
}

}
}

Damit das ganze auch Funktioniert braucht man folgende Berechtigungen in der config.xml

<feature id=”blackberry.invoke” required=”true” version=”1.0.0.0″/>
<feature id=”blackberry.invoke.BrowserArguments” required=”true” version=”1.0.0.0″/>
<feature id=”blackberry.identity” required=”true” version=”1.0.0.0″/>
<feature id=”blackberry.ui.dialog” required=”true” version=”1.0.0.0″/>
<feature id=”blackberry.app” required=”true” version=”1.0.0.0″/>

Jetzt muss man nur noch die Funktion in einen Button einbauen oder bei jedem Start der App aufrufen.

<script language=”javascript”  type=”text/javascript”>
checkUpdates ();
</script>

Das ganze als Paket gibt es hier und bei Gelegenheit werde ich das in meine bestehenden Apps einbauen, aber vorher verdrücke ich mich in das hoffentlich kühlere Wien.

Blackberry Prepaid Service [Updated: 2010-07-25]

In Deutschland ist es eigentlich nur möglich den Blackberry Service mit einem Vertrag zu benutzen. O2O könnte man als Prepaid zählen lassen, aber ich will hier auf die traditionellen Prepaid Tarife eingehen. Im Ausland hingeben gibt es so langsam ein bisschen Bewegung und es werden Blackberry Services für Prepaid angeboten. Es sind noch nicht viele, aber es werden langsam immer mehr.

Wie man sehen kann ist es noch sehr selten einen Blackberry Prepaid Tarif anzutreffen, aber so langsam…

Blackberry Widget – About Page

Bei jedem Programm sollte eigentlich immer Platz für ein paar Informationen sein. Ich habe mir die Mühe gemacht und ein kleines Template geschrieben. Es ließt automatisch die Einstellungen aus der config.xml aus (die man ohnehin Eintragen sollte) und erstellt einen neuen Menüpunkt. Somit kann man immer schnell auf die Seite zugreifen und hat alle Informationen auf einen Blick parat.

Einfach Herunterladen, in dem gewünschten Widget entpacken und das Javascript einbinden. Zum Beispiel im header:

<script type=”text/javascript” src=”about/js/about.js”></script>

Fertig. Schöne UI Beispiele gibt es im Forum bei RIM.

Blackberry Widget – RSS Parser

Solange ich noch auf meine Zugangsdaten für die Pushservices warte bediene Ich mich momentan anderen Pull Techniken. Eine davon verbreitete Möglichkeit ist dabei RSS. Fast jede Internetseite hat RSS und ggf. noch eine sehr kluge. Normale Browser erlauben keine cross domains. Das heist dass die zu parsende Datei auch local liegen muss und man die nicht erst von einem anderen Server holen. Bei den Widgets gibt es die Möglichkeit cross domains zu benutzen in dem man die gewünschte/n Domains freigibt. Also kann man sich bequem Informationen auf den BB Pullen.

Fangen wir also mit einem normalen RSS an und mal schauen was noch kommt… Ich hab es leider nicht selber geschrieben und weiss nicht mehr wo ich es gefunden habe :( Die Credits gehen also an Anonymous.

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<meta name=”viewport” id=”viewport” content=”initial-scale=1.0,user-scalable=no”>
<title>RSS Beispiel</title>
</head>
<script language=”javascript”  type=”text/javascript”>

var RSSRequestObject = false; // XMLHttpRequest Object
var Backend = ‘http://news.google.de/news?pz=1&cf=all&ned=de&hl=de&q=blackberry&cf=all&output=rss’; // Backend url
window.setInterval(“update_timer()”, 1200000); // update the data every 20 min
RSSRequestObject = new XMLHttpRequest();

/*
* onreadystatechange function
*/
function ReqChange() {

// If data received correctly
if (RSSRequestObject.readyState==4) {

// if data is valid
if (RSSRequestObject.responseText.indexOf(‘invalid’) == -1)
{
// Parsing RSS
var node = RSSRequestObject.responseXML.documentElement;

// Get Channel information
var channel = node.getElementsByTagName(‘channel’).item(0);
var title = channel.getElementsByTagName(‘title’).item(0).firstChild.data;
var link = channel.getElementsByTagName(‘link’).item(0).firstChild.data;

content = ‘<div style=”padding-top:2px; margin-bottom: 1px; background:grey;”></div>’;

// Browse items
var items = channel.getElementsByTagName(‘item’);
for (var n=0; n < items.length; n++)
{
var itemTitle = items[n].getElementsByTagName(‘title’).item(0).firstChild.data;
var itemLink = items[n].getElementsByTagName(‘link’).item(0).firstChild.data;
var itemDesc = items[n].getElementsByTagName(‘description’).item(0).firstChild.data;

content += ‘<a href=”‘+itemLink+'” style=”padding-left: 17px; display: block; background:#fff; text-decoration: none; color: black; “>’+itemTitle+'</a>’;
content += ‘<div style=”margin-left: 15px; padding-top:1px; background:#d5d3d3;>”></div>’;

}

// content += ‘<hr/>’;
// Display the result
document.getElementById(“ajaxreader”).innerHTML = content;

// Tell the reader the everything is done
document.getElementById(“status”).innerHTML = “Done.”;

}
else {
// Tell the reader that there was error requesting data
document.getElementById(“status”).innerHTML = “<div>Error requesting data.<div>”;
}

HideShow(‘status’);
}

}

/*
* Main AJAX RSS reader request
*/
function RSSRequest() {

// change the status to requesting data
HideShow(‘status’);
document.getElementById(“status”).innerHTML = “Requesting data …”;

// Prepare the request
RSSRequestObject.open(“GET”, Backend , true);
// Set the onreadystatechange function
RSSRequestObject.onreadystatechange = ReqChange;
// Send
RSSRequestObject.send(null);
}

/*
* Timer
*/
function update_timer() {
RSSRequest();
}

function HideShow(id){
var el = GetObject(id);
if(el.style.display==”none”)
el.style.display=”;
else
el.style.display=’none’;
}

function GetObject(id){
var el = document.getElementById(id);
return(el);
}

</script>

<body onload=”RSSRequest();”>
<div id=”status” style=”display:none”></div>
<div id=”ajaxreader”></div>

</body>

</html>

Das und noch ein bisschen mehr ist dann auch schon der Sourcecode für die WMLive app. Mir hat das sehr viel geholfen um gefallen an Blackberry Widgets zu bekommen und mal schauen was man noch alles machen kann.

Blackberry Widget – WM 2010 Live (Update)

Seit drei Tagen bin ich am schrauben und frickeln und bin immer noch nicht Fertig, aber ich will die App jetzt einfach mal veröffentlichen weil die WM auch bald vorbei ist ;) Ich habe die App zum ausprobieren von verschiedenen Notifications vom BB geschrieben und vielleicht bringt sie dem einen oder anderen etwas. Die eine oder andere WM App für den Blackberry funktionieren nicht so wirklich oder verbrauchen zu viel Akku.

Was leider noch nicht funktioniert ist den Intervall einzustellen (updated sich jetzt jede Minute) weil ich es noch nicht geschafft habe dass sich das Menü öffnet. Außerdem hätte ich gerne dass das Blackberry noch Vibriert wenn ein Tor gefallen ist (daran Arbeite ich gerade). Die App vibriert endlich wenn eine neue Benachrichtigung eintrifft.

Kommen wir mal zu dem Punkt wo ich sage was schon funktioniert ;) Die App läuft im Hintergrund und schaut jede Minute nach ob bei irgend einem Spiel ein Tor gefallen ist oder ob ein Spiel fertig ist. Wenn dies geschehen ist wird man darüber informiert. Wie immer – keep it simple und sobald es Vibriert gibt es eine neue Version ;)

OTAInstall: here

Blackberry Widget – WebIcon/Webstarter

Bei einem Blackberry kann man leider nicht ohne weiteres einen Link auf dem Desktop platzieren. Man muss erst den Browser öffnen und dann das Lesezeichen auswählen. Ein ziemlich langer weg und wenn man bestimmte Seiten öfters besucht, dann kann dass manchmal Nerven. Zum Glück haben wir die Widgets womit sich das sehr einfach erledigen lässt (Ich hoffe das BB OS 6.0 dass wie andere Systeme integriert hat). Wenn man das Widget öffnet wird automatisch der Browser mit einer definierten URL geöffnet. Das und nicht mehr.

Also schauen wir mal in die API Dokumentation und dort steht eigentlich schon alles. Schnippe…. Schnappe und so könnte die fertige HTML Datei aussehen:

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<meta name=”viewport” id=”viewport” content=”initial-scale=1.0,user-scalable=no”>
<script type=”text/javascript”>
function Load () {
var args = new blackberry.invoke.BrowserArguments(‘http://blackberry.itbert.de’);
blackberry.invoke.invoke(blackberry.invoke.APP_BROWSER, args);
// exit web icon after browser is closed
blackberry.app.exit();
}
</script>
<title>WebIcon demo</title>
</head>
<body onload=”javascript:Load();”>
</body>
</html>

und die config.xml folgendermaßen:

<?xml version=”1.0″ encoding=”UTF-8″?>
<widget xmlns=”http://www.w3.org/ns/widgets” xmlns:rim=”http://www.blackberry.com/ns/widgets” version=”1.0.0.0″>
<name>WebIcon</name>
<description>webicon demonstration icon</description>
<author email=”bla@itbert.de” href=”http://blackberry.itbert.de”>Steffen Wirth</author>
<feature id=”blackberry.invoke” required=”true” version=”1.0.0.0″/>
<feature id=”blackberry.invoke.BrowserArguments” required=”true” version=”1.0.0.0″/>
<feature id=”blackberry.identity” required=”true” version=”1.0.0.0″/>
<feature id=”blackberry.app” required=”true” version=”1.0.0.0″/>
<icon rim:hover=”false” src=”ext/icon_flat.png”/>
<icon rim:hover=”true” src=”ext/icon_glossy.png”/>
<content src=”index.html”/></widget>

Ich habe noch eine Exit Funktion nach dem der Browser geschlossen wurde eingetragen damit das Widget sich auch beendet. Jede App braucht ein Icon und das kann man sich einfach hier erstellen lassen. Die Texture für das Icon kommt von Petey Morf.

Hier ein paar Screenshots (die jetzt im Nachhinein nicht viel aussagen):

Wer sowas für seine/eine Homepage haben möchte kann sich gerne bei mir Melden (am besten gleich mit fertigen Icons).

Blackberry Widgets

Jeder kennt heutzutage “Apps”. Für alle die sie nicht kennen, Apps sind Programme die man auf seinem Mobiltelefon installieren kann. Bei fast allen Geräten ist das Heutzutage möglich. Die meisten werden in eigenen Sprachen oder Java geschrieben und man muss “wirklich” Programmieren können um nur ein “Hello World” auf den Bildschirm zu bekommen. RIM hat schon seit längerem (seit BB OS5) die sogenannten Blackberry Widgets integriert. Das sind Programme die auf HTML/CSS und Javascript aufbauen und somit für fast Jedermann möglich eine mini web application für sein Blackberry zu schreiben. Es bietet nicht alles was eine richtige Programmiersprache bietet, aber für das eine oder andere kleine Programm sollte es reichen.

Das hat mich ein bisschen Gereizt und ich habe mich ein bisschen damit Beschäftigt. Bevor man aber loslegen kann muss man einige Programme von RIM herunterladen. Dabei braucht man das Java JDK, Eclipse + Widget SDK und einen Blackberry Emulator. Wenn man das Geschafft hat kann man eigentlich schon loslegen. Man sollte sich ein bisschen rein lesen und vielleicht das eine oder andere Video anschauen. Leider funktioniert es soweit nur unter Windows und deswegen komme ich nicht wirklich dazu und mag es nicht wirklich.

Nichts desto trotz  kann man mit nur ein paar Zeilen ein kleines Widget schreiben. Im Grunde braucht man dazu nur eine index.hml, config.xml und die Bilder die man verwenden möchte. Zum Testen habe ich ein kleines Widget geschrieben (ganz ohne Javascript) womit man schneller (als über Bookmarks) auf wadoku.de suchen kann. Das ganze sieht dann wie folgt aus:

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<meta name=”viewport” id=”viewport” content=”initial-scale=1.0,user-scalable=no”>
<link href=”ext/style.css” rel=”stylesheet” type=”text/css”>

<title>Wadoku Online</title>
</head>
<body>
<br><br><CENTER><IMG SRC=”ext/image.gif”><br>
<form action=”http://wadoku.de/mobile.jsp?” target=”_blank”>
<b>Japanisch-Deutsches Wörterbuch</b><br><br>
<input type=”text” name=”phrase” style=”width:50%”>
<br><br><input type=”submit” value=”Suchen”>
</form>
</CENTER>
</body>
</html>

Wie man sehen kann ist es reines html und ist sehr schnell geschrieben. Den Code kann man jetzt als jar verpacken lassen und auf seinem Emulator ausprobieren. Damit das Widget aber noch auf einem richtigen Blackberry laufen kann braucht man noch die “Java Code Signing Keys“. Die Kosten nur 20USD, aber das kann  man mal ausgeben.

In dem Emulator sieht das dann folgendermaßen aus:

Über die Widget API kann man noch auf Geräteeinstellungen zugreifen und so doch ein etwas anspruchsvolleres Widget schreiben als ich es hier zum Beispiel gemacht habe.

Das eine oder andere Widget das ich Veröffentlichen werde kann man in Zukunft unter http://blackberry.itbert.de finden

Blackberry Bold 9700 Wallpaper

Das neue Blackberry ist am Wochenende angekommen und ich bin rundherum zufrieden. Es ist eine super Weiterentwicklung von dem Bold 9000. Es ist kleiner, die Tasten sind ein bisschen kleiner aber haben noch immer die gleiche gute Qualität von seinem Vorgänger. Das neue Touchpad ist einfach Spitze. Das ist einfach der Wahnsinn. Das Blackberry OS 5.0 ist um einiges schneller und im Speziellen der Browser hat an Geschwindigkeit gewonnen. Was mich nur ein bisschen stört sind die Knoepfe an der Seite. Die haben (warum eigentlich?) an Qualität verloren und sind aus Plastik. Das gefällt mir nicht so. Davon aber abgesehen hat es sich gelohnt auf den neuen Umzusteigen.

Weil der Bold 9700 eine hoehere Auflösung hat gibt es ein paar neue Hintergrundbilder:

Twitter missbraucht

Ich bin mal wieder zurueck auf Twitter, aber warum? Irgendwie “missbrauche” ich Twitter als RSS Reader fuer meinen BB. Dank Yatca bekomme ich meine abonnierten Feeds direkt in meine Inbox (als Nachrichten) und bleibe so immer auf dem Laufenden. Finde ich sehr angenehm, aber man muss aufpassen das man nicht  “Channel” abonniert die einem non stop Nachrichten schicken.

Vielleicht ist das auch der Sinn von Twitter… egal ;)

Japanisch auf dem Blackberry (Update)

Nach ein paar Monaten hatte ich mal wieder einen Windows Computer vor der Nase und konnte ein Firmware Upgrade meines BB Bold machen. Ziel war es das ich endlich mal Japanisch schreiben und sehen kann auf dem Blackberry. Mit einem kleinen Trick hat es dann auch endlich geklappt:

1. Firmware von Hong Kong CSL Limited herunterladen.
Das wichtigste dabei ist das ihr eine “EastAsia” herunterladet. Die Dateien fangen mit “9000jEastAsia_PB…” an. Das “J” ist auch wichtig.

2. Die Datei ganz normal Installieren, aber nicht den Manager starten.

3. Damit wir aber Japanisch, Koreanisch und Chinesisch installieren koennen, muessen wir eine Vendor.xml loeschen. Das machen wir unter Programme -> Gemeinsame Dateien -> Research in Motion -> AppLoader. In dem Ordner die Vendor.xml loeschen.

4. Man koennte jetzt den RIM Desktop Manager starten, aber man kann auch einfach die Loader.exe (ich glaube die heißt so.) in dem gleichen Ordner benutzen. Die gewuenschten Sprachen auswaehlen und Upgraden.

Das war es auch schon. Endlich funktioniert das. Die eingabe ist die gleiche wie bei Japanischen Handies und somit besser als Scim oder die bei MS. Wieso kann RIM nicht in jeder Firmware jede Sprache anbieten? Versteh ich nicht! Viel Spass beim Tippen.

UPDATE: Es gibt eine neue EastAsia Version der Firmware für den Bold 9700. Gleiches vorgehen wie oben (vendor.xml löschen) und schon kann es Weitergehen. Der Download versteckt sich hier.