2013-11-02 8 views
9

Sto sviluppando l'app di PhoneGap. E usando la fotocamera. Funzionava pochi giorni fa. Ho apportato molte modifiche negli ultimi giorni e ora la fotocamera non funziona correttamente. Si apre la fotocamera ma quando scatto la foto, quindi dall'app della fotocamera. quando premo OK, riavvia l'app.Fotocamera nell'applicazione PhoneGap. riavvio dell'app

Non capisco come stia facendo. In realtà non riesco a capire se è possibile riavviare dalla mia app PhoneGap. Codice JS o può essere riavviato solo dal codice Java Android.

Sto usando questo codice per la macchina fotografica:

function takePhoto() { 
navigator.camera.getPicture(onCameraPicSuccess, onCameraPicFail, {quality: 50, 
    destinationType: Camera.DestinationType.FILE_URI 
}); 

function onCameraPicSuccess(imageURI) { 
    alert("coming here in pic success"); 
    var img = '<div style="padding:4px; margin:10px; border: solid 2px #666;float: left; width:30%"><img src="' + imageURI + '" width="100%" /></div>'; 
    $('#images_area').append(img); 
} 

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

Quindi, qualsiasi idea, per questo che app. si riavvierà utilizzando l'app fotocamera. attraverso il codice sopra? Il mio codice JS non ha uno splash screen ma il mio codice Java lo ha. Quindi, dopo aver premuto il pulsante OK della fotocamera, posso vedere l'app. riavviato con binding back button e binding menu button non funziona per un po '.

Quindi non so cosa sta succedendo. Se voi ragazzi avete una tale esperienza o un'idea, sentitevi liberi di condividere.

Se c'è qualcosa di più ho bisogno di dire. Allora fammi sapere.


Dopo aver fatto qualche altra ricerca su stackoverflow.com, sono venuto a sapere che il problema è Android, mentre Android uccide l'app. in background se ha meno memoria. Quindi è necessario liberare la memoria e.t.c. Ma quello che ho notato è che l'applicazione stava funzionando bene quando stavo usando JQuery Mobile Forms. Ma dopo averlo modificato in custom, questo problema con la fotocamera si presenta. Quindi, se questo è un problema relativo alla memoria, allora perché si è verificato sulla rimozione di moduli jQuery mobili e sul lavoro personalizzato. In effetti, ora l'applicazione è ancora più fluida con il lavoro personalizzato. Quindi sono confuso dal fatto che si tratti di problemi legati alla memoria o qualcos'altro? E come affrontare questo tipo di app. sviluppato in PhoneGap.

risposta

4

L'API fotocamera PhoneGap invoca l'applicazione della fotocamera quando si utilizza

navigator.camera.getPicture 

Si prega di leggere qui - http://docs.phonegap.com/en/edge/cordova_camera_camera.md.html#Camera

Questo spinge l'applicazione in background e che possono portare a vostra applicazione essere ucciso se ci non è abbastanza memoria

Se non si desidera che l'applicazione venga inserita in background mentre la fotocamera è attiva, è necessario utilizzare un plug-in per fotocamera in primo piano. Date un'occhiata a here

Potrebbe essere necessario cambiarlo in base alle proprie esigenze.

+0

ma in questo modo probabilmente avrò bisogno anche del plugin per iOS? – Hafiz

+0

+1 per avermi mostrato un altro modo, ma non ho potuto testarlo ancora così ti farò sapere dopo aver provato il modo in cui – Hafiz

+0

non è in grado di eseguire questo plugin, dopo averlo incluso nel progetto come detto nella sua pagina del progetto, impossibile compilare e rendere build – Hafiz

1

Può trattarsi di un problema relativo alla memoria. È possibile aumentare la dimensione dell'heap dell'applicazione applicando android:largeHeap="true" nel file manifest dell'applicazione.

+0

no la differenza, nell'usare la fotocamera, sta avendo lo stesso problema, riavviando l'app. premendo il tasto OK dopo aver catturato l'immagine. – Hafiz

0

Nel file manifest di Android impostare la modalità di avvio dell'attività su "singleTask" o "singleInstance".
Potrebbe essere l'applicazione che avvia l'attività in più tempi.

+0

provato sia singleTask che singleInstance ma non ha ottenuto la soluzione – Hafiz

0

vedere questo collegamento, spiega che questo non ha effettivamente a che fare con PhoneGap, ma con le attività di Android. Suggerisce di utilizzare un plug-in chiamato Plug-in fotocamera in primo piano.

PhoneGap camera restarts the application

1

Non dovrebbe essere necessario per creare un insieme macchina di primo piano personalizzato, basta specificare il garbage collector aggressivo che si desidera recuperare il vecchio intento invece di iniziare una nuova istanza. Provare a impostare una bandiera sul intento salvato all'interno del plugin fotocamera:

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

vedi il mio post qui: https://stackoverflow.com/a/29630548/2782404

Inoltre, aumentando la dimensione heap e utilizzando singleTask/SingleInstance non ha funzionato per me