Activité en arrière plan
Lasyvegasy
-
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?
Je vous remercie par avance.
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:
- Activité en arrière plan
- En arrière plan - Guide
- Youtube en arrière plan - Guide
- Activité instagram - Guide
- Passez le rectangle noir en arrière-plan - Forum Graphisme
- Revenir en arriere mac - Forum MacOS
3 réponses
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..
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();
};
});

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(); }; });