2014-10-31

Batteriestatus im Android-Emulator

Für einen Artikel wollte ich einen Screenshot des neuen Battery Savers von Lollipop machen. Eigentlich kein Ding. …sollte man meinen… Wie ich herausgefunden habe, muss aber zunächst in der Konfiguration des AVDs hw.battery=yes eingetragen werden. Dann kann man in einer Telnet-Sitzung (zum Beispiel mit PuTTY, localhost 5554) den Befehl power ac off eingeben. Nun steht der Battery Saver zur Verfügung.

Screenshot #1

Screenshot #2

Screenshot #3

Screenshot #4

Bei aktivierter Stromsparfunktion erscheinen Statuszeile (und ggf. die Buttonleiste am unteren Rand) in orange. Ein letzter Tipp: setzen Sie in den PuTTy-Einstellungen unter Telnet den Telnet Negotiation mode auf Psssive.

2014-10-15

Gut oder nicht gut?

Heute hat das Java-AutoUpdate eine neue Version der JRE installiert. Dabei ist mir zum ersten Mal folgender Dialog begegnet:

Screenshot: Warnhinweis auf zu alte Java-Versionen

Kennen Sie den?

Ein Klick auf Siehe Liste mit Java-Versionen zeigt bei mir:

Screenshot: Liste veralteter Java-Versionen

Tatsächlich gäbe es einen neueren Patchlevel für Java 7. Nur, warum wird nicht einfach angeboten, den zu installieren? Die Aufforderung zur Deinstallation halte ich für verfrüht, zumal in der Oracle Java SE Support Roadmap Stand 16. April 2014 öffentliche Updates bis mindestens April 2015 in Aussicht gestellt werden.

Was denken Sie?

2014-10-11

Benachrichtigungen auf Wearables

In meinem vorherigen Post hatte ich Ihnen berichtet, dass Min Time nun Benachrichtigungen zum zeitlichen Verlauf eines Talks ausgibt, und dass diese auch auf Android Wear-Geräten erscheinen. Letzteres ist grundsätzlich unspektakulär, weil es – eigentlich – von Haus aus geschieht. Natürlich wäre dies nicht bloggenswert, wenn es nicht ein entscheidendes Caveat gäbe. Hierzu ein Beispiel:
1:  NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(  
2:      context).setPriority(NotificationCompat.PRIORITY_HIGH)  
3:      .setContentTitle(context.getString(R.string.app_name))  
4:      .setContentText(str)  
5:      .setOngoing(true)  
6:      .setWhen(resumed)  
7:      .setSmallIcon(R.drawable.ic_launcher_mintime)  
8:      .setContentIntent(notificationClickedIntent);  
9:  NotificationManagerCompat notificationManager = NotificationManagerCompat  
10:      .from(context);  
11:  notificationManager.notify(CountdownActivity.NOTIFICATION_ID,  
12:      notificationBuilder.build());  
Fällt Ihnen an diesem Stück Quelltext irgendetwas auf? Wer Android kennt, wundert sich vielleicht, dass nicht mehr der Builder aus der Android-Standardbibliothek verwendet wird. sondern NotificationCompat.Builder. Das ist Absicht. Tatsächlich fordert Google in der Dokumentation ausdrücklich dazu auf. Im Klartext bedeutet dies, dass man die Bibliothek android-support-v4.jar einbinden muss. Obiger Code erzeugt tatsächlich eine Benachrichtigung; dummerweise erscheint die aber nicht auf einem Wearable. Den Grund habe ich nach langer Suche in dem Posting How to Create a Custom Ongoing Notification on Android Wear von Carlos Hwa gefunden. Wohlgemerkt, Google schreibt diesbezüglich (Stand 11.10.14) nichts:
Screenshot der Seite http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html
Wenn man es weiß, ist die Lösung einfach. Aus meinem Quelltextfragment einfach setOngoing() entfernen, und die Benachrichtigung erscheint wie erwartet auf der Uhr. *AUTSCH* Die Nutzung des Kompatibilitätspakets verläuft zum Glück schmerzfrei. Dass die Größe der App zunimmt (von 0,11 MB auf 0,37 MB im Falle von Min Time) ist unschön, aber vor dem Hintergrund aktueller Bandbreiten sicher zu verschmerzen. Übrigens hatte die Integration des Jars eine Zeitlang den Effekt, dass eine App angeblich für viele (> 30) Sprachen lokalisiert war, obwohl es in der eigentlichen Anwendung gar keine Vorkehrungen hierfür gab (wohl aber im Jar). Das scheint aber behoben worden zu sein.

2014-10-10

Neues von Min Time

Ich hatte Lust, mal wieder an Min Time zu schrauben. Hier zwei Teaser-Fotos; die App landet demnächst in aktualisierter Version im Store.

Min Time auf einer LG G

Screenshot: Min Time-Benachrichtigung

Dabei “durfte” ich auch wieder ein paar Android-Merkwürdigkeiten kennenlernen; lassen Sie sich überraschen.

2014-10-05

Applets mit selbst signierten Zertifikaten wieder ausführbar machen

Seit Java SE 7 Update 51 (also schon eine ganze Weile) werden Applets und Web Start-Anwendungen mit selbst signierten Zertifikaten blockiert. In einer idealen Welt könnte ich mich beim Hersteller als Entwickler registrieren, würde mich entsprechend legitimieren, und bekäme dafür im Gegenzug ein “echtes” Code Signing-Zertifikat für meine Java-Anwendungen. …es soll ja Plattformen geben, auf denen es tatsächlich so läuft.
Smiley
Leider ist der von Sun vor vielen Jahren begonnene Java Store nie weiter verfolgt worden (für die Nostalgiker unter uns: ich meine Project Vector). Deshalb bleibt Entwicklern eigentlich nur, sich selbst ein Zertifikat zu besorgen. Aber mal ehrlich, unter 150 EURO geht gar nichts, und das nur für ein paar Open Source-Programme? Ich gebe zu, mir ist das zu viel. Deshalb hier noch ein kurzer Walkthrough, wie man die Java-Client-Sicherheit entsprechend rekonfiguriert. Ausgangspunkt ist das Java Control Panel:
Screenshot: Java Control Panel
Auf der Registerkarte Sicherheit befindet sich die zunächst leere Liste der ausgenommenen Websites:
Screenshot: Registerkarte Sicherheit
Die Schaltfläche Siteliste bearbeiten öffnet einen weiteren Dialog, Liste der ausgenommenen Websites.
image
Nach dem Anklicken von Hinzufügen geben Sie die URL der Seite, die ein Applet enthält, ein. Falls die Adresse “nur” http als Protokoll verwendet, erscheint folgende Warnung:
Screenshot: Sicherheitswarnung - HTTP Websites
Klicken Sie auf Fortfahren. Danach schließen Sie den Dialog Liste der ausgenommenen Sites mit OK. Das Java Control Panel sieht nun folgendermaßn aus:
Screenshot: Java Control Panel mit einer Site-Ausnahme
Schließen Sie das Kontrollfeld mit OK. Wenn Sie die Website besuchen, erscheint wieder eine Warnmeldung:
Screenshot: Warnmeldung Nummer 2
Setzen Sie ein Häkchen vor Ich akzeptiere das Risiko und möchte diese Anwendung ausführen, und klicken dann auf Ausführen.
Nicht schön, aber immerhin kann man auf diese Weise seine Applets und Web Start-Anwendungen weiter benutzen.

2014-10-03

Eclipse DTP

DTP steht hier (ausnahmsweise) nicht für Desktop Publishing, sondern für Data Tools Platform. Das Einbinden von Datenbanken in Eclipse ist mit wenigen Handgriffen erledigt. Welche dies sind, zeige ich Ihnen in der folgenden Bilderstrecke.

Zu installierende Pakete auswählen

Zu installierende Pakete auswählen

Treiber-Definition auswählen oder erstellen

Treiber-Definition auswählen oder erstellen

Einen Treiber wählen; hier für Derby bzw. JavaDB

Einen Treiber wählen; hier für Derby bzw. JavaDB

Korrespondierendes Jar auswählen

Korrespondierendes Jar auswählen

In die Perspektive Database Development wechseln

In die Perspektive Database Development wechseln

Neues Verbindungsprofil anlegen (1/2)

Neues Verbindungsprofil anlegen (1/2)

Neues Verbindungsprofil anlegen (2/2)

Neues Verbindungsprofil anlegen (2/2)

Neues Derby-Verbindungsprofil anlegen (1/2)

Neues Derby-Verbindungsprofil anlegen (1/2)

Neues Derby-Verbindungsprofil anlegen (2/2)

Neues Derby-Verbindungsprofil anlegen (2/2)

Mit einer Datenbank verbinden oder die Verbindung trennen

Mit einer Datenbank verbinden oder die Verbindung trennen

Ein Schema anlegen

Ein Schema anlegen

Eine .sql-Datei anlegen (1/2)

Eine .sql-Datei anlegen (1/2)

Eine .sql-Datei anlegen (2/2)

Eine .sql-Datei anlegen (2/2)

SQL-Anweisungen absetzen

SQL-Anweisungen absetzen

Eclipse-Tipp: Schriftgröße bequem einstellen

Man traut es sich ja kaum zu schreiben, aber auch im Jahre 2014 muss man in Eclipse einen Einstellungsdialog öffnen, um die Schriftgröße in einem Editor zu verändern. Naja, man müsste, wenn es nicht findige Entwickler gäbe, die solche Probleme mit einem Plug-in lösen. eclipse-fonts gibt es schon eine Weile, und sehr wahrscheinlich kennen es Viele auch schon. Trotzdem hier der Link auf die Projekthomepage auf Google Code.

2014-10-02

Java 9 und JSON

Ich bin eigentlich eher durch Zufall über die Ankündigung gestolpert, dass in Java 9 eine leichtgewichtige JSON-API Einzug halten soll: JEP 198: Light-Weight JSON API. Im aktuellen Early Access Releases Build b32 konnte ich noch nichts davon entdecken. Was mich hierbei vor allem umtreibt, ist die Frage “Warum?”. Mit JSR 353: Java API for JSON Processing und der zugehörigen Referenzimplementierung gibt es doch eine durch den JCP legitimierte JSON-Bibliothek. Und die ist ja sogar in Java EE 7 enthalten. Im Netz findet man derzeit relativ wenig Infos zu den Hintergründen. Haben Sie etwas darüber gelesen? Teilen Sie Ihre Links mit mir…

2014-10-01

…was da wohl drin ist…?

Ein neues Spielzeug?
Ein neues Spielzeug?
Auch die 5. Auflage macht einen Autor noch stolz.
Auch die 5. Auflage macht einen Autor noch stolz.
Ich freue mich sehr, Ihnen eine neue Ausgabe von Einstieg in Eclipse zeigen zu können.
Ich freue mich sehr, Ihnen eine neue Ausgabe von Einstieg in Eclipse zeigen zu können.
Ich bin sicher, auch alte Eclipse-Hasen finden hier frisches Futter ;-)
Ich bin sicher, auch alte Eclipse-Hasen finden hier frisches Futter ;-)