Skip to content

Commit

Permalink
feature/image attachment form complete (camera image only)
Browse files Browse the repository at this point in the history
  • Loading branch information
IbrahimSaeedPurdue authored and IbrahimSaeedPurdue committed Apr 11, 2021
1 parent e94ffde commit 81151b2
Show file tree
Hide file tree
Showing 6 changed files with 352 additions and 68 deletions.
18 changes: 8 additions & 10 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,27 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sf.stormwaterutilityandroid">

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.StormWaterUtilityAndroid">
<activity android:name=".Settings"></activity>

<activity android:name=".MainMenu" >
<activity android:name=".ImageAttachForm"></activity>
<activity android:name=".Settings" />
<activity android:name=".MainMenu">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".WaterWay.WaterWayNav"
>
</activity>
<activity android:name=".Construction.ConstructionNav">

</activity>
<activity android:name=".WaterWay.WaterWayNav"></activity>
<activity android:name=".Construction.ConstructionNav"></activity>
<activity android:name=".Reset_password" />
<activity android:name=".SampleFordm" />
<activity android:name=".InspectionForm" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ public class ConstructionFormData {
// List<String> imgLink

public ConstructionFormData(String contact, String date, String inspector,
String location, List<String> answers, List<String> imgLink) {
String location, List<String> answers, List<String> imgLinks) {
data = new HashMap<>();
data.put("contact", contact);
data.put("date", date);
data.put("inspector", inspector);
data.put("location", location);
data.put("answers", answers);
data.put("imgLink", imgLink);
data.put("imgLinks", imgLinks);
}

public Map<String, Object> getMap() {
Expand Down
200 changes: 200 additions & 0 deletions app/src/main/java/com/sf/stormwaterutilityandroid/ImageAttachForm.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
package com.sf.stormwaterutilityandroid;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.Button;
import android.widget.ImageView;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import java.io.ByteArrayOutputStream;
import java.io.Serializable;
import java.util.ArrayList;

import javax.annotation.Nullable;

public class ImageAttachForm extends AppCompatActivity {
private static final int OPEN_GALLERY_REQUEST = 2;
private static final int OPEN_CAMERA_REQUEST = 3;

private Button uploadCameraImageBtn;
private Button uploadGalleryImageBtn;
private Button uploadImageBackBtn;


private ArrayList<Uri> imageURIs;

private ArrayList<ImageView> imageViews;


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

this.uploadCameraImageBtn = findViewById(R.id.uploadCameraImageBtn);
this.uploadGalleryImageBtn = findViewById(R.id.uploadGalleryImageBtn);
this.uploadImageBackBtn = findViewById(R.id.uploadImageBackBtn);

// this.imageView = findViewById(R.id.ImageView1);


// this.imageUri = null;

this.imageURIs = new ArrayList<>(3);

imageViews = new ArrayList<>();

this.imageViews.add(findViewById(R.id.ImageView1));
this.imageViews.add(findViewById(R.id.ImageView2));
this.imageViews.add(findViewById(R.id.ImageView3));

initActionListeners();
}

private void initActionListeners() {

uploadImageBackBtn.setOnClickListener(view -> {
if (imageURIs == null) {
setResult(RESULT_CANCELED);
finish();
}

Intent data = new Intent();
// data.putExtra("imageURIs", imageURIs.toArray());
Bundle args = new Bundle();
args.putSerializable("IMAGEURIS", (Serializable) imageURIs);
data.putExtra("BUNDLE", args);
setResult(RESULT_OK, data);
finish();
});


// pick from gallery
uploadGalleryImageBtn.setOnClickListener(view -> {
chooseGalleryImage();
});

// pick from camera
uploadCameraImageBtn.setOnClickListener(view -> {
// request camera permission if not granted already
if (ContextCompat.checkSelfPermission(ImageAttachForm.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(ImageAttachForm.this,
new String[]{
Manifest.permission.CAMERA
},
100);
}

chooseCameraImage();
});

imageViews.get(0).setOnClickListener(view -> {
imageURIs.remove(0);
updateImageViews();
});

imageViews.get(1).setOnClickListener(view -> {
imageURIs.remove(1);
updateImageViews();
});

imageViews.get(2).setOnClickListener(view -> {
imageURIs.remove(2);
updateImageViews();
});
}

private void chooseCameraImage() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, OPEN_CAMERA_REQUEST);
}


private void chooseGalleryImage() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, OPEN_GALLERY_REQUEST);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == OPEN_GALLERY_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri newImageUri = data.getData();
//this.imageView.setImageURI(imageUri);
addImage(newImageUri);

// uploadPicture();
} else if (requestCode == OPEN_CAMERA_REQUEST && resultCode == RESULT_OK && data != null && data.getExtras() != null) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");

ByteArrayOutputStream bytes = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(getContentResolver(), imageBitmap, "Title", null);
// this.imageUri = Uri.parse(path);
Uri newImageUri = Uri.parse(path);
addImage(newImageUri);


// uploadPicture();
}
}

// private void uploadPicture() {
// final String randomKey = UUID.randomUUID().toString();
// StorageReference storageRef = storageReference.child("images/" + randomKey);
// storageRef.putFile(imageUri)
// .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
// @Override
// public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// System.out.println("SUCCESSS!!!");
// Task<Uri> downloadUri = taskSnapshot.getStorage().getDownloadUrl();
// System.out.println("downloadUri: " + downloadUri);
// }
// })
// .addOnFailureListener(new OnFailureListener() {
// @Override
// public void onFailure(@NonNull Exception e) {
// System.out.println("FAILEDDD");
// }
// });
// }

// adds image to imageURIs list and to the recycle view of displayed images
private void addImage(Uri newImageUri) {
System.out.println("Image URI HEREEE!!!: " + newImageUri);


if (imageURIs.size() == 3) {
// send message to remove 1
System.out.println("EARLY RETURN !!!!!");
return;
}

this.imageURIs.add(newImageUri);

System.out.println("ImageURIs:\n" + imageURIs);
updateImageViews();
}

private void updateImageViews() {
// set images to first views
int i = 0;
for (i = 0; i < imageURIs.size(); i++) {
imageViews.get(i).setImageURI(imageURIs.get(i));
}

// set the rest to invisible
while (i < 3) imageViews.get(i++).setImageURI(null);
}
}
Loading

0 comments on commit 81151b2

Please sign in to comment.