Phonegap (3.0.0) Die Kamera war beim ersten Versuch nicht erfolgreich

8

Zu Testzwecken habe ich das vollständige Beispiel kopiert, das auf der Phonegap-Kamera-API und ich habe eine Warnung auf onPhotoDataSuccess gesetzt, um zu testen, wann die Funktion ausgelöst wird. Auf dem ersten Foto wird die Warnung nicht angezeigt. Nach dem ersten Versuch wird die Warnung angezeigt, nachdem das Foto gespeichert wurde.

Irgendwelche Tipps? Ich bin glücklich, genauer zu sein, wenn etwas unklar ist.

Ich habe den Code unten auf meinem Android Galaxy S3 getestet

%Vor%

---------- UPDATE 1 ------------------

Ich habe es auf ein anderes Stück Code getestet:

%Vor%

Und das hat den gleichen Effekt. Es tut nichts während des ersten Snap, aber es zeigt das Bild nach dem zweiten Snap. Ich habe auch gerade herausgefunden, dass das Bild, das nach dem zweiten Snap angezeigt wird, das erste Foto ist, das ich gemacht habe. Es scheint, dass das erste Argument in getPicture nicht beim ersten Snap ausgelöst wird. Das ist frustrierend, da Logcat mir nicht wirklich etwas zeigen kann.

---------------- UPDATE 2 ----------------

Ich habe es gerade auf Phonegap Build versucht und es funktioniert. Also muss es etwas mit dem Plugin zu tun haben ...

    
Ian Powell 06.09.2013, 05:44
quelle

6 Antworten

1

Ich weiß nicht, ob das die richtige Lösung ist oder nicht, aber es funktioniert perfekt für mich. Es wäre Teig, um Ihre Log-Katze zu verfolgen und genaues Problem zu finden.

Versuchen Sie, navigator.camera.PictureSourceType instated von pictureSource zu verwenden. so sieht es aus wie

%Vor%

und die gleiche Weise ersetzen Sie auch im Javascript-Code

%Vor%

ODER

%Vor%

Aktualisierung: Versuchen Sie, Ihre corodova.js lokal zu speichern, und rufen Sie das lokale Verzeichnis an, damit Ihr Verzeichnis wie

aussehen sollte

assets/www/js/cordova.js

%Vor%

Arbeitscode

Hoffe das wird dir helfen !!!

    
Chintan Khetiya 13.09.2013 06:02
quelle
1

Ich hatte das gleiche Problem nach der Aktualisierung von 3.0.0 auf 3.1.0. Verzögerte Kamera, keine Geolokalisierung usw.

Schauen Sie, ob die Datei platforms\android\cordova\version eine alte Version anzeigt. Dann müssen Sie Ihre Plattform aktualisieren. Also hier ist was ich getan habe.

  • Alle Plugins entfernen: cordova plugin rm org.apache.cordova.camera
  • Entfernen Sie die Plattform: cordova platform remove android (löscht Änderungen, die Sie an * .java-Dateien vorgenommen haben)
  • Fügen Sie die Plattform hinzu: cordova platform add android
  • Alle Plugins hinzufügen: cordova plugin add org.apache.cordova.camera
  • Überprüfen Sie die Berechtigungen
  • Erzeuge es

Es ist im Grunde wie ein neues Projekt zu erstellen.

    
r15ch13 24.10.2013 16:36
quelle
0

hatte genau das gleiche Problem. Der Capture-Erfolg wurde erst empfangen, nachdem captureVideo ein zweites Mal aufgerufen wurde.

Habe gerade meine alte app / bin / cordova.jar Datei durch neue 3.2.0 cordova-dev.jar ersetzt (in eclispe) und alle wieder in Reihenfolge:)

    
Laurie Clark 06.12.2013 18:45
quelle
0

Ich hatte dieses genaue Problem auf Cordova 3.4.0, mit einer frischen Cordova-Installation (keine Aktualisierung von der vorherigen Version wie einige andere gepostet). Das erste Bild zu machen würde nichts tun - keinen Rückruf, keinen Rückruf. Das zweite Bild würde zu einem erfolgreichen Rückruf führen, aber die DATA_URL-Daten (das Base64-codierte Bild), die zurückkamen, waren die Daten aus dem ERSTEN Bild.

Für mich funktionierte es auf einem Telefon, verschiedenen Emulatoren usw. gut, außer auf einem Android 4.2 Telefon, wo es das tat. Die Lösung bestand darin, die App mithilfe der Anwendungsverwaltung des Telefons unter den Einstellungen vom Telefon zu deinstallieren und dann die App neu zu installieren. Dann würde das erste Bild den erfolgreichen Rückruf mit seinen eigenen Daten auslösen.

Keine Ahnung warum, aber die Deinstallation und Neuinstallation der App hat es für mich gelöst.

    
Jesse Pangburn 18.05.2014 06:56
quelle
0

Ich habe das gleiche Problem gelöst und es gelöst. Weil Sie zwei "cordova.js" in Ihre App importieren, und vielleicht ist eine im iframe. Sie können stattdessen "parent.cordova" in iframe verwenden.

    
Aicoworld 08.08.2014 07:03
quelle
0

Ich hatte dieses Problem mit Cordova 3.7.1 und Camera 0.3.5 - jedes Mal, wenn ich das Plugin anrief, gab es das Bild / Pfad nicht zurück und beim zweiten Aufruf gab es den Fehler "Cancelled" für den vorherigen Anruf zurück.

Das Problem war, dass meine Hauptaktivität ein eigenes onActivityResult hatte, welches die Methode des Super nicht korrekt aufgerufen hat.

%Vor%

Um es zu beheben, musste ich ELSE hinzufügen, um den richtigen Handler aufzurufen:

%Vor%     
Radek Pech 18.02.2015 10:20
quelle

Tags und Links