Bonjour, j’ai un petit problème que je ne comprends pas comment régler une fois de plus. Ca va finir par être une habitude, heureusement je poste qu’en dernier recours.

Pour mon app, j’ai besoin de générer des code barre, ça c’est ok, mais j’ai aussi besoin de pouvoir en lire alors j’ai ajouté un lecteur de code barre EAN 13 a mon app, j’ai utilisé: https://github.com/KingsMentor/Mobil...BarcodeScanner.

Tout fonctionne, je récup le code barre et tout est parfait, mais dans mes log j’ai plein de:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
E/OpenCameraSource: Exception thrown from receiver.
                    java.lang.IllegalStateException: Detector processor must first be set with setProcessor in order to receive detection results.
                        at com.google.android.gms.vision.Detector.receiveFrame(Unknown Source)
                        at com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSource$FrameProcessingRunnable.run(CameraSource.java:1222)
                        at java.lang.Thread.run(Thread.java:762)
C'est une erreur qui me spam grave les log, mais genre toute les seconde il y en a une. La je comprends pas trop, qu’est ce que j’ai fait de mal ? Il manque quelque chose ?

Le code de test un peut modifier fournis ici: https://github.com/KingsMentor/Mobil...nActivity.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.util.SparseArray;
import android.widget.TextView;
 
import com.google.android.gms.samples.vision.barcodereader.BarcodeCapture;
import com.google.android.gms.samples.vision.barcodereader.BarcodeGraphic;
import com.google.android.gms.vision.barcode.Barcode;
 
import java.util.List;
 
import xyz.belvi.mobilevisionbarcodescanner.BarcodeRetriever;
 
public class Activity_code_barre extends AppCompatActivity implements BarcodeRetriever {
 
 
    private static final String TAG = "BarcodeMain";
 
    BarcodeCapture barcodeCapture;
    TextView barcode_decode;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_code_barre);
 
        barcodeCapture = (BarcodeCapture) getSupportFragmentManager().findFragmentById(R.id.barcode);
        barcodeCapture.setRetrieval(this);
 
        barcodeCapture
                .shouldAutoFocus(true)
                .setShowFlash(true)
                .setBarcodeFormat(Barcode.EAN_13)
                .setShouldShowText(true);
 
        barcode_decode = (TextView) findViewById(R.id.barcode_decode);
    }
 
 
    @Override
    public void onRetrieved(final Barcode barcode) {
        Log.d(TAG, "Barcode read: " + barcode.displayValue);
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
 
                AlertDialog.Builder builder = new AlertDialog.Builder(Activity_code_barre.this)
                        .setTitle("code retrieved")
                        .setMessage(barcode.displayValue);
                builder.show();
 
                barcode_decode.setText(barcode.displayValue);
            }
        });
 
        barcodeCapture.stopScanning();
    }
 
    @Override
    public void onRetrievedMultiple(final Barcode closetToClick, final List<BarcodeGraphic> barcodeGraphics) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                String message = "Code selected : " + closetToClick.displayValue + "\n\nother " +
                        "codes in frame include : \n";
                for (int index = 0; index < barcodeGraphics.size(); index++) {
                    Barcode barcode = barcodeGraphics.get(index).getBarcode();
                    message += (index + 1) + ". " + barcode.displayValue + "\n";
                }
                AlertDialog.Builder builder = new AlertDialog.Builder(Activity_code_barre.this)
                        .setTitle("code retrieved")
                        .setMessage(message);
                builder.show();
            }
        });
 
    }
 
    @Override
    public void onBitmapScanned(SparseArray<Barcode> sparseArray) {
        for (int i = 0; i < sparseArray.size(); i++) {
            Barcode barcode = sparseArray.valueAt(i);
            Log.e("debug", barcode.displayValue);
        }
 
    }
 
    @Override
    public void onRetrievedFailed(String reason) {
        Log.e("debug", reason);
 
    }
 
    @Override
    public void onPermissionRequestDenied() {
        Log.e("debug", "et merde");
    }
 
 
}
EDIT:

J'ai utilisé ce code: https://github.com/googlesamples/and...barcode-reader et com.google.android.gms:play-services-vision:12.0.0 et tout fonctionne, j'ai plus d'erreur.
Ce qui est top c'est qu'avec cette exemple, mais c'est sans doute la façon dont c'est codé c'est que ça bloque pas la "lecture" une fois le code trouvé et en plus si on en a plusieurs sur d'affiché, on a juste à toucher celui qu'on veut et ça le sélectionne!!! J'espère que ça aidera d'autre personne.

EDIT:

j'ai beau cherché mais je ne trouve pas: pourquoi la caméra ne prend pas tout l'écran ? J'ai des bordures blanche