Advertisement
Guest User

CodeAndroid

a guest
Nov 12th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.88 KB | None | 0 0
  1. package boen.darbusauga;
  2.  
  3. import android.Manifest;
  4. import android.content.Intent;
  5. import android.content.pm.PackageManager;
  6. import android.graphics.Bitmap;
  7. import android.graphics.BitmapFactory;
  8. import android.net.Uri;
  9. import android.os.Environment;
  10. import android.provider.MediaStore;
  11. import android.support.annotation.NonNull;
  12. import android.support.v4.app.ActivityCompat;
  13. import android.support.v4.content.ContextCompat;
  14. import android.support.v4.content.FileProvider;
  15. import android.support.v7.app.AppCompatActivity;
  16. import android.os.Bundle;
  17. import android.text.Editable;
  18. import android.text.TextUtils;
  19. import android.text.TextWatcher;
  20. import android.util.Base64;
  21. import android.view.View;
  22. import android.widget.ArrayAdapter;
  23. import android.widget.Button;
  24. import android.widget.EditText;
  25. import android.widget.ImageView;
  26. import android.widget.Spinner;
  27. import android.widget.Toast;
  28.  
  29. import com.android.volley.AuthFailureError;
  30. import com.android.volley.Request;
  31. import com.android.volley.Response;
  32. import com.android.volley.VolleyError;
  33. import com.android.volley.toolbox.StringRequest;
  34.  
  35. import org.json.JSONException;
  36. import org.json.JSONObject;
  37.  
  38. import java.io.ByteArrayOutputStream;
  39. import java.io.File;
  40. import java.io.IOException;
  41. import java.text.SimpleDateFormat;
  42. import java.util.ArrayList;
  43. import java.util.Arrays;
  44. import java.util.Date;
  45. import java.util.HashMap;
  46. import java.util.List;
  47. import java.util.Map;
  48.  
  49. public class MainActivity extends AppCompatActivity implements View.OnClickListener{
  50.  
  51. private Button mChoose, mUpload, mCapture;
  52. private ImageView mImageView;
  53. private EditText mEditText;
  54. private final int IMAGE_REQUEST = 1;
  55. private final int REQUEST_TAKE_PHOTO = 20;
  56. private final static int REQUEST_CODE_ASK_PERMISSIONS = 1;
  57. String mCurrentPhotoPath;
  58. File photoFile;
  59. private Bitmap bitmap;
  60. private Spinner staticSpinner;
  61. private static final String[] REQUIRED_SDK_PERMISSIONS = new String[] {
  62. Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE };
  63. private String UploadUrl = "http://88.118.174.138:3307/imageuploadapp/uploadinfo.php";
  64.  
  65. @Override
  66. protected void onCreate(Bundle savedInstanceState) {
  67. super.onCreate(savedInstanceState);
  68. setContentView(R.layout.activity_main);
  69.  
  70. mChoose = (Button) findViewById(R.id.btnChoose);
  71. mUpload = (Button) findViewById(R.id.btnUpload);
  72. mImageView = (ImageView) findViewById(R.id.imageView);
  73. mEditText = (EditText) findViewById(R.id.ImageName);
  74. mCapture = (Button) findViewById(R.id.btnCapture);
  75.  
  76.  
  77. mCapture.setOnClickListener(this);
  78. mChoose.setOnClickListener(this);
  79. mUpload.setOnClickListener(this);
  80.  
  81. checkPermissions();
  82. mEditText.addTextChangedListener(EmptyEdit);
  83.  
  84. staticSpinner = (Spinner) findViewById(R.id.static_spinner);
  85. ArrayAdapter<CharSequence> staticAdapter = ArrayAdapter
  86. .createFromResource(this, R.array.brew_array,
  87. android.R.layout.simple_spinner_item);
  88. staticAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  89. staticSpinner.setAdapter(staticAdapter);
  90.  
  91. mEditText.addTextChangedListener(new TextWatcher() {
  92. @Override
  93. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  94. if(s.toString().trim().length()==0){
  95. mUpload.setEnabled(false);
  96. }
  97. else {
  98. mUpload.setEnabled(true);
  99. }
  100. }
  101.  
  102. @Override
  103. public void onTextChanged(CharSequence s, int start, int before, int count) {
  104.  
  105. }
  106.  
  107. @Override
  108. public void afterTextChanged(Editable s) {
  109.  
  110. }
  111. });
  112.  
  113.  
  114. }
  115.  
  116. protected void checkPermissions() {
  117. final List<String> missingPermissions = new ArrayList<String>();
  118. // check all required dynamic permissions
  119. for (final String permission : REQUIRED_SDK_PERMISSIONS) {
  120. final int result = ContextCompat.checkSelfPermission(this, permission);
  121. if (result != PackageManager.PERMISSION_GRANTED) {
  122. missingPermissions.add(permission);
  123. }
  124. }
  125. if (!missingPermissions.isEmpty()) {
  126. // request all missing permissions
  127. final String[] permissions = missingPermissions
  128. .toArray(new String[missingPermissions.size()]);
  129. ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE_ASK_PERMISSIONS);
  130. } else {
  131. final int[] grantResults = new int[REQUIRED_SDK_PERMISSIONS.length];
  132. Arrays.fill(grantResults, PackageManager.PERMISSION_GRANTED);
  133. onRequestPermissionsResult(REQUEST_CODE_ASK_PERMISSIONS, REQUIRED_SDK_PERMISSIONS,
  134. grantResults);
  135. }
  136. }
  137.  
  138. @Override
  139. public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[],
  140. @NonNull int[] grantResults) {
  141. switch (requestCode) {
  142. case REQUEST_CODE_ASK_PERMISSIONS:
  143. for (int index = permissions.length - 1; index >= 0; --index) {
  144. if (grantResults[index] != PackageManager.PERMISSION_GRANTED) {
  145. // exit the app if one permission is not granted
  146. Toast.makeText(this, "Required permission '" + permissions[index]
  147. + "' not granted, exiting", Toast.LENGTH_LONG).show();
  148. finish();
  149. return;
  150. }
  151. }
  152. }
  153. }
  154.  
  155.  
  156.  
  157. @Override
  158. public void onClick(View v) {
  159.  
  160. switch (v.getId())
  161. {
  162. case R.id.btnCapture:
  163. dispatchTakePictureIntent();
  164. break;
  165.  
  166. case R.id.btnChoose:
  167. ImageSelection();
  168. break;
  169.  
  170. case R.id.btnUpload:
  171. UploadImage();
  172. break;
  173. }
  174. }
  175.  
  176.  
  177. private void dispatchTakePictureIntent() {
  178. Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  179.  
  180. if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
  181.  
  182. photoFile = null;
  183. try {
  184. photoFile = createImageFile();
  185. } catch (IOException ex) {
  186.  
  187. }
  188. if (photoFile != null) {
  189. Uri photoURI = FileProvider.getUriForFile(this,
  190. "boen.darbusauga.fileprovider",
  191. photoFile);
  192. takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
  193. startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
  194. }
  195. }
  196. }
  197.  
  198. private void ImageSelection()
  199. {
  200. Intent intent = new Intent();
  201. intent.setType("image/*");
  202. intent.setAction(Intent.ACTION_GET_CONTENT);
  203. startActivityForResult(intent, IMAGE_REQUEST);
  204.  
  205. }
  206.  
  207. private TextWatcher EmptyEdit = new TextWatcher() {
  208. @Override
  209. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  210.  
  211. }
  212.  
  213. @Override
  214. public void onTextChanged(CharSequence s, int start, int before, int count) {
  215. if (s.toString().trim().length()==0)
  216. {
  217. mUpload.setEnabled(false);
  218. } else {
  219. mUpload.setEnabled(true);
  220. }
  221. }
  222.  
  223. @Override
  224. public void afterTextChanged(Editable s) {
  225.  
  226. }
  227. };
  228.  
  229.  
  230. @Override
  231. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  232. super.onActivityResult(requestCode, resultCode, data);
  233. if(requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) {
  234.  
  235. bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath);
  236. mImageView.setImageBitmap(bitmap);
  237. mImageView.setVisibility(View.VISIBLE);
  238. mEditText.setVisibility(View.VISIBLE);
  239. staticSpinner.setVisibility(View.VISIBLE);
  240. mUpload.setVisibility(View.VISIBLE);
  241.  
  242. mEditText.addTextChangedListener(new TextWatcher() {
  243. @Override
  244. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  245. if(s.toString().trim().length()==0){
  246. mUpload.setEnabled(false);
  247. }
  248. else {
  249. mUpload.setEnabled(true);
  250. }
  251. }
  252.  
  253. @Override
  254. public void onTextChanged(CharSequence s, int start, int before, int count) {
  255.  
  256. }
  257.  
  258. @Override
  259. public void afterTextChanged(Editable s) {
  260.  
  261. }
  262. });
  263.  
  264.  
  265. if (TextUtils.isEmpty(mEditText.getText())){
  266. mEditText.setError("MUST");
  267. }
  268. }
  269.  
  270. else if (requestCode == IMAGE_REQUEST && resultCode == RESULT_OK && data != null)
  271. {
  272.  
  273. Uri FilePath = data.getData();
  274. try {
  275.  
  276. bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), FilePath);
  277. mImageView.setImageBitmap(bitmap);
  278. mImageView.setVisibility(View.VISIBLE);
  279. mEditText.setVisibility(View.VISIBLE);
  280. staticSpinner.setVisibility(View.VISIBLE);
  281. mUpload.setVisibility(View.VISIBLE);
  282.  
  283. if (TextUtils.isEmpty(mEditText.getText())){
  284. mEditText.setError("MUST");
  285. mUpload.setEnabled(false);
  286. }
  287. else {
  288. mUpload.setEnabled(true);
  289. }
  290.  
  291.  
  292.  
  293. } catch (IOException e) {
  294. e.printStackTrace();
  295. }
  296. }
  297.  
  298.  
  299. }
  300.  
  301. private File createImageFile() throws IOException {
  302.  
  303. String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
  304. String imageFileName = "JPEG_" + timeStamp + "_";
  305. File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
  306. File image = File.createTempFile(
  307. imageFileName,
  308. ".jpg",
  309. storageDir
  310. );
  311.  
  312. mCurrentPhotoPath = image.getAbsolutePath();
  313. return image;
  314. }
  315.  
  316.  
  317. private void UploadImage (){
  318.  
  319. StringRequest stringRequest = new StringRequest(Request.Method.POST, UploadUrl,
  320. new Response.Listener<String>() {
  321. @Override
  322. public void onResponse(String response) {
  323.  
  324. try {
  325. JSONObject jsonObject = new JSONObject(response);
  326. String Response = jsonObject.getString("response");
  327. Toast.makeText(MainActivity.this,Response,Toast.LENGTH_SHORT).show();
  328. mImageView.setImageResource(0);
  329. mImageView.setVisibility(View.GONE);
  330. mEditText.setText("");
  331. mEditText.setVisibility(View.GONE);
  332. staticSpinner.setVisibility(View.GONE);
  333. mCapture.setVisibility(View.VISIBLE);
  334. mChoose.setVisibility(View.VISIBLE);
  335. mUpload.setVisibility(View.GONE);
  336. photoFile = new File(String.valueOf(photoFile));
  337. photoFile.delete();
  338. } catch (JSONException e) {
  339. e.printStackTrace();
  340. }
  341.  
  342. }
  343. }, new Response.ErrorListener() {
  344. @Override
  345. public void onErrorResponse(VolleyError error) {
  346.  
  347. }
  348. })
  349.  
  350. {
  351. @Override
  352. protected Map<String, String> getParams() throws AuthFailureError {
  353. Map<String,String> params = new HashMap<>();
  354. params.put("name1",mEditText.getText().toString().trim());
  355. params.put("name2", staticSpinner.getSelectedItem().toString().trim());
  356. params.put("image",ImageToString(bitmap));
  357.  
  358. return params;
  359. }
  360. };
  361.  
  362. SingletonClass.getInstance(MainActivity.this).addToRequestQue(stringRequest);
  363.  
  364. }
  365.  
  366. private String ImageToString(Bitmap bitmap){
  367.  
  368. ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
  369. bitmap.compress(Bitmap.CompressFormat.JPEG, 25, byteArrayOutputStream);
  370. byte [] imgBytes = byteArrayOutputStream.toByteArray();
  371.  
  372. return Base64.encodeToString(imgBytes, Base64.DEFAULT);
  373. }
  374.  
  375. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement