Bonjour tout le monde !!
Me revoici avec un piti problème bien prise de tête :
Petit résumé : je dois créer une application qui décode les codes-barres a partir de la camera du téléphone (dur dur). Pour cela, je crée une instance de la camera, je récupère mes previews et je leur applique le traitement de decodage dans un thread créé juste pour ça (oh le petit chanceux).
J'ai actuellement des problèmes avec ma récupération des previewframes de ma camera, puisque des que je termine le traitement de ma première preview, mon programme principal ne me récupère pas mes frames (mais les affiche à l'écran de l'émulateur).
A savoir que lorsque j'enlève mon thread de mon programme, mes preview sont bien récupérées en boucle tant que je n'arrête pas la camera.
Voila le code qui me permet de récupérer mes previews :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Camera.PreviewCallback mPreviewCallback = new Camera.PreviewCallback() { public void onPreviewFrame(byte[] data, Camera mCamera){ Log.e(TAG, "onPreviewFrame"); //Si on récupère un tableau "valide" if (data!=null) { //si on a pas un traitement en cours, on lance le decodage. if (traitement==false){ traitement=true; imgArray=data.clone(); //lancement du thread startLongRunningOperation(); Log.e(TAG, "et le booleen est..."+traitement); } } else { Toast.makeText(mContext, "impossible de traiter l'image",Toast.LENGTH_LONG).show(); } } };
et ici le code de mon thread :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 protected void startLongRunningOperation() { // Fire off a thread to do some work that we shouldn't do directly in the UI thread Thread t = new Thread() { public void run() { j++; Log.e(TAG, "number........"+j); mResults = ZDecoder(imgArray); Log.e(TAG, "on est sorti du ZDecoder"+j); traitement=false; } }; t.start(); }
Vous avez 4 heures, ce sera ramassé, noté et la présentation est prise en compte dans le barème, donc on s'applique ! xD
Nan je déconne. Si quelqu'un peut m'aider, merci !!
EDIT :
Après avoir essayé d'intégrer mon traitement directement dans mon OnPreviewFrame, je me retrouve avec un joli message d'erreur "Out of memory on a 307640-byte allocation". Donc, cela voudrait dire que ma mémoire ne se vide pas entre 2 traitements consécutifs. Ce que je trouve assez bizarre. Je travaille sous android 1.5, et je me demande si le système de gestion de mémoire est bien géré sur cette version ...