8
votes

Cordova / Samsung Galaxy SIII - Camera Crashs App

Correction: "Ne pas conserver les activités" est par défaut sur SG3

Samsung Galaxy S3 Ships avec "Ne pas conserver les activités" par défaut (les modèles de test en deux emplacements ont tous deux déjà échappé à la boîte) P >

Bien sûr, cela signifie que dès que toute autre activité est démarrée, y compris dans votre application Cordova / PhoneGap, l'activité principale de votre application sera détruite. Tout événement de rappel ne fera évidemment jamais tirer. P>

commutation de l'option désactivé correctement le problème. P>

Vérifiez les options de développeur indépendamment de la marque / modèle, par exemple, les tablettes ASUS NEXUS 7 n'ont pas cette valeur par défaut . P>


J'ai configuré une application de test de base. Qui a un bouton et une balise img + le non modifié Cordova index.js code> p>

bouton onclick appelle capturephoto () code>: p>

function onPhotoURISuccess(imageURI) {
  console.log(imageURI);
  var largeImage = document.getElementById('largeImage');
  largeImage.style.display = 'block';
  largeImage.src = imageURI;
}

function capturePhoto() {
  navigator.camera.getPicture( onPhotoURISuccess, onFail, 
     { quality: 20, allowEdit: true, destinationType: Camera.DestinationType.FILE_URI });
}

function onFail(message) {
  alert('Failed because: ' + message);
}


12 commentaires

Je pense que j'ai rencontré ce problème, est-ce que cela réouvraine la page Index.html après avoir terminé avec la caméra en direct?


Sur 2.2.0 et 2.3.0, il réussit à revenir à l'application / index.html. Sur toutes les autres versions que j'ai essayées, 1.8, 1.9, 2.0, 2.1 et 2.4rc1, il se bloque au système d'exploitation. - Ceci est définitivement un problème Samsung uniquement, qui craint, comme ils sont vraiment populaires.


@Clintonward - Oh, je devrais également mentionner que, tandis que 2.2.0 et 2.3.0 revenez à index.html, l'image n'est pas retournée.


Je sais que cela semble compter intuitif, mais pouvez-vous spécifier une qualité de 100 et voir si vous pouvez reproduire le problème?


J'ai trouvé un problème similaire avec la note Samsung, je vais essayer la qualité de l'image 100


@Simonmacdonald Merci pour l'info Simon, très intuitive intuitive, je vais essayer d'essayer.


@Simonmacdonald - Pas de joie que j'ai peur. (essayé avec 2.3.0) - va essayer avec le dernier.


@Simonmacdonald - Voir ma dernière modification. Effectivement les mêmes résultats que Qualité: 20 (essayé 50 pour le plaisir, culte de la cargaison! Faisons-le!)


@Slomojo si je fais face au même problème.can je sais comment vous résolvez ce problème


@Fazil Voir la réponse que j'ai fournie ci-dessous.


Merci - cela m'a sauvé une charge de débogage et de chagrin d'amour. Dans mon cas, l'option particulière que vous avez mentionnée sur la S2 n'a pas été vérifiée, mais désactivez complètement les options de développeur fixées. Merci.


@DAVIDC - Heureux qu'il ait aidé, la question m'avait causé des problèmes pendant quelques semaines au moins.


3 Réponses :


1
votes

Avez-vous des processus de fond éteints? Si tel est le cas, cela brisera toutes les caméras Android. Les données étant transmises dans l'intention ne peuvent pas être nuls.

également, assurez-vous d'ajouter ceci à votre manifeste Android: p>

android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"  


11 commentaires

Nous ne touchons pas les processus d'arrière-plan, nous testons cette même configuration avec un comprimé ASUS / Google Nexus 7 sans problème. - Il y a une liste relativement longue des rapports Samsung sur le groupe Google associé. Toutefois, l'erreur ostensible est "hors mémoire", il s'agit d'un retour d'URI de fichier (que nous montrons maintenant en tant que texte dans une alerte, afin d'éviter tout problème de mémoire charger l'image dans webkit) ... J'utilise 2.3 .0 Actuellement et comme vous pouvez le voir de mes modifications, 2.3.0 reprend, même sans retourner l'URI.


