Skip to content
Snippets Groups Projects
Commit 235183a3 authored by Torsten Grote's avatar Torsten Grote
Browse files

Merge branch '1177-blank-viewfinder' into 'master'

Show viewfinder again after connection fails

Closes #1177

See merge request akwizgran/briar!735
parents 4d502576 701e51df
No related branches found
No related tags found
No related merge requests found
...@@ -9,6 +9,7 @@ import android.content.IntentFilter; ...@@ -9,6 +9,7 @@ import android.content.IntentFilter;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.UiThread; import android.support.annotation.UiThread;
import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentManager;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog.Builder; import android.support.v7.app.AlertDialog.Builder;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
...@@ -206,11 +207,14 @@ public class KeyAgreementActivity extends BriarActivity implements ...@@ -206,11 +207,14 @@ public class KeyAgreementActivity extends BriarActivity implements
private void showQrCodeFragment() { private void showQrCodeFragment() {
// FIXME #824 // FIXME #824
BaseFragment f = ShowQrCodeFragment.newInstance(); FragmentManager fm = getSupportFragmentManager();
getSupportFragmentManager().beginTransaction() if (fm.findFragmentByTag(ShowQrCodeFragment.TAG) == null) {
.replace(R.id.fragmentContainer, f, f.getUniqueTag()) BaseFragment f = ShowQrCodeFragment.newInstance();
.addToBackStack(f.getUniqueTag()) fm.beginTransaction()
.commit(); .replace(R.id.fragmentContainer, f, f.getUniqueTag())
.addToBackStack(f.getUniqueTag())
.commit();
}
} }
private boolean checkPermissions() { private boolean checkPermissions() {
......
...@@ -24,7 +24,6 @@ import java.util.logging.Logger; ...@@ -24,7 +24,6 @@ import java.util.logging.Logger;
import static com.google.zxing.DecodeHintType.CHARACTER_SET; import static com.google.zxing.DecodeHintType.CHARACTER_SET;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
...@@ -67,7 +66,6 @@ class QrCodeDecoder implements PreviewConsumer, PreviewCallback { ...@@ -67,7 +66,6 @@ class QrCodeDecoder implements PreviewConsumer, PreviewCallback {
@Override @Override
public void onPreviewFrame(byte[] data, Camera camera) { public void onPreviewFrame(byte[] data, Camera camera) {
if (camera == this.camera) { if (camera == this.camera) {
LOG.info("Got preview frame");
try { try {
Size size = camera.getParameters().getPreviewSize(); Size size = camera.getParameters().getPreviewSize();
// The preview should be in NV21 format: width * height bytes of // The preview should be in NV21 format: width * height bytes of
...@@ -105,20 +103,13 @@ class QrCodeDecoder implements PreviewConsumer, PreviewCallback { ...@@ -105,20 +103,13 @@ class QrCodeDecoder implements PreviewConsumer, PreviewCallback {
@Override @Override
protected Void doInBackground(Void... params) { protected Void doInBackground(Void... params) {
long now = System.currentTimeMillis();
BinaryBitmap bitmap = binarize(data, width, height, orientation); BinaryBitmap bitmap = binarize(data, width, height, orientation);
Result result; Result result;
try { try {
result = reader.decode(bitmap, result = reader.decode(bitmap,
singletonMap(CHARACTER_SET, "ISO8859_1")); singletonMap(CHARACTER_SET, "ISO8859_1"));
long duration = System.currentTimeMillis() - now;
if (LOG.isLoggable(INFO))
LOG.info("Decoding barcode took " + duration + " ms");
} catch (ReaderException e) { } catch (ReaderException e) {
// No barcode found // No barcode found
long duration = System.currentTimeMillis() - now;
if (LOG.isLoggable(INFO))
LOG.info("No barcode found after " + duration + " ms");
return null; return null;
} catch (RuntimeException e) { } catch (RuntimeException e) {
LOG.warning("Invalid preview frame"); LOG.warning("Invalid preview frame");
......
...@@ -61,7 +61,8 @@ import static java.util.logging.Level.WARNING; ...@@ -61,7 +61,8 @@ import static java.util.logging.Level.WARNING;
public class ShowQrCodeFragment extends BaseEventFragment public class ShowQrCodeFragment extends BaseEventFragment
implements QrCodeDecoder.ResultCallback { implements QrCodeDecoder.ResultCallback {
private static final String TAG = ShowQrCodeFragment.class.getName(); static final String TAG = ShowQrCodeFragment.class.getName();
private static final Logger LOG = Logger.getLogger(TAG); private static final Logger LOG = Logger.getLogger(TAG);
private static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1"); private static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1");
...@@ -207,6 +208,15 @@ public class ShowQrCodeFragment extends BaseEventFragment ...@@ -207,6 +208,15 @@ public class ShowQrCodeFragment extends BaseEventFragment
@UiThread @UiThread
private void reset() { private void reset() {
// If we've stopped the camera view, restart it
if (gotRemotePayload) {
try {
cameraView.start(getScreenRotationDegrees());
} catch (CameraException e) {
logCameraExceptionAndFinish(e);
return;
}
}
statusView.setVisibility(INVISIBLE); statusView.setVisibility(INVISIBLE);
cameraView.setVisibility(VISIBLE); cameraView.setVisibility(VISIBLE);
gotRemotePayload = false; gotRemotePayload = false;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment