Phonegap natives Android Plugin erstellen Tutorial

Mit Phonegap lässt sich nativer Code triggern aus Javascript heraus mit folgendem Code:

//onDeviceReady          

cordova.exec( success, fail, "UploadImage", "nativeAction", ["success"]);    

            function success (result) {    
                alert("SUCCESS: \r\n"+result );
                }
            function fail (error) {    
                alert("ERROR: \r\n"+error );
                }

Dieser Code ruft die Klasse UploadImage die Funktion execute mit Parameter action=’nativeAction’ und einem JsonString(!) data = “['success']” auf. Data kann dafür verwendet werden Daten nach Java zu übergeben:

import org.apache.cordova.api.Plugin;
import org.apache.cordova.api.PluginResult;

public class UploadImage extends Plugin {
    public static final String NATIVE_ACTION_STRING="nativeAction";       
    public static final String SUCCESS_PARAMETER="success";
    @Override
    public PluginResult execute(String action, JSONArray data, String callbackId) {
        Log.d("HelloPlugin", "Hello, this is a native function called from PhoneGap/Cordova!");             
        //only perform the action if it is the one that should be invoked              
        if (NATIVE_ACTION_STRING.equals(action)) {                    
            String resultType = null;                    
        try {                          
            resultType = data.getString(0);                    }                    
        catch (Exception ex) {                          
            Log.d("HelloPlugin", ex.toString());                    }                    
        if (resultType.equals(SUCCESS_PARAMETER)) {                          
            return new PluginResult(PluginResult.Status.OK, "Yay, Success!!!");                    
            }                    
        else {                          
            return new PluginResult(PluginResult.Status.ERROR, "Oops, Error :( ");                    
            }              
        }                
        return null;
    }
}

Außerdem muss das Plugin in die res/xml/config.xml eingetragen werden:

<plugin name="UploadImage" value="de.sv.foo.plugin.UploadImage"/>

 

Die Ausgabe sollte sein:

"SUCCESS: Yay, Success!!!"

 

Android automatische Error Reports von Usern mit ACRA

Ein praktische Bibliothek für Android Apps ist Acra (Application Crash Report for Android), damit lassen sich automatisch bei einem Fehler auf dem Handy eines Users die Fehlermeldung verschicken als:

  • Google Docs spreadsheet (default)
  • Email
  • eigenes HTTP POST Server Script
  • jede andere mögliche Verarbeitung mittels der Implementierung eines eigenen “report senders”

Im Falle eines Crahs kann man dem User auf folgende Arten mit dem Fehler begegnen:

  • Silent (default): ACRA actions are not visible. The crash report is sent and then the default android crash system does its job (Force Close dialog)
  • Toast: When the crash occurs, ACRA displays a toast and simultaneously sends the report.
  • Notification: An optional toast is displayed on application crash, but the report is not sent immediately. A status bar notification is published warning the user that he should send a report. When selected, the notification displays a dialog asking for the authorization to send the report, with an optional user comment.
  • Dialog: since 4.3.0b1, experimental, allows to display a crash dialog without the need of a status bar notification.

Installation weiterlesen…

Amazon S3 Android SDK Error: RequestTimeTooSkewed

Bei einer Fehlermeldung:

Status Code 403, AWS Request ID:.... RequestTimeTooSkewed The difference between the request time and the current time is too large. 

Hilft es die Uhr des Handy zu stellen manuell, weil Amazon sonst von einem zu alten Request ausgeht und diesen blockiert, wenn die Zeit um über 15Minuten unterscheidet von der Amazon Zeit.

Es gibt leider keine andere unterstütze Lösung von Amazon-Seite: siehe Thread.

Android Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-1.xml, reason: Connection to https://dl-ssl.google.com refused

Bei folgender Fehlermeldung Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-1.xml, reason: Connection to https://dl-ssl.google.com refused hat bei mir folgendes geholfen:

Testen der XML Webseite

https://dl-ssl.google.com/android/repository/addons_list-1.xml

wenn die Seite im Browser ohne Probleme angezeigt wird (es steht Text da, keine Fehlermeldung), muss man folgende Schritte unternehmen:

Firewall konfigurieren

  • Firewall deaktivieren, bzw. Ausnahme für SDK Manager.exe hinzufügen (das war es bei mir)

Force https aktivieren

  • starten des sdk managers (nicht aus Eclipse heraus!): C:\Program Files (x86)\Android\android-sdk\SDK Manager.exe
  • Tools/Options
  • ankreuzen: force https:// ….