Je comprends que c'est un fichier URI, sauf que rien n'est transmis de la caméra. Je n'ai vu que cette question sur des périphériques en limitant les processus d'arrière-plan, mais si l'application de la caméra Samsung a des problèmes de mémoire, cela peut causer cela aussi. Nous dépendons de l'application fournie par le fabricant de téléphone pour fonctionner réellement et, malheureusement, il ne semble pas fonctionner dans votre cas. Je ne sais toujours pas pourquoi je ne peux pas reproduire vos erreurs de mémoire.


Je vois que c'est définitivement Samsung spécifique, cependant, il ne présente pas de "mémoire de mémoire" dans mes traces de pile. Voici un gist d'une stacktrace que je viens de générer


FYI - J'ai mentionné que l'erreur est ostensiblement "de la mémoire" car cela semble être la pensée générale sur le groupe Google associé (et se présente dans plusieurs traces de pile là-bas.)


Essayez-vous de prendre une photo ou de prendre une vidéo? Je vois la demande de pause, puis un tas de commentaires sur l'écriture sur un audiocache. Je pense que la rédaction audio au cache vous oblige à manquer de mémoire.


Il suffit de prendre une photo, j'ai vu tout le joueur audio / génial des choses aussi, mais Grep que StackTrace, il n'y a aucune mention de mémoire de mémoire.


Il s'est avéré être Ne gardez pas d'activités dans les options de développeur. Beaucoup d'autres harengs rouges en cours de route.


Je pensais alors! Si vous ne gardez pas d'activités, ils ne peuvent pas courir en arrière-plan. L'application de la caméra doit être exécutée en arrière-plan pour enregistrer la photo et le transmettre.


Merci pour les 20/20 Hindsight Joe ;-) - Je pense que la vraie question est pourquoi n'indique que l'androïde journal "Activité a tué: Option de développeur" ou quelque chose de moins cryptique afin que vous puissiez le retrouver. Ou plus important encore, pourquoi l'enfer Samsung a-t-il des téléphones d'expédition avec cette défaillance de développeur?


Tous les appareils Android portent avec ceci, c'est à des applications de test de stress. Dommage qu'ils n'ont pas fait ce test avec leur appareil photo.


J'ai quelques autres périphériques Android ici, et le Samsung est le seul avec cet ensemble par défaut



2
votes

J'ai un Samsung Galaxy Note II. J'ai eu le même problème. J'ai changé cela dans l'androidmanifest.xml et cela fonctionne maintenant sur Samsung et HTC Thunderbolt

<uses-feature android:name="android.hardware.camera" android:required="false"/>

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="10"/>

<activity  android:configChanges="orientation|keyboardHidden" />


1 commentaires

Quelle version de Cordova / PhoneGap, j'ai essayé avec 2.5.0 et 2.3.0. J'ai toujours des problèmes en reprenant correctement.



7
votes

sur le Samsung Galaxy 3 L'option de développeur ne garde pas les activités est sur défaut.

Cela permettra de collecter votre activité principale lorsque vous lancez d'autres, dans ce cas, la caméra.

éteindre l'option résout le problème.


4 commentaires

Pour que je désactive la mise hors tension des options de développeur principal, le commutateur corrige le problème car cette option n'a pas été vérifiée (Galaxy S2).


@DAVIDC - qui désactivera l'option mentionnée ci-dessus, mais éteindra évidemment votre capacité à déboguer également, alors ... peut-être pas si utile. - Remarque, il suffit de lire vos autres commentaires sur l'option isolée qui ne l'étant pas ... douloureux.


Je suis sur le Galaxy S5 et je ne trouve pas de moyen d'éviter de redémarrer même si je désactive "Ne gardez pas d'activités" ou désactive les options de développeur.


Le mode développeur doit être allumé. Je m'attends à ce que vous ayez un problème légèrement différent