aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2015-05-19 18:27:04 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2015-05-19 18:27:04 +0200
commitc8266203f8c281bc429e870300a412fea690baba (patch)
tree997e433bf2a4050ccbf7ddfb3873a3038be3610f /OpenKeychain/src/main/java/org/sufficientlysecure/keychain
parent0f520975e45de1776aab4945e8bde26a83904072 (diff)
downloadopen-keychain-c8266203f8c281bc429e870300a412fea690baba.tar.gz
open-keychain-c8266203f8c281bc429e870300a412fea690baba.tar.bz2
open-keychain-c8266203f8c281bc429e870300a412fea690baba.zip
Use Mode.ALPHANUMERIC for QR codes to save space
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/QrCodeViewActivity.java9
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java7
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvShareFragment.java7
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/QrCodeUtils.java10
4 files changed, 24 insertions, 9 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/QrCodeViewActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/QrCodeViewActivity.java
index d4858ee5d..e54852f1b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/QrCodeViewActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/QrCodeViewActivity.java
@@ -85,11 +85,12 @@ public class QrCodeViewActivity extends BaseActivity {
ActivityCompat.finishAfterTransition(QrCodeViewActivity.this);
}
- String fingerprint = KeyFormattingUtils.convertFingerprintToHex(blob);
- String qrCodeContent = Constants.FINGERPRINT_SCHEME + ":" + fingerprint;
-
+ Uri uri = new Uri.Builder()
+ .scheme(Constants.FINGERPRINT_SCHEME)
+ .opaquePart(KeyFormattingUtils.convertFingerprintToHex(blob))
+ .build();
// create a minimal size qr code, we can keep this in ram no problem
- final Bitmap qrCode = QrCodeUtils.getQRCodeBitmap(qrCodeContent, 0);
+ final Bitmap qrCode = QrCodeUtils.getQRCodeBitmap(uri, 0);
mQrCode.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
index 4237deff0..9968855f7 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
@@ -731,9 +731,12 @@ public class ViewKeyActivity extends BaseNfcActivity implements
AsyncTask<Void, Void, Bitmap> loadTask =
new AsyncTask<Void, Void, Bitmap>() {
protected Bitmap doInBackground(Void... unused) {
- String qrCodeContent = Constants.FINGERPRINT_SCHEME + ":" + fingerprint;
+ Uri uri = new Uri.Builder()
+ .scheme(Constants.FINGERPRINT_SCHEME)
+ .opaquePart(fingerprint)
+ .build();
// render with minimal size
- return QrCodeUtils.getQRCodeBitmap(qrCodeContent, 0);
+ return QrCodeUtils.getQRCodeBitmap(uri, 0);
}
protected void onPostExecute(Bitmap qrCode) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvShareFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvShareFragment.java
index fde0f62fd..479ddae0b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvShareFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvShareFragment.java
@@ -386,9 +386,12 @@ public class ViewKeyAdvShareFragment extends LoaderFragment implements
AsyncTask<Void, Void, Bitmap> loadTask =
new AsyncTask<Void, Void, Bitmap>() {
protected Bitmap doInBackground(Void... unused) {
- String qrCodeContent = Constants.FINGERPRINT_SCHEME + ":" + fingerprint;
+ Uri uri = new Uri.Builder()
+ .scheme(Constants.FINGERPRINT_SCHEME)
+ .opaquePart(fingerprint)
+ .build();
// render with minimal size
- return QrCodeUtils.getQRCodeBitmap(qrCodeContent, 0);
+ return QrCodeUtils.getQRCodeBitmap(uri, 0);
}
protected void onPostExecute(Bitmap qrCode) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/QrCodeUtils.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/QrCodeUtils.java
index 5f71abdab..a6394a3fb 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/QrCodeUtils.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/QrCodeUtils.java
@@ -20,6 +20,7 @@ package org.sufficientlysecure.keychain.ui.util;
import android.graphics.Bitmap;
import android.graphics.Color;
+import android.net.Uri;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
@@ -33,17 +34,24 @@ import org.sufficientlysecure.keychain.KeychainApplication;
import org.sufficientlysecure.keychain.util.Log;
import java.util.Hashtable;
+import java.util.Locale;
/**
* Copied from Bitcoin Wallet
*/
public class QrCodeUtils {
+ public static Bitmap getQRCodeBitmap(final Uri uri, final int size) {
+ // for URIs we want alphanumeric encoding to save space, thus make everything upper case!
+ // zxing will then select Mode.ALPHANUMERIC internally
+ return getQRCodeBitmap(uri.toString().toUpperCase(Locale.ENGLISH), size);
+ }
+
/**
* Generate Bitmap with QR Code based on input.
* @return QR Code as Bitmap
*/
- public static Bitmap getQRCodeBitmap(final String input, final int size) {
+ private static Bitmap getQRCodeBitmap(final String input, final int size) {
try {