Installieren von SDK Paketen

Damit die SDK Dateien korrekt installiert werden können, muss die SDK Manager.exe als Administrator gestartet werden: rechte Maustaste auf die Datei und als Administrator ausführen.

Android App in den Google Play Market stellen Windows7

Wenn man seine hart ercodete App in den Google Play Market stellen will muss man ein paar einfache Schritte durchführen. Im Vergleich zum Aufnahmeprozess im Apple App Store sind diese allerdings mit wenig Aufwand verbunden.

  1. Anlegen eines Developer Accounts für den Play Market. Es muss eine Gebühr von einmalig 25$ gezahlt werden, allerdings zwingend mit einem Google Checkout Account, den man mit einer Kreditkarte (z.B: Visa) verbinden muss.
  2. Die APK-Datei muss mit einem gültigem Zertifikat versehen werden, sonst gibt es eine Fehlermeldung: 
Google Play akzeptiert keine mit dem Debug-Zertifikat signierten APK-Dateien. Erstellen Sie ein neues Zertifikat, das mindestens 50 Jahre gültig ist.

Zertifizieren der App mit einem gültigem Zertifikat

weiterlesen…

Teil 2: Clean Code – richtige und falsche Kommentare

Nach dem Buch (Kapitel 4):  “Clean Code – Refactoring, Patterns, Testen und Techniken für sauberen Code” von Robert C. Martin.

“Kommentieren Sie schlechten Code nicht – schreiben Sie ihn um.”

(Brian W. Kernighan und P.J. Plaugher)

 

Kommentare können beides sein, hilfreich und hinderlich:

  • hinderlich, wenn Sie überholt sind und Fehlinformationen liefern
  • störend, wenn Sie zu lang sind und unnötig
  • hilfreich, wenn Sie wohlplatziert sind

Der Einsatz von Kommentaren “soll unsere Unfähigkeit ausgleich, uns in unserem Code klar auszudrücken”(S.85). Bevor man einem Kommentar schreibt, sollte man vorher überlegen, ob der Code nicht noch ausdrucksstarker geschrieben werden könnte.

weiterlesen…

Code kopieren Zeilennummern löschen Regex

Beim Kopieren von Code von Webseiten(z.B. Zend.com) kann es vorkommen, dass der Code Zeilennummern enthält, z.B.

  1. // Parameters for ClientAuth authentication
  2. $service = Zend_Gdata_Gbase::AUTH_SERVICE_NAME;
  3. $user = “”;
  4. $pass = “pa$$w0rd”;
  5. // Create an authenticated HTTP client
  6. $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
  7. // Create an instance of the Base service
  8. $service = new Zend_Gdata_Gbase($client);
Um die Zeilennumern zu löschen, kann mit z.B. mit Netbeans folgenden Befehl ausführen:
STRG+H (SEARCH and REPLACE)
Find what: [0-9]{1,2}.\n
Replace with: (leer lassen)
Auswählen: Regular Expressions

Regular Expressions Netbeans

Huawei Ideos X3 USB Debugging Tutorial


Das Huawei Ideos X3 (U8510 Blaze) ist das sehr günstige Einsteiger Handy für Android Programmierer und Studenten (< 100€).

Zu Beginn müssen die USB-Treiber installiert werden werden. Diese sind auf dem Handy gespeichert. Eine sehr gute Anleitung findet man hier. Alternativ kann man die Treiber auch sehr einfach downloaden und installieren: Download.

Um das USB Debugging beim Huwaei Ideos X3 zu aktivieren, muss folgende Nummer gewählt werden um in das versteckte Menü zu kommen:

*#*#2846579#*#*

20120430-220205.jpgDanach ins ProjectMenu->3. Background setting->2. Log setting

->Log level setting, verbose auswählen.

->Log switch, Log on auswählen

Danach ins ProjectMenu->3. Background setting->6. Dump & Log auswählen

  • Open Dump & Log
  • Changing log switch
  • Open Sleep Log

Ihr Huawei Ideos X3 ist jetzt bereit Debug-Informationen und detailierte Fehlermeldungen an ihre IDE (Eclipse) zu senden.

Zum Testen auf High-End Android Geräten: Lesen Sie: Samsung Galayx S2 Debugging.

Entwickler Handy Empfehlung: Samsung Galaxy Nexus mit Android 4.0

Entwickler Tablet Empfehlung: Samsung Galaxy Tab 2 mit Android 4.0