Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.lesjaw.wamonitoring.ui;
- import android.Manifest;
- import android.app.Activity;
- import android.app.ActivityOptions;
- import android.app.PendingIntent;
- import android.app.ProgressDialog;
- import android.content.ComponentName;
- import android.content.ContentResolver;
- import android.content.ContentValues;
- import android.content.Context;
- import android.content.Intent;
- import android.content.SharedPreferences;
- import android.content.pm.PackageManager;
- import android.content.pm.ResolveInfo;
- import android.database.Cursor;
- import android.graphics.Bitmap;
- import android.graphics.Color;
- import android.media.MediaScannerConnection;
- import android.net.Uri;
- import android.os.AsyncTask;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Environment;
- import android.os.Parcelable;
- import android.preference.PreferenceManager;
- import android.provider.MediaStore;
- import android.support.annotation.RequiresApi;
- import android.support.annotation.StringRes;
- import android.support.v4.content.LocalBroadcastManager;
- import android.support.v7.app.ActionBar;
- import android.support.v7.app.AppCompatActivity;
- import android.system.ErrnoException;
- import android.text.Html;
- import android.util.Log;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.CheckBox;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.androidadvance.topsnackbar.TSnackbar;
- import com.gun0912.tedpermission.PermissionListener;
- import com.gun0912.tedpermission.TedPermission;
- import com.lesjaw.wamonitoring.R;
- import com.lesjaw.wamonitoring.utils.NotificationActions;
- import com.theartofdev.edmodo.cropper.CropImageView;
- import net.gotev.uploadservice.MultipartUploadRequest;
- import net.gotev.uploadservice.ServerResponse;
- import net.gotev.uploadservice.UploadInfo;
- import net.gotev.uploadservice.UploadNotificationAction;
- import net.gotev.uploadservice.UploadNotificationConfig;
- import net.gotev.uploadservice.UploadStatusDelegate;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.UUID;
- public class UploadFotoTags extends AppCompatActivity {
- private CropImageView mCropImageView;
- private static final String IMAGE_DIRECTORY = "/wamonitoring";
- SharedPreferences sharedPref;
- String mEmail;
- LinearLayout relative;
- CheckBox id_card;
- CheckBox npwp;
- Bitmap cropped;
- String trid;
- String typeFoto;
- boolean check;
- private ProgressDialog pDialog;
- private String mCurrentPhotoPath;
- static final int REQUEST_IMAGE_CAPTURE = 1;
- PermissionListener permissionlistener = new PermissionListener() {
- @Override
- public void onPermissionGranted() {
- //Toast.makeText(getApplicationContext(), "Permission Granted", Toast.LENGTH_SHORT).show();
- }
- @Override
- public void onPermissionDenied(ArrayList<String> deniedPermissions) {
- Toast.makeText(getApplicationContext(), "Permission Denied\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show();
- }
- };
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.foto_upload_data_v1);
- overridePendingTransition(R.anim.trans_left_in, R.anim.trans_left_out);
- sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
- mEmail = sharedPref.getString("email", "jakarta");
- mCropImageView = (CropImageView) findViewById(R.id.CropImageView);
- relative = (LinearLayout) findViewById(R.id.relative);
- id_card = (CheckBox) findViewById(R.id.id_card);
- npwp = (CheckBox) findViewById(R.id.npwp);
- new TedPermission(this)
- .setPermissionListener(permissionlistener)
- .setDeniedMessage("If you reject permission,you can not use this service\n\nPlease turn on permissions at [Setting] > [Permission]")
- .setPermissions(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
- Manifest.permission.CAMERA, Manifest.permission.INTERNET)
- .check();
- Intent i = getIntent();
- trid = i.getStringExtra("trid");
- typeFoto = i.getStringExtra("type");
- setupActionBar();
- id_card.setOnCheckedChangeListener((buttonView, isChecked) -> {
- if (id_card.isChecked()) check = true;
- });
- npwp.setOnCheckedChangeListener((buttonView, isChecked) -> {
- if (id_card.isChecked()) check = true;
- });
- if(typeFoto.equals("before_foto")){
- id_card.setChecked(true);
- npwp.setVisibility(View.GONE);
- }else if (typeFoto.equals("after_foto")){
- npwp.setChecked(true);
- id_card.setVisibility(View.GONE);
- }else{
- id_card.setOnClickListener(v -> {
- typeFoto = "before_foto";
- npwp.setChecked(false);
- });
- npwp.setOnClickListener(v -> {
- typeFoto = "after_foto";
- id_card.setChecked(false);
- });
- }
- }
- public void onLoadImageClick(View view) {
- if (!npwp.isChecked() && !id_card.isChecked()) {
- TSnackbar snackbar = TSnackbar.make(view, "Please check mark the BEFORE or AFTER photo, What photo is this?", TSnackbar.LENGTH_LONG);
- View snackbarView = snackbar.getView();
- snackbarView.setBackgroundColor(Color.parseColor("#FF4081"));
- snackbar.setActionTextColor(Color.BLACK);
- snackbar.setAction("OK", v -> {
- });
- snackbar.show();
- } else {
- if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
- Log.d("DEBUG", "onLoadImageClick: ANDROID M-");
- Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- if (captureIntent.resolveActivity(getPackageManager()) != null) {
- // Create the File where the photo should go
- File photoFile = null;
- try {
- photoFile = createImageFile();
- } catch (IOException ex) {
- // Error occurred while creating the File
- Log.i("DEBUG", "IOException");
- }
- // Continue only if the File was successfully created
- if (photoFile != null) {
- captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
- startActivityForResult(captureIntent, REQUEST_IMAGE_CAPTURE);
- }
- }
- } else {
- Log.d("DEBUG", "onLoadImageClick: ANDROID N+");
- startActivityForResult(getPickImageChooserIntent(), 200);
- }
- }
- }
- private File createImageFile() throws IOException {
- // Create an image file name
- String imageFileName = "TAGS";
- File storageDir = new File(Environment.getExternalStorageDirectory() + IMAGE_DIRECTORY + "/upload");
- if (!storageDir.exists()) {
- storageDir.mkdirs();
- }
- File image = File.createTempFile(
- imageFileName, // prefix
- ".jpg", // suffix
- storageDir // directory
- );
- mCurrentPhotoPath = "file:" + image.getAbsolutePath();
- return image;
- }
- public void onCropImageClick(View view) {
- cropped = mCropImageView.getCroppedImage(1000, 1000);
- if (cropped != null)
- mCropImageView.setImageBitmap(cropped);
- }
- public void onUploadImageClick(View view) {
- if (cropped != null) {
- saveImage(cropped);
- //finish();
- } else {
- TSnackbar snackbar = TSnackbar.make(view, "You are not cropping the photo", TSnackbar.LENGTH_LONG);
- View snackbarView = snackbar.getView();
- snackbarView.setBackgroundColor(Color.parseColor("#FF4081"));
- snackbar.setActionTextColor(Color.BLACK);
- snackbar.setAction("OK", v -> {
- });
- snackbar.show();
- }
- }
- private void setupActionBar() {
- ActionBar actionBar = getSupportActionBar();
- getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffffff'>Tags Photo upload</font>"));
- if (actionBar != null) {
- // Show the Up button in the action bar.
- actionBar.setDisplayHomeAsUpEnabled(true);
- }
- }
- Uri imageUri;
- public Intent getPickImageChooserIntent() {
- ContentValues values = new ContentValues();
- values.put(MediaStore.Images.Media.TITLE, "New Picture");
- values.put(MediaStore.Images.Media.DESCRIPTION, "From your Camera");
- imageUri = getContentResolver().insert(
- MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
- Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
- return captureIntent;
- }
- /**
- * Test if we can open the given Android URI to test if permission required error is thrown.<br>
- */
- @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
- public boolean isUriRequiresPermissions(Uri uri) {
- try {
- ContentResolver resolver = getContentResolver();
- InputStream stream = resolver.openInputStream(uri);
- stream.close();
- return false;
- } catch (FileNotFoundException e) {
- if (e.getCause() instanceof ErrnoException) {
- return true;
- }
- } catch (Exception ignored) {
- }
- return false;
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- Bitmap photo = null;
- if (resultCode == Activity.RESULT_OK || resultCode == 0) {
- try {
- if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
- photo = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(mCurrentPhotoPath));
- } else {
- photo = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- // For API >= 23 we need to check specifically that we have permissions to read external storage,
- // but we don't know if we need to for the URI so the simplest is to try open the stream and see if we get error.
- boolean requirePermissions = false;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
- checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED &&
- isUriRequiresPermissions(imageUri)) {
- // request permissions and handle the result in onRequestPermissionsResult()
- requirePermissions = true;
- requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 0);
- }
- if (!requirePermissions) {
- mCropImageView.setImageBitmap(photo);
- }
- }
- }
- public String saveImage(Bitmap myBitmap) {
- ByteArrayOutputStream bytes = new ByteArrayOutputStream();
- myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
- File wallpaperDirectory = new File(
- Environment.getExternalStorageDirectory() + IMAGE_DIRECTORY + "/fotodata");
- // have the object build the directory structure, if needed.
- if (!wallpaperDirectory.exists()) {
- wallpaperDirectory.mkdirs();
- }
- try {
- File f = new File(wallpaperDirectory, mEmail + ".jpg");
- f.createNewFile();
- FileOutputStream fo = new FileOutputStream(f);
- fo.write(bytes.toByteArray());
- MediaScannerConnection.scanFile(this,
- new String[]{f.getPath()},
- new String[]{"image/jpeg"}, null);
- fo.close();
- Log.d("TAG", "File Saved::--->" + f.getAbsolutePath());
- new uploadImg(f.getAbsolutePath()).execute();
- return f.getAbsolutePath();
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- return "";
- }
- private class uploadImg extends AsyncTask<Void, Void, Void> {
- String img;
- uploadImg(String img) {
- this.img = img;
- }
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- }
- @Override
- protected Void doInBackground(Void... arg0) {
- String url = "https://olmatix.com/wamonitoring/update_foto_tags.php";
- try {
- String uploadId = UUID.randomUUID().toString();
- //Creating a multi part request
- new MultipartUploadRequest(UploadFotoTags.this, uploadId, url)
- .addFileToUpload(img, "image") //Adding file
- .addParameter("name", trid) //Adding text parameter to the request
- .addParameter("type", typeFoto) //Adding text parameter to the request
- .setNotificationConfig(new UploadNotificationConfig())
- .setMaxRetries(2)
- .setDelegate(new UploadStatusDelegate() {
- @Override
- public void onProgress(Context context, UploadInfo uploadInfo) {
- pDialog = new ProgressDialog(UploadFotoTags.this);
- pDialog.setMessage("Uploading. Please wait...");
- pDialog.setCancelable(false);
- pDialog.setCanceledOnTouchOutside(false);
- pDialog.show();
- }
- @Override
- public void onError(Context context, UploadInfo uploadInfo, ServerResponse serverResponse, Exception exception) {
- Toast.makeText(getBaseContext(), "Upload Error", Toast.LENGTH_SHORT).show();
- finish();
- }
- @Override
- public void onCompleted(Context context, UploadInfo uploadInfo, ServerResponse serverResponse) {
- Toast.makeText(getBaseContext(), "Upload complete", Toast.LENGTH_SHORT).show();
- if(typeFoto.equals("before_foto")) {
- Intent i = new Intent(getBaseContext(), FragmentContainer.class);
- i.putExtra("id_fragement", "ChecklistTask");
- startActivity(i);
- }
- pDialog.dismiss();
- finish();
- /*
- TSnackbar snackbar = TSnackbar.make(relative, "Upload photo success", TSnackbar.LENGTH_LONG);
- View snackbarView = snackbar.getView();
- snackbarView.setBackgroundColor(Color.parseColor("#FF4081"));
- snackbar.setAction("OK", v -> {
- });
- snackbar.setActionTextColor(Color.BLACK);
- snackbar.show();
- */
- }
- @Override
- public void onCancelled(Context context, UploadInfo uploadInfo) {
- Toast.makeText(getBaseContext(), "Upload Cancel", Toast.LENGTH_SHORT).show();
- finish();
- }
- })
- .startUpload(); //Starting the upload
- } catch (Exception exc) {
- //Toast.makeText(UploadFotoTags.this, exc.getMessage(), Toast.LENGTH_SHORT).show();
- Log.d("DEBUG", "doInBackground: "+exc.getMessage());
- }
- return null;
- }
- @Override
- protected void onPostExecute(Void result) {
- super.onPostExecute(result);
- }
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int id = item.getItemId();
- if (id == android.R.id.home) {
- finish();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- /*
- protected UploadNotificationConfig getNotificationConfig(final String uploadId, @StringRes int title) {
- UploadNotificationConfig config = new UploadNotificationConfig();
- PendingIntent clickIntent = PendingIntent.getActivity(
- this, 1, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
- config.setTitleForAllStatuses(getString(title))
- .setRingToneEnabled(true)
- .setClickIntentForAllStatuses(clickIntent)
- .setClearOnActionForAllStatuses(true);
- config.getProgress().message = getString(R.string.uploading);
- config.getProgress().iconResourceID = R.drawable.ic_upload;
- config.getProgress().iconColorResourceID = Color.BLUE;
- config.getProgress().actions.add(new UploadNotificationAction(
- R.drawable.ic_cancelled,
- getString(R.string.cancel_upload),
- NotificationActions.getCancelUploadAction(this, 1, uploadId)));
- config.getCompleted().message = getString(R.string.upload_success);
- config.getCompleted().iconResourceID = R.drawable.ic_upload_success;
- config.getCompleted().iconColorResourceID = Color.GREEN;
- config.getError().message = getString(R.string.upload_error);
- config.getError().iconResourceID = R.drawable.ic_upload_error;
- config.getError().iconColorResourceID = Color.RED;
- config.getCancelled().message = getString(R.string.upload_cancelled);
- config.getCancelled().iconResourceID = R.drawable.ic_cancelled;
- config.getCancelled().iconColorResourceID = Color.YELLOW;
- return config;
- }*/
- @Override
- public void onBackPressed() {
- super.onBackPressed();
- overridePendingTransition(R.anim.trans_right_in, R.anim.trans_right_out);
- //finish();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement