Autore Topic: intent camera crea crash  (Letto 966 volte)

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
intent camera crea crash
« il: 24 Aprile 2012, 16:46:45 CEST »
0
sto utilizzando un semplice intent per far scattare una foto da utilizzare nella mia app..
su alcuni dispositivi funziona perfettamente, mentre nel galaxy s funziona perfettamente se scatto la foto in landscape e premo il pulsante per utilizzare la foto sempre tenendo il telefono in landscape..funziona perfettamente anche se scatto la foto in portrait e premo il pulsante per utilizzarla tenendo il telefono in portrait...ma se scatto la foto in landscape e dopo aver scattato la foto lo giro in portrait,appena clicco il pulsante per utilizzare la foto, mi crassha con questo errore:
Codice: [Seleziona]
04-24 14:00:51.925: W/dalvikvm(10930): threadid=1: thread exiting with uncaught exception (group=0x40015578)
04-24 14:00:51.929: E/AndroidRuntime(10930): FATAL EXCEPTION: main
04-24 14:00:51.929: E/AndroidRuntime(10930): java.lang.RuntimeException: Unable to resume activity {foto.pazze.com/foto.pazze.com.MainActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {MainActivity}: java.lang.NullPointerException
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2124)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2139)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1672)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.os.Handler.dispatchMessage(Handler.java:99)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.os.Looper.loop(Looper.java:123)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.app.ActivityThread.main(ActivityThread.java:3687)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at java.lang.reflect.Method.invokeNative(Native Method)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at java.lang.reflect.Method.invoke(Method.java:507)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at dalvik.system.NativeStart.main(Native Method)
04-24 14:00:51.929: E/AndroidRuntime(10930): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {MainActivity}: java.lang.NullPointerException
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.app.ActivityThread.deliverResults(ActivityThread.java:2536)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2111)
04-24 14:00:51.929: E/AndroidRuntime(10930):         ... 12 more
04-24 14:00:51.929: E/AndroidRuntime(10930): Caused by: java.lang.NullPointerException
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.content.ContentResolver.openInputStream(ContentResolver.java:303)
04-24 14:00:51.929: E/AndroidRuntime(10930):         MainActivity.onActivityResult(MainActivity.java:2137)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.app.Activity.dispatchActivityResult(Activity.java:3908)
04-24 14:00:51.929: E/AndroidRuntime(10930):         at android.app.ActivityThread.deliverResults(ActivityThread.java:2532)
04-24 14:00:51.929: E/AndroidRuntime(10930):         ... 13 more
04-24 14:00:51.933: W/ActivityManager(487):   Force finishing activity MainActivity

l'intent lo richiamo cosi:
Codice (Java): [Seleziona]
final Intent intent      = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                       
                                        mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),
                                                                           "tmp_avatar_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));

                                        intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);

                                       
                        new AlertDialog.Builder(MainActivity.this)
                .setTitle("avviso").setMessage("scatta la foto utilizzando il flash").setNeutralButton("Ok",

                new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                        try {
                                        intent.putExtra("return-data", true);
                                       
                                       
                                        startActivityForResult(intent, PICK_FROM_CAMERA);
                                } catch (ActivityNotFoundException e) {
                                        e.printStackTrace();
                                }
                }

                }).show();

e nell'onactivityresult ho messo questo:
Codice (Java): [Seleziona]
                                 Uri uri = mImageCaptureUri;
                                    InputStream in = null;
                                    try {
                                        final int IMAGE_MAX_SIZE = 1000000; // 1.0MP
                                        ContentResolver mContentResolver = MainActivity.this.getContentResolver();
                                        in = mContentResolver.openInputStream(uri); // riga 2137 dove  da l'errore
                                 
                                        BitmapFactory.Options o = new BitmapFactory.Options();
                                        o.inJustDecodeBounds = true;
                                        BitmapFactory.decodeStream(in, null, o);
                                        in.close();
non riesco a capire il motivo di questo problema che si verifica solo se premo il tasto per utilizzare l'immagine dopo aver ruotato il telefono..
avevo pensato anche di far partire l'intent per la camera forzando il portrait, ma da quello che ho capito non è possibile...
quindi non saprei proprio come risolvere :(
« Ultima modifica: 24 Aprile 2012, 16:49:45 CEST da frecciak »
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:intent camera crea crash
« Risposta #1 il: 26 Aprile 2012, 01:13:21 CEST »
0
facendo delle prove, ho visto che nel galaxy quando da questo errore è perchè la posizione a cui porta l'uri risulta inesistente ...eppure la foto c'è..
a volte alla prima foto che scatto, mi genera l'errore..altre volte ne scatta senza problemi 4 o 5 e poi genera l'errore..
non riesco proprio a capire..se il problema fosse nel codice, non dovrebbe mai riuscire a prendere l'immagine..invece a volte la prende e a volte gli risulta java.lang.NullPointerException..
ho provato anche a inserire un controllo aggiuntivo in questo modo :
Codice (Java): [Seleziona]
if (uri.getPath() == null){
//toast che avvisa di riprovare a scattare la foto
}
ma quando si verifica il problema, mi crassha dando ancora  l'errore java.lang.NullPointerException alla riga contenente :
if (uri.getPath() == null){
quindi ne deduco che il problema sia proprio l'uri che risulta vuoto, ma anche forzando il link nell'uri con uri = "link dove è l'immagine" mi da lo stesso problema..
invece sull'lg funziona sempre senza alcun problema ..

secondo voi può essere che quando android fa il system.gc() in automatico o dopo aver salvato la foto fa un mediascanner che mi fa risultare per qualche istante la sd disattivata?
« Ultima modifica: 26 Aprile 2012, 01:18:56 CEST da frecciak »
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline pivoide

  • Utente junior
  • **
  • Post: 133
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy tab 10.1
  • Play Store ID:
    codicerosso
  • Sistema operativo:
    Ubuntu 11.04
Re:intent camera crea crash
« Risposta #2 il: 02 Giugno 2012, 15:34:05 CEST »
0
Non è che semplicemente non salvi il valore dell'uri in modo persistente affinché non si perda dopo l'eventuale rotazione?
Odio l'inglese e per un informatico non è il massimo

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:intent camera crea crash
« Risposta #3 il: 03 Giugno 2012, 18:04:07 CEST »
0
Purtroppo non é quello..se fosse cosi, il problema si verificherebbe su tutti i telefoni, invece penso proprio sia un difetto del galaxy..
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!