2016-05-01 1 views
1

Ich versuche, Intent-Kamera zu verwenden, um Video in meiner App zu erfassen, wenn ich ein Video nehme und ich auf die Hauptaktivität umgeleitet wird, funktioniert alles gut, aber nachdem ich zurück in der Absicht drücken Kamera-Modus stürztAbsicht Kamera stürzt nach hinten drücken

@TargetApi(Build.VERSION_CODES.JELLY_BEAN) 
     protected void onActivityResult(int reqCode, int resCode, Intent data) { 
      if (reqCode == REQUEST_CODE_UPDATE_PIC) { 
       if (resCode == RESULT_OK) { 
        String imagePath = data.getStringExtra(GOTOConstants.IntentExtras.IMAGE_PATH); 
        showCroppedImage(imagePath); 
        Bitmap bitmap; 
        bitmap = BitmapFactory.decodeFile(imagePath); 
        ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
        bitmap.compress(Bitmap.CompressFormat.PNG, 50, stream); 
        byte[] image = stream.toByteArray(); 
        // Create the ParseFile 
        ParseFile file = new ParseFile("profilepic.png", image); 
        // Upload the image into Parse Cloud 
        file.saveInBackground(); 
        // Create a column named "ImageFile" and insert the image 
        user.put("profilepictures", file); 
        user.saveInBackground(new SaveCallback() { 
         @Override 
         public void done(ParseException e) { 
          Toast.makeText(getApplicationContext(), "Saved Successfully", 
            Toast.LENGTH_SHORT).show(); 
         } 
        }); 
        // Show a simple toast message 
        Toast.makeText(MainActivity.this, "Image Uploaded", 
          Toast.LENGTH_SHORT).show(); 
       } else if (resCode == RESULT_CANCELED) { 
        //TODO : Handle case 
       } else { 
        String errorMsg = data.getStringExtra(ImageCropActivity.ERROR_MSG); 
        Toast.makeText(this, errorMsg, Toast.LENGTH_LONG).show(); 
       } 
      } 
      if (mediaFile != null) { 
       compress(); 
      } 
      if (resCode == Activity.RESULT_OK && data != null) { 
       uri = data.getData(); 
       if (uri == null) { 
        Toast.makeText(getApplicationContext(), "uri blank", Toast.LENGTH_LONG).show(); 
       } else { 
        Toast.makeText(getApplicationContext(), "uri full", Toast.LENGTH_LONG).show(); 
       } 
       //proceedbutton.setVisibility(View.VISIBLE); 
       if (resCode == RESULT_CODE_COMPRESS_VIDEO) { 
        if (uri != null) { 
         Cursor cursor = getContentResolver().query(uri, null, null, null, null, null); 
         try { 
          if (cursor != null && cursor.moveToFirst()) { 
           String displayName = cursor.getString(
             cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); 
           Log.i(TAG, "Display Name: " + displayName); 
           int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE); 
           String size = null; 
           if (!cursor.isNull(sizeIndex)) { 
            size = cursor.getString(sizeIndex); 
           } else { 
            size = "Unknown"; 
           } 
           Log.i(TAG, "Size: " + size); 
           tempFile = FileUtils.saveTempFile(displayName, this, uri); 
           editText.setText(mediaFile.getPath()); 
          } 
         } finally { 
          if (cursor != null) { 
           cursor.close(); 
          } 
         } 
        } 
       } 
      } 
     } 
+0

Es wird sehr hilfreich sein, zu wissen, welche Crash hast du auch, welche der Geräte testen Sie diesen Code –

+0

Verwenden LogCat den Java-Stack-Trace mit dem Absturz im Zusammenhang zu untersuchen: https://stackoverflow.com/questions/23353173/bedauerlicherweise-myapp-has-stopped-how-can-i-solve-this – CommonsWare

Antwort

2

ich, wenn Ihre Kamera Video-Intent CODE = RESULT_CODE_COMPRESS_VIDEO raten bin. Dann ersetzen Sie den Code wie unten zu

erste, was Änderung resCode == RESULT_CODE_COMPRESS_VIDEO. zu reqCOde und den folgenden Code

if (reqCode == RESULT_CODE_COMPRESS_VIDEO) { 
        if(resCode == RESULT_OK) { 
        if (uri != null) { 
         compress(); 
        } 
        } 
        else if(resCode == RESULT_CANCELED && data!=null){ 
         Toast.makeText(MainActivity.this,"No Video Recorded",Toast.LENGTH_SHORT).show(); 
        } 

       } 

Dies wird nicht Ihre Anwendung abstürzen auf backpressed von der Absicht Kamera.

0

Hoffe, das hilft!

if (reqCode == RESULT_CODE_COMPRESS_VIDEO) { 
         if(resCode == RESULT_OK) { 
         if (uri != null) { 
          compress(); 
         } 
         } 
         else if(resCode == RESULT_CANCELED && data!=null){ 
          Toast.makeText(MainActivity.this,"Error !",Toast.LENGTH_LONG).show(); 
    else return true;     
    } 

        }