Profile

Cover photo
Patrick Favre
Lives in Vienna
103 followers|253,567 views
AboutPostsPhotosVideosReviews

Stream

Patrick Favre

Tools and Libraries  - 
 
Been developing an Android blur library for quite a while, but decided to release it in its current state. It uses Renderscript and has several features including:

* bluring of static images
* live blur (e.g. for viewpager)
* navigation drawer background blur
* blur keyframe animations

All with a very simple Builder e.g:
Dali.create(context).load(R.drawable.test_img1).blurRadius(12).into(imageView);

https://github.com/patrickfav/Dali

You can also find the test app in the play store: https://play.google.com/store/apps/details?id=at.favre.app.dalitest
11
4
Nick Rout's profile photo
 
Tried the test app and it looks great! 
Add a comment...

Patrick Favre

Tools and Libraries  - 
 
Best part about the stackoverflow.com moderator privilege: Seeing awesome deleted answers like this one: (For this question: http://stackoverflow.com/questions/2762844/developers-how-does-bitlocker-affect-performance)
8
1
Add a comment...

Patrick Favre

Shared publicly  - 
 
 
Neue Version der BankomatkartenInfos App:
Liest jetzt auch die Bankomatkarte Mobil.

Ich habe gestern nach langer Zeit wieder an der App gearbeitet und jetzt kann man damit auch die Bankomatkarte Mobil (https://www.bankomatkarte-mobil.at/) auslesen. :-)


• (1) Sowohl intern (am selben Gerät auf dem die App läuft!)

• (2) als auch extern per NFC (also auf einem Gerät läuft die App, am anderen Gerät ist die Bankcard Mobil aktiviert und man hält die Geräte einfach aneinander).


Punkt (2) ging bisher nicht, da Android Beam immer dazwischen funkte wenn man 2 Geräte aneinander hielt. Das war einfach zu lösen, ich verwende jetzt einen anderen Modus beim Lesen per NFC, bei dem Android Beam deaktiviert ist (als Folge benötigt die App jetzt allerdings mindestens Android KitKat oder höher).


Punkt (1) ist da ein wenig trickreicher:

Eigentlich gibt es für Secure Elements (so wie die NFC-taugliche SIM-Karte eines ist) einen Zugriffsschutz. Das heißt nicht jede beliebige App darf einfach auf das Secure Element zugreifen.

Stattdessen ist (vereinfacht erklärt) im Secure Element eine Liste an Hash-Werten hinterlegt und nur Apps deren Zertifikat (also mit dem sie signiert wurden) dort im Secure Element in der Liste vorkommt, dürfen auf das Secure Element zugreifen.

Details dazu findet man hier in diesem Dokument von Global Platform: "*Secure Element Access Control*" (http://amifan.googlecode.com/svn-history/r79/trunk/Documents/GPD_SE_Access_Control_v0_10_0.pdf)


Ich habe mir jetzt nicht genau im Detail angesehen, wie diese Regeln formuliert sind, aber die Signaturen der offiziellen Bankcard Mobil Apps der verschiedenen Banken sind offensichtlich da drin hinterlegt und es scheint sehr unmöglich, dass ich da mein eigenes App Zertifikat ins Secure Element hinein bekomme. Also dieser Weg ist eine Sackgasse.

Allerdings: die Prüfung, ob denn das Zertifikat der gerade laufenden App mit denen aus dem Secure Element übereinstimmt, die passiert in Software, in Android (nämlich in der Implementierung der OpenMobile API).

Dh. technisch wäre es möglich, dass man beim Kompilieren der OMAPI (das was ich letztens für die Nexus Geräte gemacht habe) diesen Check einfach weglässt und diese modifizierte Version der OpenMobile API installiert (dazu braucht man aber root-Rechte, also gleich vorweg, ohne root geht das nicht).

Ich habe hier aber einen anderen Weg gewählt und habe stattdessen ein framework namens Xposed (http://repo.xposed.info/) verwendet. Dieses Framework erlaubt Entwicklern ebenfalls weitgehenden Zugriff u.a. auf Systemebene und kann daher auch sehr gefährlich sein (so wie root). Daher werde ich diese Version auch nicht in den Play Store stellen.


Falls jemand dennoch Interesse dran hat, ich habe diese Spezialversion in Github unter dem branch "omapi_experimental" veröffentlicht. Damit diese Version funktioniert muss das Xposed Framework am Gerät installiert sein und in der Xposed-Einstellungs-App unter "Module" muss die BankomatkartenInfos aktiviert sein.


Das APK File findet man auf Github unter "Releases": https://github.com/johnzweng/bankomatinfos/releases
oder alternativ wieder auf meinem Server: http://johannes.zweng.at/android/Market/BankomatInfos/

Die App verwendet wie bisher auch nur LESENDE Kommandos (SELECT, GET DATA, READ RECORD), da sollte also nichts passieren. Das intergrierte Xposed Modul deaktiviert den Zugriffsschutz auf das Secure Element nicht global, sondern nur konkret für diese eine App, dh. auch wenn die App installiert ist, ist der SE Zugriffsschutz für alle anderen Apps nach wie vor aktiv.

Disclaimer: Benutzung auf eigenes Risiko, ich übernehme keinerlei Haftung. Die App ist nur für technisch versierte Benutzer gedacht!


 ·  Translate
View original post
1
Add a comment...

Patrick Favre

Shared publicly  - 
 
Probably the worst mobile version of a website Ive ever seen
1
Add a comment...

Patrick Favre

Shared publicly  - 
 
"Labor Pain Simulator" is actually a thing...
1
Add a comment...
Have him in circles
103 people
Philip Zotter's profile photo
Nadege Quentin's profile photo
Markus Wolf's profile photo
Piotr D's profile photo
Daniel Jonas's profile photo
Genymobile's profile photo
Johann Grabner's profile photo
Sophie Weiß's profile photo
Dominik Dorn's profile photo

Patrick Favre

Tools and Libraries  - 
 
 
Bankomatkarte mobil auch auf Nexus Geräten

TL;DR:
Mit kleinen Änderungen kann man die Bankomatkarte mobil auch auf dem Nexus 5 oder Nexus 6 nutzen.

Vorraussetzung dafür ist allerdings ein entsperrter Bootloader und man muss bereit sein 3 neue Dateien auf /system/ zu installieren und 2 Config-Dateien zu ändern (Details dazu siehe ganz unten).


Hintergrund:
Seit geraumer Zeit nutze ich testweise die Bankomatkarte mobil (https://www.bankomatkarte-mobil.at/). Dabei wird eine Bankomatkarte in die SIM Karte installiert (ist technisch quasi dasselbe wie eine Bankkarte) und man kann mit dem NFC Handy weltweit an allen NFC-Kassen zahlen.

Damit das organisatorisch funktioniert hat in Österreich die PSA (Payment Services Austria) Agreements mit allen Netzbetreibern (=SIM-Karten-Herausgeber) und fungiert als zentraler Ansprechpartner für alle Banken (so wie auch bei den Plastikkarten), damit nicht jede Bank mit jedem SIM-Karten-Herausgeber ein 1:1 Agreement treffen muss. Momentan gibt's nur die Bankomatkarte, aber soweit ich das gehört habe, ist geplant daselbe Setup künftig auch mit Kreditkartenherausgebern auszurollen.

Technisch:
Damit das technisch mit dem Handy funktionieren kann, muss das Gerät mehrere Dinge unterstützen:

- (1) es braucht klarerweise NFC
- (2) die Bankcard App muss eine Möglichkeit haben mit der Bankcard Applikation in der SIM kommunizieren zu können
- (3) der NFC Chip muss physisch über eine spezielle 1-Draht Verbindung (Single Wire Protocol) direkt mit der SIM-Karte verbunden sein
- (4) das "NFC-Offhost-Routing" des NFC-Chips muss so konfiguriert sein, dass alle empfangenen NFC Pakete die nicht für das Android Betriebssystem bestimmt sind, über die Verbindung aus Punkt (3) direkt zur SIM-Karte geroutet werden (und nicht etwa zu einem evtl. vorhandenen geräte-interen Secure Element)

Fassen wir zusammen: Punkt (1) und Punkt (3) sind hardwareabhängig. Entweder ein Gerät hat das oder nicht, da kann ich nichts daran ändern. Jedoch die beiden Punkte (2) und (4) können in Software gelöst werden. :-)


Google und Nexus Geräte:
Leider ist es mit der Android Standard API (noch?) nicht möglich Punkt (2) umzusetzen. Allerdings hat sich die SIM Alliance (Allianz diverser Smartcard-hersteller: http://simalliance.org/about-us/operating-structure/members/) stark dafür eingesetzt, dass so eine API in Android einfließt. Da Google sich aber bisher nicht entschlossen hat, diese Funktionalität in Android aufzunehmen, hat die SIM Alliance eine Dritt-Hersteller API entwickelt, die sogenannte "Open Mobile API", welche opensource frei verfügbar ist. Dh. jeder Hersteller von Android Geräten kann diese API mit in sein Gerät einbauen.

Das machen (mittlerweile) auch fast alle Hersteller (die haben ja auch Interesse daran, dass ihre Produkte möglichst viele Standards unterstützen, und das kostet sie quasi nichts extra und bietet einen Punkt mehr auf der Feature Liste).

Alle Hersteller? Nein, Google leider nicht. :-(
Auf allen Nexus Geräten ist diese API leider nicht vorhanden (Ausnahme war kurzzeitig das Nexus 6, aber mit Android 6.0 auch nicht mehr).


Wie geht's trotzdem:
Ich habe ein Nexus 5 und ein Nexus 6 bei mir zuhause und festgestellt, dass auf beiden Geräten die beiden Hardwarevoraussetzungen (1) und (3) prinzipiell erfüllt sind. Da der Rest "nur" Software ist, und sowohl Android als auch die OpenMobile API open-source sind, dachte ich mir, es kann doch nur mehr eine Frage des Aufwands sein, diese Funktionalität für die Nexus Geräte zu implementieren.

Der größte Aufwand war danach eigentlich eher das Einlesen in die OpenMobile API und wie diese ins Stock Android integriert werden muss.

Schlussendlich habe ich das SEEK projekt (die OpenMobile Implementierung für android) auf github geforked, und so angepasst, dass ich ohne Patches am Basis-Android System auskomme, da ich eine Lösung finden wollte, die man einfach dazuinstallieren kann, ohne das Basis-Android-System neu installieren oder modifizieren zu müssen.


ERGEBNIS:
Ich habe mein Ergebnis auf github veröffentlicht. Für die österreichischen Bankcard Mobil Apps benötigt man die OpenMobile API Version 2.05. Ein Release (plus grobe Anleitung wie man dies installiert) findet sich hier auf Github: https://github.com/johnzweng/platform_packages_apps_SmartCardService/releases/jz_android_6.0_OMAPI-2.05 (ganz unten ist das zip zum downloaden).

WICHTIG: Das löst nur Punkt (2) auf der obigen Liste. Was dann noch fehlt ist eine passende Konfiguration des NFC-Chips (Punkt (4)). Diese habe ich (derzeit leider nur für Nexus 5 und Nexus 6) auch hier auf github bereitgestellt: https://github.com/johnzweng/nexus_bcm2079x_configurations

Die beiden Config-files befinden sich auf dem Gerät unter /system/etc/ und müssen durch diese angepasste Version ersetzt werden.

Danach steht einer Verwendung Eures Nexus Gerätes als Mobile Bankkarte nichts mehr im Wege. :-)


[edit]
Ich habe dankenswerterweise gestern ein Nexus 5X Testgerät zur Verfügung gestellt bekommen, dh. ich werde mir demnächst mal ansehen, wie die NFC Konfiguration auf diesem Gerät aussieht. Ein Nexus 6P habe ich allerdings leider noch keines.. hint, hint.. ;-)
[/edit]

 ·  Translate
20 comments on original post
1
Add a comment...

Patrick Favre

Tools and Libraries  - 
 
I made a little tool for converting images to the correct densities. It supports Android, iOS and Windows formats but focuses on Android (e.g mipamap support). It has a command line and graphical UI and supports image type conversation for a wide variety of formats (including SVG and PSD). It can be scaled by providing source scale factor or height/width in dp. For the full feature list see the github link:

https://github.com/patrickfav/density-converter

Being written in plain java it should run on all systems.
Maybe somebody will find this useful :)
density-converter - This is a simple tool that helps converting single or batches of images to Android, iOS and Windows specific formats and density versions given the source scale factor or width ...
30
16
Paul Ravenstone (Bear)'s profile photoPatrick Favre's profile photo
2 comments
 
Well its a jar so I guess it should run ;) I do not use linux, however Im of course open to a pull request adding eg. Deb package to maven build
Add a comment...

Patrick Favre

Shared publicly  - 
 
DroidconUk 15
October 28, 2015 • 4 days • 51 moments
3
Add a comment...

Patrick Favre

Shared publicly  - 
 
 
TL;DR: Nexus 6: Why was OpenMobile API removed in Android 6.0 (while it was present and working in Android 5.1.1)? Why Google, why??

Long description:
The SIMalliance OpenMobile API is a third-party API which provides access to external Secure Elements in SIM- or SD-cards. Some banks in Europe allow the installation of banking debit cards into the Secure Element of the SIM card (so that you can use your phone worldwide like a regular NFC-enabled plastic banking card) so they need this API for working.

It's understandable that Google did not include this API in their Nexus devices as they want to push their own payment service and not support other ones. This missing API was one of the downsides of using the Nexus 4 and Nexus 5.

So I was surprised even more when I realized that in Nexus 6 Google finally included this API (you can look into the system.img of this build: https://dl.google.com/dl/android/aosp/shamu-lmy48w-factory-09ff93d1.tgz and you will see the library in /system/framework/org.simalliance.openmobileapi.jar).

Unfortunately Google decided to remove this again in the latest Android 6.0 Build: https://dl.google.com/dl/android/aosp/shamu-mra58k-factory-5b07088c.tgz.

So, all these banking apps will no longer work with Android 6:
https://play.google.com/store/apps/details?id=at.psa.app.bankaustria
https://play.google.com/store/apps/details?id=at.psa.app.hypo
https://play.google.com/store/apps/details?id=at.psa.app.raika
https://play.google.com/store/apps/details?id=at.psa.app.erste
https://play.google.com/store/apps/details?id=at.psa.app.oberbank
... and many more


Oh Google, why? Why did you give us hope and then remove it again?
Für die beliebte und vertraute Zahlungsform mit der Bankomatkarte bietet di...
14 comments on original post
1
Add a comment...

Patrick Favre

Shared publicly  - 
 
Full featured Android UI Data Binding with new Beta Library from Google

https://developer.android.com/tools/data-binding/guide.html
1
1
Add a comment...

Patrick Favre

Shared publicly  - 
 
Official Google Material Design Views Toolkit
1
Add a comment...

Patrick Favre

Shared publicly  - 
 
TIL that git source is on github... how meta is that?

https://github.com/git/git
git - Git Source Code Mirror - This is a publish-only repository and all pull requests are ignored. Please follow Documentation/SubmittingPatches procedure for any of your improvements.
1
Add a comment...
People
Have him in circles
103 people
Philip Zotter's profile photo
Nadege Quentin's profile photo
Markus Wolf's profile photo
Piotr D's profile photo
Daniel Jonas's profile photo
Genymobile's profile photo
Johann Grabner's profile photo
Sophie Weiß's profile photo
Dominik Dorn's profile photo
Places
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Currently
Vienna
Links
Other profiles
Work
Skills
Android, JavaEE
Basic Information
Gender
Male
Public - 3 weeks ago
reviewed 3 weeks ago
Public - 3 weeks ago
reviewed 3 weeks ago
Public - a month ago
reviewed a month ago
6 reviews
Map
Map
Map
Public - 3 weeks ago
reviewed 3 weeks ago
Public - a month ago
reviewed a month ago