2016-07-02 2 views
0

私はこの問題を多くの異なるリンクから解決しようとしましたが、私のためにはうまくいきません。画像をトリミングするためにAndroid Image Cropperライブラリを使用しています。 「画像をアップロード」ボタンをクリックするたびにトリミングが開始され、トリミングされた画像は「画像のアップロード」の画像ビューで設定され、「続行」ボタンをクリックするとログインが成功し、ログインが指示されます私はログインアクティビティを押しても、 "Upload image"アクティビティはまだそこにあり、破壊されていません。このトリミングアクティビティを使用するUpdate Activityという別のアクティビティがあり、そのアクティビティも同じように動作します。だから私は "画像をアップロードする"破壊したい。事前に感謝画像トリミングライブラリに関連するアクティビティは破棄されません

package com.donateblood.blooddonation; 
 

 

 

 
public class CroppingActivity extends AppCompatActivity { 
 

 
    private CropImageView mCropImageView; 
 

 
    public static Bitmap finalImage = null; 
 
    public static Bitmap newImage = null; 
 
    private Uri mCropImageUri; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_crop); 
 
     mCropImageView = (CropImageView) findViewById(R.id.CropImageView); 
 

 
    } 
 

 
    /** 
 
    * On load image button click, start pick image chooser activity. 
 
    */ 
 
    public void onLoadImageClick(View view) { 
 
     startActivityForResult(getPickImageChooserIntent(), 200); 
 
    } 
 

 
    public void onSetImageClick(View view) { 
 

 
     if(UpdateActivity.UpdatingPhoto){ 
 
      newImage = mCropImageView.getCroppedImage(200, 200); 
 
      try { 
 
       Intent intent = new Intent(getApplicationContext(), UpdateActivity.class); 
 
       startActivity(intent); 
 
       finish(); 
 
      } catch (Exception e) { 
 
       Toast.makeText(CroppingActivity.this, "Oppss..Error occured.", Toast.LENGTH_SHORT).show(); 
 
       e.printStackTrace(); 
 
      } 
 

 
     }else { 
 
      finalImage = mCropImageView.getCroppedImage(200, 200); 
 
      try { 
 
       Intent intent = new Intent(getApplicationContext(), UploadImage.class); 
 
       startActivity(intent); 
 
       finish(); 
 
      } catch (Exception e) { 
 
       Toast.makeText(CroppingActivity.this, "Oppss..Error occured.", Toast.LENGTH_SHORT).show(); 
 
       e.printStackTrace(); 
 
      } 
 
     } 
 
    } 
 
    /** 
 
    * Crop the image and set it back to the cropping view. 
 
    */ 
 
    public void onCropImageClick(View view) { 
 
     Bitmap cropped = mCropImageView.getCroppedImage(500, 500); 
 
     if (cropped != null) 
 
      mCropImageView.setImageBitmap(cropped); 
 
    } 
 

 
    @Override 
 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
 
     if (resultCode == Activity.RESULT_OK) { 
 
      Uri imageUri = getPickImageResultUri(data); 
 

 
      // 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; 
 
       mCropImageUri = imageUri; 
 
       requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 0); 
 
      } 
 
      if (!requirePermissions) { 
 
       mCropImageView.setImageUriAsync(imageUri); 
 
      } 
 
     } 
 
    } 
 

 
    @Override 
 
    public void onBackPressed() { 
 
     UpdateActivity.UpdatingPhoto = false; 
 
     super.onBackPressed(); 
 
     finish(); 
 
    } 
 

 
    @Override 
 
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
 
     if (mCropImageUri != null && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
 
      mCropImageView.setImageUriAsync(mCropImageUri); 
 
     } else { 
 
      Toast.makeText(this, "Required permissions are not granted", Toast.LENGTH_LONG).show(); 
 
     } 
 
    } 
 

 
    /** 
 
    * Create a chooser intent to select the source to get image from.<br/> 
 
    * The source can be camera's (ACTION_IMAGE_CAPTURE) or gallery's (ACTION_GET_CONTENT).<br/> 
 
    * All possible sources are added to the intent chooser. 
 
    */ 
 
    public Intent getPickImageChooserIntent() { 
 

 
     // Determine Uri of camera image to save. 
 
     Uri outputFileUri = getCaptureImageOutputUri(); 
 

 
     List<Intent> allIntents = new ArrayList<>(); 
 
     PackageManager packageManager = getPackageManager(); 
 

 
     // collect all camera intents 
 
     Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
 
     List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0); 
 
     for (ResolveInfo res : listCam) { 
 
      Intent intent = new Intent(captureIntent); 
 
      intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name)); 
 
      intent.setPackage(res.activityInfo.packageName); 
 
      if (outputFileUri != null) { 
 
       intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
 
      } 
 
      allIntents.add(intent); 
 
     } 
 

 
     // collect all gallery intents 
 
     Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT); 
 
     galleryIntent.setType("image/*"); 
 
     List<ResolveInfo> listGallery = packageManager.queryIntentActivities(galleryIntent, 0); 
 
     for (ResolveInfo res : listGallery) { 
 
      Intent intent = new Intent(galleryIntent); 
 
      intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name)); 
 
      intent.setPackage(res.activityInfo.packageName); 
 
      allIntents.add(intent); 
 
     } 
 

 
     // the main intent is the last in the list (fucking android) so pickup the useless one 
 
     Intent mainIntent = allIntents.get(allIntents.size() - 1); 
 
     for (Intent intent : allIntents) { 
 
      if (intent.getComponent().getClassName().equals("com.android.documentsui.DocumentsActivity")) { 
 
       mainIntent = intent; 
 
       break; 
 
      } 
 
     } 
 
     allIntents.remove(mainIntent); 
 

 
     // Create a chooser from the main intent 
 
     Intent chooserIntent = Intent.createChooser(mainIntent, "Select source"); 
 

 
     // Add all other intents 
 
     chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, allIntents.toArray(new Parcelable[allIntents.size()])); 
 

 
     return chooserIntent; 
 
    } 
 

 
    /** 
 
    * Get URI to image received from capture by camera. 
 
    */ 
 
    private Uri getCaptureImageOutputUri() { 
 
     Uri outputFileUri = null; 
 
     File getImage = getExternalCacheDir(); 
 
     if (getImage != null) { 
 
      outputFileUri = Uri.fromFile(new File(getImage.getPath(), "pickImageResult.jpeg")); 
 
     } 
 
     return outputFileUri; 
 
    } 
 

 
    /** 
 
    * Get the URI of the selected image from {@link #getPickImageChooserIntent()}.<br/> 
 
    * Will return the correct URI for camera and gallery image. 
 
    * 
 
    * @param data the returned data of the activity result 
 
    */ 
 
    public Uri getPickImageResultUri(Intent data) { 
 
     boolean isCamera = true; 
 
     if (data != null && data.getData() != null) { 
 
      String action = data.getAction(); 
 
      isCamera = action != null && action.equals(MediaStore.ACTION_IMAGE_CAPTURE); 
 
     } 
 
     return isCamera ? getCaptureImageOutputUri() : data.getData(); 
 
    } 
 

 
    /** 
 
    * Test if we can open the given Android URI to test if permission required error is thrown.<br> 
 
    */ 
 
    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 e) { 
 
     } 
 
     return false; 
 
    } 
 
}
package com.donateblood.blooddonation; 
 

 
    public double longitude; 
 
    @Override 
 
    public void onBackPressed() { 
 
     super.onBackPressed(); 
 
     finish(); 
 
    } 
 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.uploadimage); 
 
     code = (EditText) findViewById(R.id.code); 
 
     ButterKnife.inject(this); 
 
     myimage = CroppingActivity.finalImage; 
 
     CheckImage(); 
 
     // Upload image ==================================== 
 
     Btn_Upload.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View v) { 
 
       Intent intent = new Intent(getApplicationContext(), CroppingActivity.class); 
 
       startActivity(intent); 
 
      } 
 
     }); 
 
     Btn_Proceed.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View v) { 
 
       if(code.length()==0){ 
 
        Toast.makeText(getBaseContext(), "Enter verification code", Toast.LENGTH_LONG).show(); 
 
       } 
 
       else { 
 
        Prcoess(); 
 
       } 
 
      } 
 
     }); 
 
    } 
 
    public void CheckImage(){ 
 
     if(myimage!=null){ 
 
      // set the image 
 
      // myimage = getRoundedShape(myimage); 
 
      Uri uri = getImageUri(myimage); 
 
      String url = getRealPathFromURI(uri); 
 
      File file = new File(url); 
 
      Picasso.with(UploadImage.this).load(file).resize(200,200).placeholder(R.drawable.user).error(R.drawable.error) 
 
        .transform(new CircleTransform()).centerCrop() 
 
        .into(ImageUpload); 
 
     }else { 
 
      encodedPhotoString= null; 
 
     } 
 
    } 
 

 
    @Override 
 
    public void onDestroy() { 
 
     super.onDestroy(); 
 
     if (pDialog != null) { 
 
      pDialog.dismiss(); 
 
      pDialog = null; 
 
     } 
 
    } 
 

 

 
    public String getRealPathFromURI(Uri contentUri) { 
 
     Cursor cursor = null; 
 
     try { 
 
      String[] proj = { MediaStore.Images.Media.DATA }; 
 
      cursor = UploadImage.this.getContentResolver().query(contentUri, proj, null, null, null); 
 
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
 
      cursor.moveToFirst(); 
 
      return cursor.getString(column_index); 
 
     } finally { 
 
      if (cursor != null) { 
 
       cursor.close(); 
 
      } 
 
     } 
 
    } 
 

 
    public Uri getImageUri(Bitmap inImage) { 
 
     ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
 
     inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
 
     String path = MediaStore.Images.Media.insertImage(UploadImage.this.getContentResolver(), inImage, "Title", null); 
 
     return Uri.parse(path); 
 
    } 
 

 
    // Processing and adding user to database from here ==================================== 
 
    public void Prcoess(){ 
 
     String userentered=code.getText().toString(); 
 
     String sentcode = SignupActivity.Code; 
 

 
     // resize the image to store to database 
 
     //myimage= getResizedBitmap(myimage,200,200); 
 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
 
     myimage.compress(Bitmap.CompressFormat.JPEG, 50, stream); 
 
     byte[] byte_arr = stream.toByteArray(); 
 
     encodedPhotoString = Base64.encodeToString(byte_arr, 0); 
 

 
     if(userentered.equals(sentcode) && encodedPhotoString!=null){ 
 
      new AddUserAsync().execute(); 
 
     } 
 
     else { 
 
      Toast.makeText(getBaseContext(), "Wrong code or No image uploaded", Toast.LENGTH_LONG).show(); 
 
     } 
 
    } 
 
    public class AddUserAsync extends AsyncTask<Void,Void,Void> { 
 
     JSONObject json =null; 
 
     boolean added = false; 
 

 

 
     @Override 
 
     protected void onPreExecute() { 
 
      super.onPreExecute(); 
 
      pDialog = new ProgressDialog(UploadImage.this); 
 
      pDialog.setMessage("Creating Account..."); 
 
      pDialog.setIndeterminate(false); 
 
      pDialog.setCancelable(false); 
 
      pDialog.show(); 
 
     } 
 
     @Override 
 
     protected Void doInBackground(Void... voids) { 
 
      GetUserDetails(); 
 
      GenerateGCMID(); 
 
      email= email.trim().toLowerCase(); 
 
      HashMap<String ,String> userDetails = new HashMap<>(); 
 
      latitude = GPSTracker.getLatitude(); 
 
      longitude = GPSTracker.getLongitude(); 
 

 
      userDetails.put("ID",ID); 
 
      userDetails.put("Name",name); 
 
      userDetails.put("email",email); 
 
      userDetails.put("password",password); 
 
      userDetails.put("age",age); 
 
      userDetails.put("number",number); 
 
      userDetails.put("bloodgroup",bloodgroup); 
 
      userDetails.put("lat",latitude+""); 
 
      userDetails.put("longi",longitude+""); 
 
      userDetails.put("image",encodedPhotoString); 
 
      json = new HttpCall().postForJSON("http://abdulbasit.website/blood_app/Adduser.php",userDetails); 
 

 
      if(json!=null){ 
 
       added = true; 
 
      }else { 
 
       added = false; 
 
      } 
 
      return null; 
 
     } 
 
     @Override 
 
     protected void onPostExecute(Void aVoid) { 
 
      super.onPostExecute(aVoid); 
 
      pDialog.dismiss(); 
 
      if(added==true){ 
 

 
      Toast.makeText(getBaseContext(), "Created Successfully", Toast.LENGTH_LONG).show(); 
 
      onSignupSuccess(); 
 
      }else { 
 
       Toast.makeText(getBaseContext(), "Error creating account. Try again", Toast.LENGTH_LONG).show(); 
 
      } 
 
     } 
 
    } 
 
    public void GenerateGCMID(){ 
 
     GCMClientManager pushClientManager = new GCMClientManager(this, "921544902369"); 
 
     pushClientManager.registerIfNeeded(new GCMClientManager.RegistrationCompletedHandler() { 
 
      @Override 
 
      public void onSuccess(String registrationId, boolean isNewRegistration) { 
 
       Log.d("Registration id", registrationId); 
 
       ID = registrationId; 
 
       Log.e("reg",ID); 
 
      } 
 
      @Override 
 
      public void onFailure(String ex) { 
 
       super.onFailure(ex); 
 
      } 
 
     }); 
 
    } 
 
    // Go to another activity on success ==================================== 
 
    public void onSignupSuccess() { 
 
     // stop the service we got the latitude and longitude now 
 
     stopService(new Intent(this, GPSTracker.class)); 
 
     Intent intent = new Intent(getApplicationContext(), LoginActivity.class); 
 
     startActivity(intent); 
 
     finish(); 
 
    } 
 
    // fetch user details ==================================== 
 
    public void GetUserDetails(){ 
 

 
     bloodgroup = SignupActivity.bloodgroup.toString(); 
 
     name = SignupActivity.name.toString(); 
 
     email = SignupActivity.email.toString(); 
 
     password = SignupActivity.password.toString(); 
 
     number = SignupActivity.number.toString(); 
 
     age = SignupActivity.age.toString(); 
 
    } 
 

 

 
    // Resize the image ==================================== 
 
    public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) 
 
    { 
 
     int width = bm.getWidth(); 
 
     int height = bm.getHeight(); 
 
     float scaleWidth = ((float) newWidth)/width; 
 
     float scaleHeight = ((float) newHeight)/height; 
 
     // create a matrix for the manipulation 
 
     Matrix matrix = new Matrix(); 
 
     // resize the bit map 
 
     matrix.postScale(scaleWidth, scaleHeight); 
 
     // recreate the new Bitmap 
 
     Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false); 
 
     return resizedBitmap; 
 
    } 
 

 

 

 
}

答えて

0

チェックこの方法あなたがここにUploadActivity仕上げされていません: -

Btn_Upload.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(getApplicationContext(), CroppingActivity.class); 
      startActivity(intent); 
      UploadActivity.this.finish(); 

     } 
    }); 
+0

あーはありがとうございました。うまく働いた:-) –

+0

あなたの歓迎:) – Karacken

関連する問題