iPad: Avi-Videos wiedergeben

Für einen längeren Flug habe ich eine Möglichkeit gesucht Videos auf dem iPad wiederzugeben, die nicht Quick-Time kompatibel sind – Wie z.B. Avi-Videos. Nach längerer Suche bin ich auf die App GoodPlayer gestoßen, die diese Aufgabe hervorragend meistert. Die Videos können entweder per http (integrierter Web-Server ist vorhanden) oder mit Hilfe der iTunes Dateiverwaltung übertragen werden.

http://itunes.apple.com/de/app/goodplayer/id416756729?mt=8

 

Can’t find an Entry Point ‘sqlite3_open_interop’ in a PInvoke DLL ‘System.Data.SQLite.DLL

Ich verwende den Open Source ADO.NET Provider System.Data.SQLite um SQLite Datenbanken unter Windows Mobile bzw. dem Compact Framework anzusprechen. Bei der ersten Verwendung stößt man unter Umständen auf folgenden Fehler:

Can’t find an Entry Point ‘sqlite3_open_interop’ in a PInvoke DLL ‘System.Data.SQLite.DLL

Die Lösung hierfür ist jedoch einfach – Auf dem Gerät fehlen die Dateien SQLite.Interop.dll und SQLite.Interop.lib. Damit diese Dateien immer vorhanden sind, auch wenn ein anderen oder neues mobiles Gerät verwendet wird, habe ich sie dem Projekt hinzugefügt und als und als Copy if newer mit Hilfe der Datei-Eigenschaften im Visual Studio gekennzeichnet.

Die Dateien selbst liegen, vorausgesetzt es wurde die Standardinstallation verwendet, im Verzeichnis C:\Program Files (x86)\SQLite.NET\bin\CompactFramework. Lediglich die Versionsnummer (momentan 066) muss aus dem Dateinamen entfernt werden.

Compact Framework: Per Code die Tastatur einblenden / ausblenden

Das Ein- bzw. Ausblenden der Tastatur ist im Prinzip ganz einfach, wird nur leicht vergessen. Folgende Schritte sind notwendig:

1) Ein InputPanel Control auf die Form ziehen.
Ohne Benennung lautet der Name inputPanel1
2) Tastatur einblenden: inputPanel1.Enabled = true;
3) Tastatur ausblenden: inputPanel1.Enabled = false;


MonoTouch: Verwendung von eigenen Grafiken im Interface Builder

Möchte man eigene Bilder z.B. innerhalb einer Navigation Bar verwenden, stellt man im Inspector zunächst gähnende Leere fest, selbst wenn das Bild bereits dem Projekt hinzugefügt wurde.

Der Grund hierfür ist eine Einschränkung seitens MonoDevelop bzw. MonoTouch. Der Interface Builder zeigt an dieser Stelle nur die verfügbaren Grafiken an, sofern diese im Xcode Projekt der xib Datei vorliegen. Bei der Verwendung von MonoTouch liegt jedoch kein Xcode Projekt vor.

Dennoch kann hier das gewünschte Bild referenziert werden, indem dort einfach der Pfad und der Name nach dem Schema images/myIcon.png eingetragen wird. Später wird dieses Bild dann auch tatsächlich angezeigt, jedoch während der Entwicklungszeit aus oben genannten Gründen nicht.

Das gewünschte Bild kann dem MonoDevelop Projekt einfach über den Menüpunkt Add Files hinzugefügt werden. Weiterhin muss das Bild in das Output-Directory nach dem Kompilieren kopiert werden. Der Konfigurationspunkt hierfür befindet sich im Kontext-Menü.

Nach dem Starten wird das Bild korrekt im Control angezeigt.

 

 

MonoTouch: Einfache Rotation der Anzeige

Die Rotation der Anzeige gehört eigentlich zum guten Ton einer jeden Anwendung. Außerdem ist die Verwendung super einfach. Im folgenden Beispiel habe ich einen Button hinzugefügt, der einfach eine AlertView bei einer Berührung anzeigt. Nun soll, wenn das iPhone gedreht wird, sich auch der Button neu justieren.

Hier muss die Methode ShouldAutorotateToInterfaceOrientation() überschrieben und ein true zurückgegeben werden. Mehr nicht! Allerdings wird ist diesem Fall die View einfach nur gedreht und keine Neuausrichtung vorgenommen, sofern das Layout nicht mehr passen sollte.

Der Download des Beispielprojekts ist hier zu finden.

Mac OS X und SQLite

Mac OS X liefert bereits out of the box Funktionalität mit, um SQLite Datenbanken zu lesen oder zu bearbeiten – Und zwar per Terminal. Hierzu muss zunächst das Terminal gestartet werden. Im Anschluss kann das Programm im Verzeichnis /usr/bin über den Namen sqlite3 gestartet werden.

Um eine bereits vorhandene Datenbank per Terminal zu öffnen gibt es einen kleinen Trick. Hierzu gibt man einfach den Befehl sqlite3 ein und zieht dann die zu öffnende Datenbankdatei auf das Terminal-Fenster. Im Terminal erscheint dann der Pfad zur Datenbank und man spart sich unter Umständen viel Tipparbeit.

SQLite unterstützt die gängigen SQL Befehle, hier ein paar wichtige:

.schema – Zeigt die vorhandenen Tabellen und Spalten an.
.separator <Zeichen> Ersetzt das Zeichen, welches den Feldinhalt trennt. Standard ist das Pipe-Zeichen.
.quit – Beendet das Programm

Wichtig bei der Eingabe ist das Abschließen eines jeden Kommandos mit einem Semikolon.

Wem das Terminal vielleicht eine spur zur einfach ist, dem kann ich den SQLiteBrowser empfehlen. Das Programm ist kostenlos, erfüllt seinen Zweck und ist hier zu finden.

MonoTouch: Anzeige der Benutzerposition auf einer MapView

Die Anzeige der Benutzerposition, ermittelt per GPS Chip, auf einer MapView ist einfach und besteht im wesentlichen aus zwei Schritten:

1. Ermittlung der Benutzerposition
2. Zentrierung der Karte zur Position

Für das Beispiel habe ich eine einfache View erstellt, die das MapView-Control enthält. Innerhalb der Methode DidViewLoad() frage ich den Event DidUpdateUserLocation ab, lasse die Benutzerposition per UIAlertView ausgeben und zentriere im Anschluss die Karte. Die gesamte Methode sieht wie folgt aus:

public override void ViewDidLoad ()
{
base.ViewDidLoad ();

this.mapView.ShowsUserLocation = true;

this.mapView.DidUpdateUserLocation += delegate(object sender, MonoTouch.MapKit.MKUserLocationEventArgs e)
{
this.mapView.SetCenterCoordinate(new CLLocationCoordinate2D(e.UserLocation.Coordinate.Latitude, e.UserLocation.Coordinate.Longitude), true);

UIAlertView alert = new UIAlertView();
alert.Title = "Position";
alert.Message = "Latitude: " + e.UserLocation.Coordinate.Latitude + ", Longitude: " + e.UserLocation.Coordinate.Longitude;
alert.AddButton("OK");

alert.Show();
};
}

Innerhalb des Simulators wird der Firmensitz von Apple zurückgegeben, auf einem Gerät natürlich die Position des Geräts.

Das Beispielprojekt kann hier runtergeladen werden.

MonoTouch: Festlegen der Start-View

Erstellt man ein neues MonoTouch Projekt, muss zunächst eine Start-View hinzugefügt werden. Dies ist empfehlenswert, damit die Standardoberfläche unangetastet bleibt und man als Entwickler alle Möglichkeiten der Oberfläche nutzen kann.

Folgende Schritte beschreiben wie man eine neue View hinzufügt, diese View als UITableViewController deklariert und als Start-View festlegt.

Hinzufügen einer neuen View inkl. Controller:

Mit Hilfe des Interface Designers wird nun festgelegt, dass diese View sofort gestartet werden soll. Weiterhin leite ich meine neue View nicht von der Klasse UIViewControler sondern von UITableViewController ab.

Hinzufügen eines TableView:

Änderung der Class-Identity:

Hinzufügen des NIB-Names:

Änderung der Hauptklasse:

Festlegen des Root-Controllers:

Zugegeben, diese Schritt per Screenshot zu erklären ist nicht einfach. Aus diesem Grund gibt es auch ein Video:

Das Beispielprojekt gibt es hier.

Warum ich auf das iPad 3 warte

_DSC9019
Creative Commons License photo credit: Mick van Jaarsvelt

Ich mag das iPad, wirklich, auch wenn manche Menschen das Gegenteil behaupten, aber ich habe das iPad voll in meinen Arbeitsalltag integriert und möchte es eigentlich nicht mehr missen. Insbesondere in meiner Freizeit hat das iPad dazu beigetragen, dass sich mein Leseverhalten komplett geändert hat.

Genau wegen dieser umfangreichen Integration müsste ich nun eigentlich auf das iPad 2 umsteigen. Allerdings ist aus meiner Sicht der Mehrwert gegenüber dem ersten iPad zu gering, als das sich die Anschaffung lohnen würde. Folgend kurz meine Meinung zu den neuen Features:

- Leichter und Dünner: Das iPad ist schwer und daran ändern auch die 100g weniger nichts. Ein Buch (oder ein Kindle) lässt sich einfach besser und länger halten. Aus diesem Grund zählt für mich dieses Argument überhaupt nicht.

-Smart-Cover: Nett und sicherlich auch sehr nützlich. Das alte Cover reicht mir aber auch völlig aus.

- Kamera: Habe ich bisher noch nicht vermisst und meine Skype Video-Konferenzen halten sich auch eher in Grenzen.

- Schnelligkeit: Mir reicht die Geschwindigkeit des ersten iPad völlig aus und noch nie ist mir eine Verzögerung aufgefallen. Bei intensivem Spielen ist dies vielleicht ein wirkliches Argument, allerdings habe ich zwar einige Spiele installiert aber noch nie länger als 5 min gespielt.

Insgesamt lohnt sich das Update für mich überhaupt nicht – Ich warte einfach auf das iPad 3. Einen umfangreichen Test zum neuen iPad gibt es auf Golem.de.