Skip to content

Commit

Permalink
Merge pull request #69 from stantmob/feature/INS-943-insert-data-into…
Browse files Browse the repository at this point in the history
…-photos

Feature/INS-943
  • Loading branch information
cleylsonsouza authored Oct 17, 2022
2 parents 428d2ed + 77ee176 commit 6e15aff
Show file tree
Hide file tree
Showing 17 changed files with 567 additions and 170 deletions.
2 changes: 2 additions & 0 deletions cardshowviewtakenpicturesview/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ dependencies {
})

testImplementation 'junit:junit:4.13'

implementation 'com.google.android.gms:play-services-location:20.0.0'
}
repositories {
mavenCentral()
Expand Down
2 changes: 2 additions & 0 deletions cardshowviewtakenpicturesview/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-feature android:name="android.hardware.camera" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -437,8 +437,8 @@ private boolean notAtTheImageCountLimit() {
}

private void openPickGalleryIntent() {
if (!AppPermissions.hasPermissions((mActivity))) {
AppPermissions.requestPermissions(mActivity);
if (!AppPermissions.hasPermissionsOn((mActivity))) {
AppPermissions.requestPermissionsFor(mActivity);
} else {
dispatchTakePictureOrPickGalleryIntent();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,37 +1,42 @@
package br.com.stant.libraries.cardshowviewtakenpicturesview.camera;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

import br.com.stant.libraries.cardshowviewtakenpicturesview.R;
import br.com.stant.libraries.cardshowviewtakenpicturesview.domain.model.SaveOnlyMode;
import br.com.stant.libraries.cardshowviewtakenpicturesview.utils.ActivityUtils;

import static br.com.stant.libraries.cardshowviewtakenpicturesview.CardShowTakenPictureView.KEY_DRAG_AND_DROP_MODE;
import static br.com.stant.libraries.cardshowviewtakenpicturesview.CardShowTakenPictureView.KEY_IMAGE_LIST_SIZE;
import static br.com.stant.libraries.cardshowviewtakenpicturesview.CardShowTakenPictureView.KEY_IS_CAPTION_ENABLED;
import static br.com.stant.libraries.cardshowviewtakenpicturesview.CardShowTakenPictureView.KEY_IS_MULTIPLE_GALLERY_SELECTION;
import static br.com.stant.libraries.cardshowviewtakenpicturesview.CardShowTakenPictureView.KEY_LIMIT_IMAGES;
import static br.com.stant.libraries.cardshowviewtakenpicturesview.CardShowTakenPictureView.KEY_SAVE_ONLY_MODE;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

import br.com.stant.libraries.cardshowviewtakenpicturesview.R;
import br.com.stant.libraries.cardshowviewtakenpicturesview.domain.model.SaveOnlyMode;
import br.com.stant.libraries.cardshowviewtakenpicturesview.utils.ActivityUtils;

public class CameraActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera_activity);

Integer limitImages = getIntent().getIntExtra(KEY_LIMIT_IMAGES, -1);
Integer image_list_size = getIntent().getIntExtra(KEY_IMAGE_LIST_SIZE, 0);
Integer limitImages = getIntent().getIntExtra(KEY_LIMIT_IMAGES, -1);
Integer image_list_size = getIntent().getIntExtra(KEY_IMAGE_LIST_SIZE, 0);
Boolean isMultipleGallerySelection = getIntent().getBooleanExtra(KEY_IS_MULTIPLE_GALLERY_SELECTION, false);
SaveOnlyMode saveOnlyMode = getIntent().getParcelableExtra(KEY_SAVE_ONLY_MODE);
Boolean dragAndDropMode = getIntent().getBooleanExtra(KEY_DRAG_AND_DROP_MODE, false);
Boolean isCaptionEnabled = getIntent().getBooleanExtra(KEY_IS_CAPTION_ENABLED, false);

CameraFragment mCameraFragment = CameraFragment.newInstance(limitImages, image_list_size,
isMultipleGallerySelection, saveOnlyMode, dragAndDropMode, isCaptionEnabled);
SaveOnlyMode saveOnlyMode = getIntent().getParcelableExtra(KEY_SAVE_ONLY_MODE);
Boolean dragAndDropMode = getIntent().getBooleanExtra(KEY_DRAG_AND_DROP_MODE, false);
Boolean isCaptionEnabled = getIntent().getBooleanExtra(KEY_IS_CAPTION_ENABLED, false);

CameraFragment mCameraFragment = CameraFragment.newInstance(
limitImages,
image_list_size,
isMultipleGallerySelection,
saveOnlyMode,
dragAndDropMode,
isCaptionEnabled
);
ActivityUtils.addFragmentToActivity(getSupportFragmentManager(), mCameraFragment, R.id.camera_content_frame);
}


}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,20 +1,5 @@
package br.com.stant.libraries.cardshowviewtakenpicturesview.camera.utils;

import android.content.Context;
import androidx.annotation.DrawableRes;
import android.view.View;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.Toast;

import br.com.stant.libraries.cardshowviewtakenpicturesview.R;
import io.fotoapparat.Fotoapparat;
import io.fotoapparat.configuration.CameraConfiguration;
import io.fotoapparat.configuration.UpdateConfiguration;
import io.fotoapparat.parameter.ScaleType;
import io.fotoapparat.view.CameraView;
import io.fotoapparat.view.FocusView;

import static br.com.stant.libraries.cardshowviewtakenpicturesview.utils.ImageGenerator.fromCameraBack;
import static br.com.stant.libraries.cardshowviewtakenpicturesview.utils.ImageGenerator.fromCameraFront;
import static io.fotoapparat.log.LoggersKt.fileLogger;
Expand All @@ -35,21 +20,39 @@
import static io.fotoapparat.selector.SelectorsKt.firstAvailable;
import static io.fotoapparat.selector.SensorSensitivitySelectorsKt.highestSensorSensitivity;

import android.content.Context;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.Toast;

import androidx.annotation.DrawableRes;

import br.com.stant.libraries.cardshowviewtakenpicturesview.R;
import io.fotoapparat.Fotoapparat;
import io.fotoapparat.configuration.CameraConfiguration;
import io.fotoapparat.configuration.UpdateConfiguration;
import io.fotoapparat.parameter.ScaleType;
import io.fotoapparat.view.CameraView;
import io.fotoapparat.view.FocusView;

public class CameraSetup {

private final Context mContext;
private final Fotoapparat mFotoapparat;
private final CameraConfiguration mCameraConfiguration;

private boolean mActiveCameraBack;
private boolean mIsChecked;
public boolean mIsFlashChecked;
public boolean mIsDataInfoChecked;
private Integer mLensPosition;

public CameraSetup(Context context, CameraView cameraView, FocusView focusView) {
mContext = context;
mFotoapparat = createCamera(focusView, cameraView);
mContext = context;
mFotoapparat = createCamera(focusView, cameraView);
mCameraConfiguration = createSettings();
mLensPosition = fromCameraFront;
mLensPosition = fromCameraFront;
}

private Fotoapparat createCamera(FocusView focusView, CameraView cameraView) {
Expand Down Expand Up @@ -96,16 +99,32 @@ public Fotoapparat getFotoapparat() {

public void toggleTorchOnSwitch(View view) {
view.setOnClickListener(v -> {
boolean isNotChecked = !mIsChecked;
boolean isNotChecked = !mIsFlashChecked;

if (isNotChecked) {
mFotoapparat.updateConfiguration(UpdateConfiguration.builder().flash(on()).build());
changeViewImageResource((ImageView) view, R.drawable.ic_flash_yes);
mIsChecked = true;
mIsFlashChecked = true;
} else {
mFotoapparat.updateConfiguration(UpdateConfiguration.builder().flash(off()).build());
changeViewImageResource((ImageView) view, R.drawable.ic_flash_no);
mIsChecked = false;
mIsFlashChecked = false;
}
});
}

public void toggleDataInfoOnSwitch(View view, LinearLayout linearLayout) {
view.setOnClickListener(v -> {
boolean isNotChecked = !mIsDataInfoChecked;

if (isNotChecked) {
linearLayout.setVisibility(View.VISIBLE);
changeViewImageResource((ImageView) view, R.drawable.ic_baseline_data_on);
mIsDataInfoChecked = true;
} else {
linearLayout.setVisibility(View.GONE);
changeViewImageResource((ImageView) view, R.drawable.ic_baseline_data_off);
mIsDataInfoChecked = false;
}
});
}
Expand Down Expand Up @@ -141,7 +160,7 @@ public void switchCameraOnClick(View switchCameraView, View flashView) {
private void switchCameraOnClickVerify(View view, View flashView) {
view.setOnClickListener(
(v) -> {
mIsChecked = false;
mIsFlashChecked = false;
changeViewImageResource((ImageView) flashView, R.drawable.ic_flash_no);

if (mActiveCameraBack) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
import androidx.core.app.ActivityCompat;
import android.view.View;
import android.widget.TextView;

import androidx.core.app.ActivityCompat;

import java.util.ArrayList;
import java.util.List;

Expand All @@ -27,13 +28,15 @@ public class AppPermissions {
public static final Integer PERMISSIONS_CODE = 1;
private static boolean doNotAskIsChecked = false;
private static String[] deniedPermissions;
private static String[] PERMISSIONS = {Manifest.permission.READ_PHONE_STATE
private static final String[] PERMISSIONS = {Manifest.permission.READ_PHONE_STATE
, Manifest.permission.CAMERA
, Manifest.permission.READ_EXTERNAL_STORAGE
, Manifest.permission.WRITE_EXTERNAL_STORAGE};
, Manifest.permission.WRITE_EXTERNAL_STORAGE
, Manifest.permission.ACCESS_COARSE_LOCATION
, Manifest.permission.ACCESS_FINE_LOCATION};

public static void requestPermissions(Activity activity) {
if(isNotApiAndroidM()) return;
public static void requestPermissionsFor(Activity activity) {
if (isNotApiAndroidM()) return;

buildPermissionDialog(activity).show();
}
Expand All @@ -44,26 +47,26 @@ private static Dialog buildPermissionDialog(Activity activity) {

if (donNotAskIsChecked()) {
configureDialogs(activity, informationDialog, View.VISIBLE, R.string.permission_information_dialog_never_checked_message);
}
else {
} else {
configureDialogs(activity, informationDialog, View.GONE, R.string.permission_information_dialog_message);
}

return informationDialog;
}

private static boolean donNotAskIsChecked() {
return doNotAskIsChecked;
return doNotAskIsChecked;
}

private static boolean isNotApiAndroidM() {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.M;
}

private static void configureDialogs(Activity activity, Dialog informationDialog,
int visibility, int contentText){
TextView informationText = (TextView) informationDialog.findViewById(R.id.permission_information_dialog_text_view);
TextView settingsButton = (TextView) informationDialog.findViewById(R.id.permission_information_dialog_go_to_settings_text_view);
TextView okButton = (TextView) informationDialog.findViewById(R.id.permission_information_dialog_confirmation_text_view);
int visibility, int contentText) {
TextView informationText = informationDialog.findViewById(R.id.permission_information_dialog_text_view);
TextView settingsButton = informationDialog.findViewById(R.id.permission_information_dialog_go_to_settings_text_view);
TextView okButton = informationDialog.findViewById(R.id.permission_information_dialog_confirmation_text_view);

informationText.setText(activity.getResources().getString(contentText));

Expand All @@ -88,15 +91,16 @@ private static void addListeners(Activity activity, Dialog informationDialog, Te
}

private static void requestPermission(Activity activity) {
if (!hasPermissions(activity.getApplicationContext()) && deniedPermissions != null) {
if (!hasPermissionsOn(activity.getApplicationContext()) && deniedPermissions != null) {
ActivityCompat.requestPermissions(activity, deniedPermissions, PERMISSIONS_CODE);
deniedPermissions = null;
} else if (!hasPermissions(activity.getApplicationContext()) && deniedPermissions == null ){
} else if (!hasPermissionsOn(activity.getApplicationContext()) && deniedPermissions == null) {
ActivityCompat.requestPermissions(activity, PERMISSIONS, PERMISSIONS_CODE);
}
}

public static boolean hasPermissions(Context context) {
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
public static boolean hasPermissionsOn(Context context) {
boolean result = true;
List<String> deniedPermissions = new ArrayList<>();
for (String permission : PERMISSIONS) {
Expand All @@ -111,6 +115,16 @@ public static boolean hasPermissions(Context context) {
return result;
}

public static boolean hasLocationPermissionsOn(Context context) {
boolean hasFineLocationPermission = ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
boolean hasCoarseLocationPermission = ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED;

return hasFineLocationPermission && hasCoarseLocationPermission;
}

@SuppressWarnings("unused")
public static void setDoNotAskAsChecked() {
doNotAskIsChecked = true;
}
Expand Down
Loading

0 comments on commit 6e15aff

Please sign in to comment.