Merge branch '2148-shrink-hotspot-qr-codes' into 'master'

Shrink QR code to avoid scrolling

Closes #2148

See merge request briar/briar!1528
This commit is contained in:
Torsten Grote
2021-08-31 12:21:16 +00:00
5 changed files with 16 additions and 4 deletions

View File

@@ -52,6 +52,7 @@ import static java.util.Objects.requireNonNull;
import static java.util.logging.Level.INFO; import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
import static java.util.logging.Logger.getLogger; import static java.util.logging.Logger.getLogger;
import static org.briarproject.briar.android.util.QrCodeUtils.HOTSPOT_QRCODE_FACTOR;
import static org.briarproject.briar.android.util.UiUtils.handleException; import static org.briarproject.briar.android.util.UiUtils.handleException;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@@ -334,7 +335,8 @@ class HotspotManager {
ioExecutor.execute(() -> { ioExecutor.execute(() -> {
String content = createWifiLoginString(group.getNetworkName(), String content = createWifiLoginString(group.getNetworkName(),
group.getPassphrase()); group.getPassphrase());
Bitmap qrCode = QrCodeUtils.createQrCode(dm, content); Bitmap qrCode = QrCodeUtils.createQrCode(
(int) (dm.heightPixels * HOTSPOT_QRCODE_FACTOR), content);
NetworkConfig config = new NetworkConfig(group.getNetworkName(), NetworkConfig config = new NetworkConfig(group.getNetworkName(),
group.getPassphrase(), qrCode); group.getPassphrase(), qrCode);
listener.onHotspotStarted(config); listener.onHotspotStarted(config);

View File

@@ -27,6 +27,7 @@ import static java.util.logging.Logger.getLogger;
import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.bramble.util.LogUtils.logException;
import static org.briarproject.bramble.util.NetworkUtils.getNetworkInterfaces; import static org.briarproject.bramble.util.NetworkUtils.getNetworkInterfaces;
import static org.briarproject.briar.android.hotspot.WebServer.PORT; import static org.briarproject.briar.android.hotspot.WebServer.PORT;
import static org.briarproject.briar.android.util.QrCodeUtils.HOTSPOT_QRCODE_FACTOR;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
@@ -83,7 +84,8 @@ class WebServerManager {
} }
url = "http://" + address.getHostAddress() + ":" + PORT; url = "http://" + address.getHostAddress() + ":" + PORT;
} }
Bitmap qrCode = QrCodeUtils.createQrCode(dm, url); Bitmap qrCode = QrCodeUtils.createQrCode(
(int) (dm.heightPixels * HOTSPOT_QRCODE_FACTOR), url);
listener.onWebServerStarted(new WebsiteConfig(url, qrCode)); listener.onWebServerStarted(new WebsiteConfig(url, qrCode));
} }

View File

@@ -26,13 +26,19 @@ public class QrCodeUtils {
private static final Logger LOG = getLogger(QrCodeUtils.class.getName()); private static final Logger LOG = getLogger(QrCodeUtils.class.getName());
public static final double HOTSPOT_QRCODE_FACTOR = 0.35;
@Nullable @Nullable
public static Bitmap createQrCode(DisplayMetrics dm, String input) { public static Bitmap createQrCode(DisplayMetrics dm, String input) {
int smallestDimen = Math.min(dm.widthPixels, dm.heightPixels); return createQrCode(Math.min(dm.widthPixels, dm.heightPixels), input);
}
@Nullable
public static Bitmap createQrCode(int edgeLen, String input) {
try { try {
// Generate QR code // Generate QR code
BitMatrix encoded = new QRCodeWriter().encode(input, QR_CODE, BitMatrix encoded = new QRCodeWriter().encode(input, QR_CODE,
smallestDimen, smallestDimen); edgeLen, edgeLen);
return renderQrCode(encoded); return renderQrCode(encoded);
} catch (WriterException e) { } catch (WriterException e) {
logException(LOG, WARNING, e); logException(LOG, WARNING, e);

View File

@@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:scrollbars="vertical"
android:fillViewport="true"> android:fillViewport="true">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout

View File

@@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:scrollbars="vertical"
android:fillViewport="true"> android:fillViewport="true">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout