package im.adamant.android.ui; import android.Manifest; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.TextView; import com.google.zxing.Result; import com.gun0912.tedpermission.PermissionListener; import com.gun0912.tedpermission.TedPermission; import java.util.ArrayList; import butterknife.BindView; import dagger.android.AndroidInjection; import im.adamant.android.R; import im.adamant.android.avatars.Avatar; import im.adamant.android.ui.mvp_view.ScanQrCodeView; import io.reactivex.Flowable; import me.dm7.barcodescanner.zxing.ZXingScannerView; public class ScanQrCodeScreen extends BaseActivity implements ScanQrCodeView, ZXingScannerView.ResultHandler { @BindView(R.id.activity_scan_qrcode_zxscv_scanner) ZXingScannerView scannerView; @BindView(R.id.activity_scan_qrcode_no_permission_layout) TextView noPermissionView; @Override public int getLayoutId() { return R.layout.activity_scan_qrcode_screen; } @Override public boolean withBackButton() { return true; } @Override protected void onCreate(Bundle savedInstanceState) { AndroidInjection.inject(this); super.onCreate(savedInstanceState); if(TedPermission.isDenied(this, Manifest.permission.CAMERA)){ scannerView.setVisibility(View.GONE); noPermissionView.setVisibility(View.VISIBLE); TedPermission.with(this) .setPermissionListener(permissionlistener) .setPermissions(Manifest.permission.CAMERA) .check(); } } @Override protected void onResume() { super.onResume(); if(TedPermission.isGranted(this, Manifest.permission.CAMERA)){ scannerView.setVisibility(View.VISIBLE); noPermissionView.setVisibility(View.GONE); scannerView.setResultHandler(ScanQrCodeScreen.this); // Register ourselves as a handler for scan results. scannerView.startCamera(); } else { scannerView.setVisibility(View.GONE); noPermissionView.setVisibility(View.VISIBLE); } } @Override protected void onPause() { super.onPause(); scannerView.stopCamera(); } @Override public void handleResult(Result result) { Intent data = new Intent(); data.setData(Uri.parse(result.getText())); setResult(RESULT_OK, data); finish(); } PermissionListener permissionlistener = new PermissionListener() { @Override public void onPermissionGranted() { scannerView.setResultHandler(ScanQrCodeScreen.this); // Register ourselves as a handler for scan results. scannerView.startCamera(); scannerView.setVisibility(View.VISIBLE); noPermissionView.setVisibility(View.GONE); } @Override public void onPermissionDenied(ArrayList<String> deniedPermissions) { scannerView.setVisibility(View.GONE); noPermissionView.setVisibility(View.VISIBLE); } }; }