Advertisement
Guest User

MainActivity.java

a guest
Aug 19th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.14 KB | None | 0 0
  1. package com.ucst.paddydetectionandtreatmentinformationsystem.activity;
  2.  
  3. import android.Manifest;
  4. import android.content.Context;
  5. import android.content.DialogInterface;
  6. import android.content.Intent;
  7. import android.content.pm.PackageManager;
  8. import android.database.Cursor;
  9. import android.graphics.Bitmap;
  10. import android.graphics.BitmapFactory;
  11. import android.net.ConnectivityManager;
  12. import android.net.NetworkInfo;
  13. import android.net.Uri;
  14. import android.provider.MediaStore;
  15. import android.support.annotation.Nullable;
  16. import android.support.v4.app.ActivityCompat;
  17. import android.support.v4.content.ContextCompat;
  18. import android.support.v7.app.AlertDialog;
  19. import android.support.v7.app.AppCompatActivity;
  20. import android.os.Bundle;
  21. import android.text.Html;
  22. import android.view.View;
  23. import android.widget.Button;
  24. import android.widget.ImageView;
  25. import android.widget.RelativeLayout;
  26. import android.widget.Toast;
  27.  
  28. import com.ucst.paddydetectionandtreatmentinformationsystem.R;
  29. import com.ucst.paddydetectionandtreatmentinformationsystem.Token.Auth;
  30. import com.ucst.paddydetectionandtreatmentinformationsystem.Token.Domain;
  31. import com.ucst.paddydetectionandtreatmentinformationsystem.Token.Identity;
  32. import com.ucst.paddydetectionandtreatmentinformationsystem.Token.Password;
  33. import com.ucst.paddydetectionandtreatmentinformationsystem.Token.Project;
  34. import com.ucst.paddydetectionandtreatmentinformationsystem.Token.Scope;
  35. import com.ucst.paddydetectionandtreatmentinformationsystem.Token.User;
  36. import com.ucst.paddydetectionandtreatmentinformationsystem.adapter.Token;
  37. import com.ucst.paddydetectionandtreatmentinformationsystem.listener.TokenClient;
  38.  
  39. import retrofit2.Call;
  40. import retrofit2.Callback;
  41. import retrofit2.Response;
  42. import retrofit2.Retrofit;
  43. import retrofit2.converter.gson.GsonConverterFactory;
  44.  
  45. public class CheckInsect extends AppCompatActivity {
  46.  
  47. private Button search;
  48. private ImageView camera;
  49. String token;
  50.  
  51. @Override
  52. protected void onCreate(Bundle savedInstanceState) {
  53. super.onCreate(savedInstanceState);
  54. setContentView(R.layout.activity_check_insect);
  55. camera = findViewById(R.id.camera);
  56. search = findViewById(R.id.btn_search);
  57.  
  58. camera.setOnClickListener(new View.OnClickListener() {
  59. @Override
  60. public void onClick(View v) {
  61. final CharSequence[] options = {"Take Photo", "Choose from Gallery", "Cancel"};
  62. AlertDialog.Builder builder = new AlertDialog.Builder(CheckInsect.this);
  63. builder.setTitle("Choose your profile picture");
  64.  
  65. builder.setItems(options, new DialogInterface.OnClickListener() {
  66.  
  67. @Override
  68. public void onClick(DialogInterface dialog, int item) {
  69.  
  70. if (options[item].equals("Take Photo")) {
  71.  
  72. if (ContextCompat.checkSelfPermission(CheckInsect.this, Manifest.permission.CAMERA)
  73. != PackageManager.PERMISSION_GRANTED) {
  74. // Ask camera permission
  75. ActivityCompat.requestPermissions(CheckInsect.this,
  76. new String[]{Manifest.permission.CAMERA},
  77. 1);
  78. } else {
  79. //open camera
  80. Intent takePicture = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
  81. startActivityForResult(takePicture, 0);
  82. }
  83.  
  84. } else if (options[item].equals("Choose from Gallery")) {
  85.  
  86. if (ContextCompat.checkSelfPermission(CheckInsect.this, Manifest.permission.READ_EXTERNAL_STORAGE)
  87. != PackageManager.PERMISSION_GRANTED) {
  88. // ask permission for gallery
  89. ActivityCompat.requestPermissions(CheckInsect.this,
  90. new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
  91. 1);
  92. } else {
  93. // open gallery
  94. Intent pickPhoto = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
  95. startActivityForResult(pickPhoto, 1);
  96. }
  97.  
  98. } else if (options[item].equals("Cancel")) {
  99. dialog.dismiss();
  100. }
  101. }
  102. });
  103. builder.show();
  104. }
  105. });
  106.  
  107. search.setOnClickListener(new View.OnClickListener() {
  108. @Override
  109. public void onClick(View v) {
  110. String test_img = String.valueOf(camera.getTag());
  111.  
  112. if (test_img.endsWith("no")) {
  113. // need to add image
  114. AlertDialog.Builder builder = new AlertDialog.Builder(CheckInsect.this);
  115. builder.setMessage(Html.fromHtml("<font color='#6A6A6A'>You need to add photo first</font>"))
  116. .setTitle(Html.fromHtml("<b>" + "Missing photo" + "</b>"))
  117. .setCancelable(false)
  118. .setPositiveButton(Html.fromHtml("<font color='#007FBF'>OK</font>"), new DialogInterface.OnClickListener() {
  119. public void onClick(DialogInterface dialog, int id) {
  120.  
  121. }
  122. });
  123.  
  124. final AlertDialog alert = builder.create();
  125. alert.setOnShowListener(new DialogInterface.OnShowListener() {
  126. @Override
  127. public void onShow(DialogInterface dialogInterface) {
  128. alert.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(getResources().getColor(R.color.colorPrimary));
  129. }
  130. });
  131. alert.show();
  132.  
  133.  
  134. } else {
  135. // check internet connection
  136. ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  137. if (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
  138. connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
  139. // call insect detail
  140.  
  141. // get token
  142. getToken();
  143.  
  144. Intent intent = new Intent(CheckInsect.this, InsectDetail.class);
  145. startActivity(intent);
  146. } else {
  147. AlertDialog.Builder builder = new AlertDialog.Builder(CheckInsect.this);
  148. builder.setMessage(Html.fromHtml("<font color='#6A6A6A'>You need to add photo first</font>"))
  149. .setTitle(Html.fromHtml("<b>" + "No internet connection" + "</b>"))
  150. .setCancelable(false)
  151. .setPositiveButton(Html.fromHtml("<font color='#007FBF'>OK</font>"), new DialogInterface.OnClickListener() {
  152. public void onClick(DialogInterface dialog, int id) {
  153.  
  154. }
  155. });
  156.  
  157. final AlertDialog alert = builder.create();
  158. alert.setOnShowListener(new DialogInterface.OnShowListener() {
  159. @Override
  160. public void onShow(DialogInterface dialogInterface) {
  161. alert.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(getResources().getColor(R.color.colorPrimary));
  162. }
  163. });
  164. alert.show();
  165. }
  166. }
  167.  
  168.  
  169. }
  170. });
  171. }
  172.  
  173.  
  174. //open camera and gallery
  175. @Override
  176. protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  177. // super.onActivityResult(requestCode, resultCode, data);
  178. if (resultCode != RESULT_CANCELED) {
  179. switch (requestCode) {
  180. case 0:
  181. if (resultCode == RESULT_OK && data != null) {
  182. Bitmap selectedImage = (Bitmap) data.getExtras().get("data");
  183. camera.setImageBitmap(selectedImage);
  184. camera.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 400));
  185. camera.setTag("update");
  186. }
  187.  
  188. break;
  189. case 1:
  190. if (resultCode == RESULT_OK && data != null) {
  191. Uri selectedImage = data.getData();
  192. String[] filePathColumn = {MediaStore.Images.Media.DATA};
  193. if (selectedImage != null) {
  194. Cursor cursor = getContentResolver().query(selectedImage,
  195. filePathColumn, null, null, null);
  196. if (cursor != null) {
  197. cursor.moveToFirst();
  198.  
  199. int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
  200. String picturePath = cursor.getString(columnIndex);
  201. camera.setImageBitmap(BitmapFactory.decodeFile(picturePath));
  202. camera.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 400));
  203. camera.setTag("update");
  204. cursor.close();
  205. }
  206. }
  207.  
  208. }
  209. break;
  210. }
  211. }
  212. }
  213.  
  214. // request permission
  215. @Override
  216. public void onRequestPermissionsResult(int requestCode,
  217. String permissions[], int[] grantResults) {
  218. switch (requestCode) {
  219. case 1: {
  220.  
  221. // If request is cancelled, the result arrays are empty.
  222. if (grantResults.length > 0
  223. && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  224.  
  225. if (permissions[0].endsWith("android.permission.READ_EXTERNAL_STORAGE")) {
  226. Intent pickPhoto = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
  227. startActivityForResult(pickPhoto, 1);
  228. } else {
  229. Intent takePicture = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
  230. startActivityForResult(takePicture, 0);
  231. }
  232.  
  233. // permission was granted, yay! Do the
  234. // contacts-related task you need to do.
  235. } else {
  236.  
  237. // permission denied, boo! Disable the
  238. // functionality that depends on this permission.
  239. Toast.makeText(CheckInsect.this, "Permission denied", Toast.LENGTH_SHORT).show();
  240. }
  241. return;
  242. }
  243.  
  244. // other 'case' lines to check for other
  245. // permissions this app might request
  246. }
  247. }
  248.  
  249. // get token
  250. private void getToken() {
  251. Project p = new Project("ap-southeast-1");
  252. Scope s = new Scope(p);
  253.  
  254. Domain d = new Domain("ucs_taungoo");
  255. User u = new User("ucs_taungoo", "ucst12345", d);
  256.  
  257. Password pass = new Password(u);
  258. String str[] = {"password"};
  259. Identity i = new Identity(str, pass);
  260.  
  261. Auth a = new Auth(i, s);
  262. Token tk = new Token(a);
  263. //Object building finish ...
  264.  
  265. SendRequest(tk);
  266. }
  267.  
  268. // send request to get token
  269. private void SendRequest(Token tk) {
  270.  
  271. Retrofit.Builder builder = new Retrofit.Builder()
  272. .baseUrl("https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/")
  273. .addConverterFactory(GsonConverterFactory.create());
  274.  
  275. Retrofit retrofit = builder.build();
  276. TokenClient client = retrofit.create(TokenClient.class);
  277. Call<Token> call = client.CreateToken(tk);
  278.  
  279. call.enqueue(new Callback<Token>() {
  280. @Override
  281. public void onResponse(Call<Token> call, Response<Token> response) {
  282.  
  283. token = response.headers().get("X-Subject-Token");
  284. // SendImage(token);
  285.  
  286. Toast.makeText(CheckInsect.this, token, Toast.LENGTH_LONG).show();
  287. }
  288.  
  289. @Override
  290. public void onFailure(Call<Token> call, Throwable t) {
  291.  
  292. Toast.makeText(CheckInsect.this, "Something went wrong", Toast.LENGTH_LONG).show();
  293. }
  294. });
  295.  
  296. }
  297.  
  298. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement