Advertisement
lesjaw

Untitled

May 11th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.92 KB | None | 0 0
  1. package com.lesjaw.wamonitoring.ui;
  2.  
  3. import android.Manifest;
  4. import android.app.Activity;
  5. import android.app.ActivityOptions;
  6. import android.app.PendingIntent;
  7. import android.app.ProgressDialog;
  8. import android.content.ComponentName;
  9. import android.content.ContentResolver;
  10. import android.content.ContentValues;
  11. import android.content.Context;
  12. import android.content.Intent;
  13. import android.content.SharedPreferences;
  14. import android.content.pm.PackageManager;
  15. import android.content.pm.ResolveInfo;
  16. import android.database.Cursor;
  17. import android.graphics.Bitmap;
  18. import android.graphics.Color;
  19. import android.media.MediaScannerConnection;
  20. import android.net.Uri;
  21. import android.os.AsyncTask;
  22. import android.os.Build;
  23. import android.os.Bundle;
  24. import android.os.Environment;
  25. import android.os.Parcelable;
  26. import android.preference.PreferenceManager;
  27. import android.provider.MediaStore;
  28. import android.support.annotation.RequiresApi;
  29. import android.support.annotation.StringRes;
  30. import android.support.v4.content.LocalBroadcastManager;
  31. import android.support.v7.app.ActionBar;
  32. import android.support.v7.app.AppCompatActivity;
  33. import android.system.ErrnoException;
  34. import android.text.Html;
  35. import android.util.Log;
  36. import android.view.MenuItem;
  37. import android.view.View;
  38. import android.widget.CheckBox;
  39. import android.widget.LinearLayout;
  40. import android.widget.TextView;
  41. import android.widget.Toast;
  42.  
  43. import com.androidadvance.topsnackbar.TSnackbar;
  44. import com.gun0912.tedpermission.PermissionListener;
  45. import com.gun0912.tedpermission.TedPermission;
  46. import com.lesjaw.wamonitoring.R;
  47. import com.lesjaw.wamonitoring.utils.NotificationActions;
  48. import com.theartofdev.edmodo.cropper.CropImageView;
  49.  
  50. import net.gotev.uploadservice.MultipartUploadRequest;
  51. import net.gotev.uploadservice.ServerResponse;
  52. import net.gotev.uploadservice.UploadInfo;
  53. import net.gotev.uploadservice.UploadNotificationAction;
  54. import net.gotev.uploadservice.UploadNotificationConfig;
  55. import net.gotev.uploadservice.UploadStatusDelegate;
  56.  
  57. import java.io.ByteArrayOutputStream;
  58. import java.io.File;
  59. import java.io.FileNotFoundException;
  60. import java.io.FileOutputStream;
  61. import java.io.IOException;
  62. import java.io.InputStream;
  63. import java.util.ArrayList;
  64. import java.util.List;
  65. import java.util.UUID;
  66.  
  67.  
  68.  
  69. public class UploadFotoTags extends AppCompatActivity {
  70.  
  71. private CropImageView mCropImageView;
  72. private static final String IMAGE_DIRECTORY = "/wamonitoring";
  73. SharedPreferences sharedPref;
  74. String mEmail;
  75. LinearLayout relative;
  76. CheckBox id_card;
  77. CheckBox npwp;
  78. Bitmap cropped;
  79. String trid;
  80. String typeFoto;
  81. boolean check;
  82. private ProgressDialog pDialog;
  83. private String mCurrentPhotoPath;
  84. static final int REQUEST_IMAGE_CAPTURE = 1;
  85.  
  86. PermissionListener permissionlistener = new PermissionListener() {
  87. @Override
  88. public void onPermissionGranted() {
  89. //Toast.makeText(getApplicationContext(), "Permission Granted", Toast.LENGTH_SHORT).show();
  90. }
  91.  
  92. @Override
  93. public void onPermissionDenied(ArrayList<String> deniedPermissions) {
  94. Toast.makeText(getApplicationContext(), "Permission Denied\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show();
  95. }
  96. };
  97.  
  98. @Override
  99. protected void onCreate(Bundle savedInstanceState) {
  100. super.onCreate(savedInstanceState);
  101. setContentView(R.layout.foto_upload_data_v1);
  102. overridePendingTransition(R.anim.trans_left_in, R.anim.trans_left_out);
  103.  
  104. sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
  105. mEmail = sharedPref.getString("email", "jakarta");
  106.  
  107. mCropImageView = (CropImageView) findViewById(R.id.CropImageView);
  108. relative = (LinearLayout) findViewById(R.id.relative);
  109. id_card = (CheckBox) findViewById(R.id.id_card);
  110. npwp = (CheckBox) findViewById(R.id.npwp);
  111.  
  112. new TedPermission(this)
  113. .setPermissionListener(permissionlistener)
  114. .setDeniedMessage("If you reject permission,you can not use this service\n\nPlease turn on permissions at [Setting] > [Permission]")
  115. .setPermissions(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
  116. Manifest.permission.CAMERA, Manifest.permission.INTERNET)
  117. .check();
  118.  
  119.  
  120. Intent i = getIntent();
  121. trid = i.getStringExtra("trid");
  122. typeFoto = i.getStringExtra("type");
  123.  
  124. setupActionBar();
  125.  
  126. id_card.setOnCheckedChangeListener((buttonView, isChecked) -> {
  127. if (id_card.isChecked()) check = true;
  128.  
  129. });
  130.  
  131. npwp.setOnCheckedChangeListener((buttonView, isChecked) -> {
  132. if (id_card.isChecked()) check = true;
  133.  
  134. });
  135.  
  136. if(typeFoto.equals("before_foto")){
  137. id_card.setChecked(true);
  138. npwp.setVisibility(View.GONE);
  139. }else if (typeFoto.equals("after_foto")){
  140. npwp.setChecked(true);
  141. id_card.setVisibility(View.GONE);
  142. }else{
  143. id_card.setOnClickListener(v -> {
  144. typeFoto = "before_foto";
  145. npwp.setChecked(false);
  146. });
  147.  
  148. npwp.setOnClickListener(v -> {
  149. typeFoto = "after_foto";
  150. id_card.setChecked(false);
  151. });
  152. }
  153.  
  154. }
  155.  
  156. public void onLoadImageClick(View view) {
  157. if (!npwp.isChecked() && !id_card.isChecked()) {
  158. TSnackbar snackbar = TSnackbar.make(view, "Please check mark the BEFORE or AFTER photo, What photo is this?", TSnackbar.LENGTH_LONG);
  159. View snackbarView = snackbar.getView();
  160. snackbarView.setBackgroundColor(Color.parseColor("#FF4081"));
  161. snackbar.setActionTextColor(Color.BLACK);
  162. snackbar.setAction("OK", v -> {
  163.  
  164. });
  165. snackbar.show();
  166.  
  167. } else {
  168. if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
  169.  
  170. Log.d("DEBUG", "onLoadImageClick: ANDROID M-");
  171.  
  172. Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  173. if (captureIntent.resolveActivity(getPackageManager()) != null) {
  174. // Create the File where the photo should go
  175. File photoFile = null;
  176. try {
  177. photoFile = createImageFile();
  178. } catch (IOException ex) {
  179. // Error occurred while creating the File
  180. Log.i("DEBUG", "IOException");
  181. }
  182. // Continue only if the File was successfully created
  183. if (photoFile != null) {
  184. captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
  185. startActivityForResult(captureIntent, REQUEST_IMAGE_CAPTURE);
  186. }
  187. }
  188.  
  189. } else {
  190.  
  191. Log.d("DEBUG", "onLoadImageClick: ANDROID N+");
  192.  
  193. startActivityForResult(getPickImageChooserIntent(), 200);
  194. }
  195. }
  196. }
  197.  
  198. private File createImageFile() throws IOException {
  199. // Create an image file name
  200. String imageFileName = "TAGS";
  201. File storageDir = new File(Environment.getExternalStorageDirectory() + IMAGE_DIRECTORY + "/upload");
  202. if (!storageDir.exists()) {
  203. storageDir.mkdirs();
  204. }
  205. File image = File.createTempFile(
  206. imageFileName, // prefix
  207. ".jpg", // suffix
  208. storageDir // directory
  209. );
  210.  
  211. mCurrentPhotoPath = "file:" + image.getAbsolutePath();
  212.  
  213. return image;
  214. }
  215.  
  216. public void onCropImageClick(View view) {
  217. cropped = mCropImageView.getCroppedImage(1000, 1000);
  218. if (cropped != null)
  219. mCropImageView.setImageBitmap(cropped);
  220. }
  221.  
  222. public void onUploadImageClick(View view) {
  223. if (cropped != null) {
  224. saveImage(cropped);
  225. //finish();
  226. } else {
  227. TSnackbar snackbar = TSnackbar.make(view, "You are not cropping the photo", TSnackbar.LENGTH_LONG);
  228. View snackbarView = snackbar.getView();
  229. snackbarView.setBackgroundColor(Color.parseColor("#FF4081"));
  230. snackbar.setActionTextColor(Color.BLACK);
  231. snackbar.setAction("OK", v -> {
  232.  
  233. });
  234. snackbar.show();
  235. }
  236. }
  237.  
  238. private void setupActionBar() {
  239. ActionBar actionBar = getSupportActionBar();
  240. getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffffff'>Tags Photo upload</font>"));
  241.  
  242. if (actionBar != null) {
  243. // Show the Up button in the action bar.
  244. actionBar.setDisplayHomeAsUpEnabled(true);
  245. }
  246. }
  247.  
  248. Uri imageUri;
  249. public Intent getPickImageChooserIntent() {
  250.  
  251. ContentValues values = new ContentValues();
  252. values.put(MediaStore.Images.Media.TITLE, "New Picture");
  253. values.put(MediaStore.Images.Media.DESCRIPTION, "From your Camera");
  254. imageUri = getContentResolver().insert(
  255. MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
  256. Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  257. captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
  258.  
  259. return captureIntent;
  260. }
  261.  
  262. /**
  263. * Test if we can open the given Android URI to test if permission required error is thrown.<br>
  264. */
  265. @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
  266. public boolean isUriRequiresPermissions(Uri uri) {
  267. try {
  268. ContentResolver resolver = getContentResolver();
  269. InputStream stream = resolver.openInputStream(uri);
  270. stream.close();
  271. return false;
  272. } catch (FileNotFoundException e) {
  273. if (e.getCause() instanceof ErrnoException) {
  274. return true;
  275. }
  276. } catch (Exception ignored) {
  277. }
  278. return false;
  279. }
  280.  
  281. @Override
  282. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  283. Bitmap photo = null;
  284.  
  285. if (resultCode == Activity.RESULT_OK || resultCode == 0) {
  286.  
  287. try {
  288.  
  289. if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
  290. photo = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(mCurrentPhotoPath));
  291.  
  292. } else {
  293. photo = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
  294.  
  295. }
  296.  
  297. } catch (Exception e) {
  298. e.printStackTrace();
  299. }
  300.  
  301.  
  302. // For API >= 23 we need to check specifically that we have permissions to read external storage,
  303. // 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.
  304. boolean requirePermissions = false;
  305. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
  306. checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED &&
  307. isUriRequiresPermissions(imageUri)) {
  308.  
  309. // request permissions and handle the result in onRequestPermissionsResult()
  310. requirePermissions = true;
  311. requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 0);
  312. }
  313.  
  314. if (!requirePermissions) {
  315. mCropImageView.setImageBitmap(photo);
  316. }
  317. }
  318. }
  319.  
  320. public String saveImage(Bitmap myBitmap) {
  321. ByteArrayOutputStream bytes = new ByteArrayOutputStream();
  322. myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
  323. File wallpaperDirectory = new File(
  324. Environment.getExternalStorageDirectory() + IMAGE_DIRECTORY + "/fotodata");
  325. // have the object build the directory structure, if needed.
  326. if (!wallpaperDirectory.exists()) {
  327. wallpaperDirectory.mkdirs();
  328. }
  329.  
  330. try {
  331. File f = new File(wallpaperDirectory, mEmail + ".jpg");
  332. f.createNewFile();
  333. FileOutputStream fo = new FileOutputStream(f);
  334. fo.write(bytes.toByteArray());
  335. MediaScannerConnection.scanFile(this,
  336. new String[]{f.getPath()},
  337. new String[]{"image/jpeg"}, null);
  338. fo.close();
  339. Log.d("TAG", "File Saved::--->" + f.getAbsolutePath());
  340.  
  341. new uploadImg(f.getAbsolutePath()).execute();
  342.  
  343. return f.getAbsolutePath();
  344. } catch (IOException e1) {
  345. e1.printStackTrace();
  346. }
  347. return "";
  348. }
  349.  
  350.  
  351. private class uploadImg extends AsyncTask<Void, Void, Void> {
  352. String img;
  353.  
  354. uploadImg(String img) {
  355. this.img = img;
  356. }
  357.  
  358. @Override
  359. protected void onPreExecute() {
  360. super.onPreExecute();
  361.  
  362. }
  363.  
  364. @Override
  365. protected Void doInBackground(Void... arg0) {
  366. String url = "https://olmatix.com/wamonitoring/update_foto_tags.php";
  367.  
  368. try {
  369. String uploadId = UUID.randomUUID().toString();
  370. //Creating a multi part request
  371. new MultipartUploadRequest(UploadFotoTags.this, uploadId, url)
  372. .addFileToUpload(img, "image") //Adding file
  373. .addParameter("name", trid) //Adding text parameter to the request
  374. .addParameter("type", typeFoto) //Adding text parameter to the request
  375. .setNotificationConfig(new UploadNotificationConfig())
  376. .setMaxRetries(2)
  377. .setDelegate(new UploadStatusDelegate() {
  378. @Override
  379. public void onProgress(Context context, UploadInfo uploadInfo) {
  380. pDialog = new ProgressDialog(UploadFotoTags.this);
  381. pDialog.setMessage("Uploading. Please wait...");
  382. pDialog.setCancelable(false);
  383. pDialog.setCanceledOnTouchOutside(false);
  384. pDialog.show();
  385.  
  386.  
  387. }
  388.  
  389. @Override
  390. public void onError(Context context, UploadInfo uploadInfo, ServerResponse serverResponse, Exception exception) {
  391. Toast.makeText(getBaseContext(), "Upload Error", Toast.LENGTH_SHORT).show();
  392. finish();
  393. }
  394.  
  395. @Override
  396. public void onCompleted(Context context, UploadInfo uploadInfo, ServerResponse serverResponse) {
  397. Toast.makeText(getBaseContext(), "Upload complete", Toast.LENGTH_SHORT).show();
  398. if(typeFoto.equals("before_foto")) {
  399. Intent i = new Intent(getBaseContext(), FragmentContainer.class);
  400. i.putExtra("id_fragement", "ChecklistTask");
  401. startActivity(i);
  402. }
  403. pDialog.dismiss();
  404. finish();
  405. /*
  406. TSnackbar snackbar = TSnackbar.make(relative, "Upload photo success", TSnackbar.LENGTH_LONG);
  407. View snackbarView = snackbar.getView();
  408. snackbarView.setBackgroundColor(Color.parseColor("#FF4081"));
  409. snackbar.setAction("OK", v -> {
  410.  
  411. });
  412. snackbar.setActionTextColor(Color.BLACK);
  413. snackbar.show();
  414.  
  415. */
  416. }
  417.  
  418. @Override
  419. public void onCancelled(Context context, UploadInfo uploadInfo) {
  420. Toast.makeText(getBaseContext(), "Upload Cancel", Toast.LENGTH_SHORT).show();
  421. finish();
  422. }
  423. })
  424. .startUpload(); //Starting the upload
  425.  
  426. } catch (Exception exc) {
  427. //Toast.makeText(UploadFotoTags.this, exc.getMessage(), Toast.LENGTH_SHORT).show();
  428. Log.d("DEBUG", "doInBackground: "+exc.getMessage());
  429. }
  430.  
  431.  
  432. return null;
  433. }
  434.  
  435. @Override
  436. protected void onPostExecute(Void result) {
  437. super.onPostExecute(result);
  438. }
  439. }
  440.  
  441. @Override
  442. public boolean onOptionsItemSelected(MenuItem item) {
  443. int id = item.getItemId();
  444. if (id == android.R.id.home) {
  445. finish();
  446. return true;
  447. }
  448. return super.onOptionsItemSelected(item);
  449. }
  450. /*
  451. protected UploadNotificationConfig getNotificationConfig(final String uploadId, @StringRes int title) {
  452. UploadNotificationConfig config = new UploadNotificationConfig();
  453.  
  454. PendingIntent clickIntent = PendingIntent.getActivity(
  455. this, 1, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
  456.  
  457. config.setTitleForAllStatuses(getString(title))
  458. .setRingToneEnabled(true)
  459. .setClickIntentForAllStatuses(clickIntent)
  460. .setClearOnActionForAllStatuses(true);
  461.  
  462. config.getProgress().message = getString(R.string.uploading);
  463. config.getProgress().iconResourceID = R.drawable.ic_upload;
  464. config.getProgress().iconColorResourceID = Color.BLUE;
  465. config.getProgress().actions.add(new UploadNotificationAction(
  466. R.drawable.ic_cancelled,
  467. getString(R.string.cancel_upload),
  468. NotificationActions.getCancelUploadAction(this, 1, uploadId)));
  469.  
  470. config.getCompleted().message = getString(R.string.upload_success);
  471. config.getCompleted().iconResourceID = R.drawable.ic_upload_success;
  472. config.getCompleted().iconColorResourceID = Color.GREEN;
  473.  
  474. config.getError().message = getString(R.string.upload_error);
  475. config.getError().iconResourceID = R.drawable.ic_upload_error;
  476. config.getError().iconColorResourceID = Color.RED;
  477.  
  478. config.getCancelled().message = getString(R.string.upload_cancelled);
  479. config.getCancelled().iconResourceID = R.drawable.ic_cancelled;
  480. config.getCancelled().iconColorResourceID = Color.YELLOW;
  481.  
  482. return config;
  483. }*/
  484.  
  485. @Override
  486. public void onBackPressed() {
  487. super.onBackPressed();
  488. overridePendingTransition(R.anim.trans_right_in, R.anim.trans_right_out);
  489.  
  490. //finish();
  491. }
  492. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement