Activité en arrière plan

Lasyvegasy -  
 Lasyvegasy -
Bonjour,

Je suis actuellement entrain de créer une application permettant de résoudre une grille de sudoku par l'intermédiaire de la caméra du smartphone. J'ai donc pour cela créé un programme permettant de récupérer les chiffres inscrits dans chaque cases cependant l'application s'arrête a chaque et tourne pas.. D'après quelques recherches je dois lancer une partie de mon programme en arrière plan avec AsyncTask cependant j'ai du mal à l'adapter..
Pourriez vous m'aidez à avancer svp?

        btnProcess.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                TextRecognizer textRecognizer=new TextRecognizer.Builder(getApplicationContext()).build();
                if(!textRecognizer.isOperational()){
                    Log.e("Error","Detector not available");
                }
                else{
                    int largeur= (bitmap.getWidth())/9;
                    int hauteur= (bitmap.getHeight())/9;
                    Bitmap cellule = null;
                    StringBuilder stringBuilder=new StringBuilder();
                    for (int i=0;i<9;i++ ){
                        for(int z=0;i<9;z++){
                            if(z==0){
                                 cellule=Bitmap.createBitmap(bitmap,i*largeur,0,largeur,hauteur);
                            }
                            if(0<z){
                                 cellule=Bitmap.createBitmap(bitmap,i*largeur,z*hauteur,largeur,hauteur);
                            }
                            Frame frame=new Frame.Builder().setBitmap(cellule).build();
                            SparseArray<TextBlock> items =textRecognizer.detect(frame);
                            TextBlock item=items.valueAt(0);
                            stringBuilder.append(item.getValue()+" ");
                            cellule.recycle();

                        }
                        stringBuilder.append("\n");
                    }
                    txtResult.setText(stringBuilder.toString());
                    }
                }
        });


Je vous remercie par avance.


A voir également:

3 réponses

BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918
 
Bonjour,

Les
AsyncTasks
, c'est un peu dépassé..Regardes du côté des threads car, effectivement, il faut éviter de faire de gros traitements sur le thread principal (UI thread).

0
Lasyvegasy
 
Bonjour, j'essayé avec les threads mais toujours le même problème.. L'application s'arrête et se ferme quand je lance l'application.

btnProcess.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                new Thread(new Runnable() {
                    public void run() {
                        final StringBuilder stringBuilder = new StringBuilder();
                        TextRecognizer textRecognizer=new TextRecognizer.Builder(getApplicationContext()).build();
                        if(!textRecognizer.isOperational()){
                            Log.e("Error","Detector not available");
                        }
                        else {
                            int largeur = (bitmap.getWidth()) / 9;
                            int hauteur = (bitmap.getHeight()) / 9;
                            Bitmap cellule = null;
                            for (int i = 0; i < 9; i++) {
                                for (int z = 0; i < 9; z++) {
                                    if (z == 0) {
                                        cellule = Bitmap.createBitmap(bitmap, i * largeur, 0, largeur, hauteur);
                                    }
                                    if (0 < z) {
                                        cellule = Bitmap.createBitmap(bitmap, i * largeur, z * hauteur, largeur, hauteur);
                                    }
                                    Frame frame = new Frame.Builder().setBitmap(cellule).build();
                                    SparseArray<TextBlock> items = textRecognizer.detect(frame);
                                    TextBlock item = items.valueAt(0);
                                    stringBuilder.append(item.getValue() + " ");
                                    cellule.recycle();

                                }
                                stringBuilder.append("\n");
                            }
                        }
                        runOnUiThread(new Runnable() {
                            public void run() {
                                txtResult.setText(stringBuilder.toString());
                            }
                        });
                    }
                }).start();

            };
        });
0
BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918
 
As-tu regardé les logs? Quel est le message d'erreur? L'exception?
0
Lasyvegasy
 
j'ai le message d'erreur "Application has stopped" mais apres je pense que c'est par rapport à mes coordonnées pour délimiter les cases.
0
BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918
 
Je te parle des logs que tu as dans la console d'Android Studio...
ça peut effectivement être lié à tes coordonnées mais dans ce cas, on est hors sujet
0
Lasyvegasy
 
J'ai modifié le code du coup j'ai plus de message d'erreur cependant ma détection de texte n'est pas efficace..

Il me retourne une grille rempli de zéro..

btnProcess.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                new Thread(new Runnable() {
                    public void run() {
                        final StringBuilder stringBuilder = new StringBuilder();
                        TextRecognizer textRecognizer=new TextRecognizer.Builder(getApplicationContext()).build();
                        if(!textRecognizer.isOperational()){
                            Log.e("Error","Detector not available");
                        }
                        else {
                            int largeur = (bitmap.getWidth()) / 9;
                            int hauteur = (bitmap.getHeight()) / 9;
                            Bitmap cellule = null;
                            for (int y = 0; y< 9; y++) {
                                for (int x = 0; x < 9; x++) {
                                    if (y == 0) {
                                        cellule = Bitmap.createBitmap(bitmap,x*largeur,0,largeur,hauteur);
                                    }
                                    if (0 < y ) {
                                        cellule = Bitmap.createBitmap(bitmap,x*largeur,y*hauteur,largeur,hauteur);
                                    }
                                    Frame frame = new Frame.Builder().setBitmap(cellule).build();
                                    cellule.recycle();
                                    SparseArray<TextBlock> items = textRecognizer.detect(frame);
                                    if (items.size()==0){
                                        stringBuilder.append("0" + " ");
                                    }
                                    else{
                                        TextBlock item=items.valueAt(0);
                                        stringBuilder.append(item.getValue() + " ");
                                    }

                                }
                                stringBuilder.append("\n");
                            }
                        }
                        runOnUiThread(new Runnable() {
                            public void run() {
                                txtResult.setText(stringBuilder.toString());
                            }
                        });
                    }
                }).start();

            };
        });
0
BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918
 
Déroules le code en pas-à-pas pour voir le souci
0
Lasyvegasy
 
Y'a moyen de lancer le code pas à pas avec Android Studio?
0
BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918
 
0
Lasyvegasy
 
Merci!
0