2010-11-25 3 views
0

Also ich versuche, die Kamera-Aktivität mit dem folgenden Code zu starten:EXTRA_OUTPUT auf Eris ignoriert, verursacht die Daten G1 null zurück

//In onActivityResult() 
... 
case REQUEST_CAMERA: 
    Intent intent = new Intent (CurrentScreen.this, NextScreen.this); 
    intent.putExtra(data); 
    startActivity(intent); 
    CurrentScreen.this.finish(); 
... 
: das Ergebnis

//In public void captureImage() 
... 
Intent cameraIntent = new Intent(MediaStore.ACTION_CAPTURE_IMAGE); 
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, 
         Uri.fromFile(new File("/sdcard/image.jpg"))); 
startActivityForResult(cameraIntent, REQUEST_CAMERA); 

Und dann zu handhaben

Wo verwende ich intent.putExtra(data), um die kleine Bitmap an die Absicht anzuhängen, und verwenden Sie es als eine Miniaturansicht in der nächsten Aktivität, und die Datei in voller Größe wird angeblich als /sdcard/image.jpg gespeichert.

Dies ist das erwartete Verhalten (gemäß der Dokumentation), ein kleines Bitmap für ein Thumbnail und eine große Datei gespeichert zu haben. Als ich dies jedoch an einer G1 und einer Eris getestet habe, habe ich seltsames Verhalten beobachtet.

Auf der G1:

  • Obwohl die Result RESULT_OK zeigt, um die Absicht Daten, die dem Ergebnis-Handler zurückgegeben wird, ist null.
  • Auch EXTRA_OUTPUT scheint komplett ignoriert zu werden, ich habe keine Ahnung, wo es das Bild speichert.

Auf der Eris:

  • Die Absicht Daten kommt zurück OK
  • EXTRA_OUTPUT wird ebenfalls ignoriert, aber es wird die Bilder in den regulären Medien Speicher bei /sdcard/dcim/100media

So Speichern Meine Frage ist: Gibt es eine Möglichkeit, konsistentes Verhalten für das, was ich mit der Standard-Kamera-Aktivität versuche, zu bekommen? Ich könnte eine benutzerdefinierte Aktivität schreiben, um zu versuchen, es so zu machen, wie ich es möchte, aber ich würde diese Route lieber vermeiden.

Antwort

0

Ich habe keine Antworten auf Ihre Frage, da ich neu in der Java/Android-Entwicklungswelt bin. Aber ich versuche etwas, das dem ähnlich ist, was du tust, außer dass ich einfach das Bild aufnehmen und es dann an eine E-Mail-Nachricht anhängen möchte.

Ich habe einen Teil Ihres Beispiels implementiert und konnte überprüfen, dass die Kamera die angegebene Datei erstellt hat und dass, wenn ich denselben Dateinamen für das nächste Bild verwende, die vorherige Datei überschrieben wird, was ich erwarten würde.

Aber was ich wirklich sagen wollte, ist vielleicht, dass Sie testen müssen, ob der pat "/ sdcard/..." tatsächlich existiert oder nicht. Sie können Ihren Prozess möglicherweise vereinfachen, indem Sie den Pfad zur nächsten Aktivität übergeben.

Good Luck,

Jamie Irwin

+0

Ich habe eigentlich tat das in meiner Anwendung einrichten Prüfung, aber ich weggelassen, dass ein Teil in meinem Beitrag Dinge kürzer zu halten. Was ich am Ende zu tun habe, ist wahrscheinlich meine eigene Kameraaktivität zu schreiben, weil ich aufgrund der unterschiedlichen Kameraanwendungen, die verschiedene Hersteller mit ihren Handsets verwenden, die Inkonsistenz aufzeigen kann. Nicht alle von ihnen behandeln die Absicht ACTION_IMAGE_CAPTURE richtig. – jvergeldedios

Verwandte Themen