Buona Domenica a Tutti,
stavo utilizzando questo codice preso da b4x ( ma non ricordo esattamente dove)
tutto funziona come dovrebbe, crea una bitmap cosi:
io vorrei che generasse la bitmap anche con il codice sotto, magari anche tramite parametro tipo cosi:
allego il codice java, si potrebbe modificare? Grazie mille
stavo utilizzando questo codice preso da b4x ( ma non ricordo esattamente dove)
tutto funziona come dovrebbe, crea una bitmap cosi:
io vorrei che generasse la bitmap anche con il codice sotto, magari anche tramite parametro tipo cosi:
allego il codice java, si potrebbe modificare? Grazie mille
B4X:
Private ImgEan As ImageView
Dim bm As Bitmap
Dim codice as string="8017760987456"
bm = drawEAN13(codice)
ImgEan.Bitmap=bm
Sub drawEAN13 (data As String) As Bitmap
Log("data: " & data)
Return nativeMe.RunMethod("drawEAN13", Array(data))
End Sub
#If Java
import android.graphics.Bitmap;
import android.graphics.Point;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.content.Context;
import java.util.Collection;
import java.util.EnumMap;
import java.util.HashSet;
import java.util.Map;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
public Bitmap drawEAN13 (String data) {
Bitmap bitmap = encodeAsBitmap(data, 250, 100);
return bitmap;
}
public Bitmap encodeAsBitmap(String text, int width, int height){
text = Ean13CheckSum(text);
MultiFormatWriter writer = new MultiFormatWriter();
BitMatrix matrix = null;
try {
matrix = writer.encode(text, BarcodeFormat.EAN_13, width, height);
} catch (WriterException ex) {
ex.printStackTrace();
}
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
for (int x = 0; x < width; x++){
for (int y = 0; y < height; y++){
bmp.setPixel(x, y, matrix.get(x,y) ? 0xff000000 : 0xffffffff);
}
}
return bmp;
}
// checksum utility
public String Ean13CheckSum(String Str) {
int DigitValue = 0; int CodeLen = Str.length();
int CodeValue[] = new int[CodeLen];
if(CodeLen < 13) {
for(int c = 0; c < CodeLen; c ++) {
CodeValue[c] = Integer.parseInt(Str.substring(c,c+1));
}
int Even = CodeValue[0] + CodeValue[2] + CodeValue[4] + CodeValue[6] + CodeValue[8] + CodeValue[10];
int Odd = (CodeValue[1] + CodeValue[3] + CodeValue[5] + CodeValue[7] + CodeValue[9] + CodeValue[11]) * 3;
int Sum = Odd + Even;
DigitValue = 10 - (Sum % 10);
DigitValue = (DigitValue == 10) ? 0 : DigitValue;
}
Str = Str + DigitValue;
return Str;
}
#End If