2013-08-02 17 views
8

Stavo usando com.android.camera.action.CROP per il ritaglio dopo aver scattato una foto usando la fotocamera.com.android.camera.action.CROP non è disponibile per Android jelly bean 4.3?

Di seguito è stato il mio codice che funzionava in precedenza prima 4.3.

Intent cropIntent = new Intent("com.android.camera.action.CROP"); 
         cropIntent.setType("image/*"); 
         cropIntent.putExtra("crop", "true"); 
         cropIntent.putExtra("aspectX", 1); 
         cropIntent.putExtra("aspectY", 1); 
         cropIntent.putExtra("outputX", Conf.getInt("IMAGE_WIDTH")); 
         cropIntent.putExtra("outputY", Conf.getInt("IMAGE_HEIGHT")); 
         cropIntent.putExtras(extras); 
         startActivityForResult(cropIntent, CROP_REQUEST_CODE); 

Ma ora, poiché l'azione delle colture Android vi porta alla galleria (perché la galleria è di default con la coltura), questo metodo di ritaglio fallisce (foto non viene salvato galleria).

Qualcuno sa come uscire da questo problema. Dove posso utilizzare il raccolto sulla foto scattata dalla fotocamera

+1

Includi questa raccolta: https://github.com/lvillani/android-cropimage – g00dy

+1

Per il metodo di ritaglio: puoi dare un'occhiata qui -> http://stackoverflow.com/questions/17930577/android-4- 3-crop-gallery-resultcode-cancel – g00dy

risposta

9

Copiare la risposta da una domanda simile chiesto in precedenza ..

avete considerato solo utilizzando una libreria come questo:

GitHubLink

Trovo che com.android.camera.action.CROP a volte possa comportarsi in modo diverso da telefono a telefono e non è sempre disponibile, quindi potrebbe comunque causare alcuni problemi se si sta cercando di rilasciarlo.

UPDATE:

Ho testato la libreria di cui sopra con Android 4.3 e funziona senza alcun problema. Hai solo bisogno di aggiungere la libreria al tuo progetto.

È quindi possibile scrivere il vostro metodo in un modo molto simile:

private void performCrop(Uri picUri) { 
//you have to convert picUri to string and remove the "file://" to work as a path for this library 
String path = picUri.toString().replaceAll("file://", ""); 
try { 
    int aspectX = 750; 
    int aspectY = 1011; 

    Intent intent = new Intent(this, CropImage.class); 
    //send the path to CropImage intent to get the photo you have just taken or selected from gallery 
    intent.putExtra(CropImage.IMAGE_PATH, path); 

    intent.putExtra(CropImage.SCALE, true); 

    intent.putExtra("aspectX", aspectX); 
    intent.putExtra("aspectY", aspectY); 

    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mCurrentPhotoPath))); 

    startActivityForResult(intent, CROP); 
} 
catch (ActivityNotFoundException anfe) { 
    String errorMessage = "Your device doesn't support the crop action!"; 
    Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT); 
    toast.show(); 
} 
+0

Come si aggiunge il progetto come libreria in Android Studio? –

+0

La libreria consente solo di utilizzare la memoria impostata per le app, pertanto non sarà possibile ritagliare un'immagine con una risoluzione elevata. Puoi ancora utilizzare l'intento Android standard su 4.3 mostrato qui http://stackoverflow.com/a/19435016/1499064 –

+0

@JohnBale devi creare una cartella libs nella directory principale e poi aggiungerla nel tuo file build.gradle – Ankit

1

Secondo @commonsware 's post
Questo intento si basa su AOSP camera app che può o non può essere disponibile nel dispositivo di destinazione, per alcuni 4.3 dispositivi essa può lavoro mentre per alcuni non lo sarà.

Quindi un approccio migliore sarà utilizzare qualsiasi libreria open source trovata at Android arsenal
(assicurarsi che non si basino anche su AOSP).

+0

qualcuno ha la prova che non funziona su "alcuni dispositivi?" Inoltre, di quali dispositivi stiamo parlando qui? Samsung, HTC? – John61590

0

Ho provato un paio di croppers. Soprattutto quelli indicati da commonsware non sono mantenuti molto bene. Ad esempio, le foto scattate con i dati di rotazione nelle meta informazioni non sono ben ruotate. Ho trovato questo: https://android-arsenal.com/details/1/3487 ed è fantastico. Nota: assicurati di aggiungere l'attività con un tema della barra delle azioni!

Problemi correlati