SUNMI
SUMIN 스캔 및 인쇄 요약
1 스캔 드라이브 호출
1 sumins 드라이버 호출은 다음과 같습니다.private void initScan() {
Intent intent = new Intent("com.summi.scan");
intent.setPackage("com.sunmi.sunmiqrcodescanner");
intent.putExtra("CURRENT_PPI", 0X0003);//
//M1 V1 800*480,PPI_1920_1080 = 0X0001;PPI_1280_720 =
//0X0002;PPI_BEST = 0X0003;
intent.putExtra("PLAY_SOUND", true);// true
intent.putExtra("PLAY_VIBRATE", false);
// , false, M1 ,V1
intent.putExtra("IDENTIFY_INVERSE_QR_CODE", true);// , true
intent.putExtra("IDENTIFY_MORE_CODE", false);// , false
intent.putExtra("IS_SHOW_SETTING", true);// , true
intent.putExtra("IS_SHOW_ALBUM", true);// , true
startActivityForResult(intent, Decode);
}
2 스캔이 끝난 후에 우리가 직접 가는 방법은onActivityResult() 방법입니다. 여기서 우리가 스캔한 정보를 얻을 수 있고 정보를 처리할 수 있습니다. 코드는 다음과 같습니다.@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 2 && data != null) {
Bundle bundle = data.getExtras();
ArrayList> result = (ArrayList>) bundle
.getSerializable("data");
Iterator> it = result.iterator();
while (it.hasNext()) {
HashMap hashMap = it.next();
String value = hashMap.get("VALUE");
String[] split = value.split("=");
orderId = split[1];
// , , , 0 ,
getAvalibaleCount(orderId);
}
}
}
2 인쇄 인터페이스 초기화
:
/**
*
*/
private void initRPrint() {
callback = new ICallback.Stub() {
@Override
public void onRunResult(boolean isSuccess) throws RemoteException {
}
@Override
public void onReturnString(String result) throws RemoteException {
Log.i("Aaa", "printlength:" + value + "
");
}
@Override
public void onRaiseException(int code, final String msg) throws RemoteException {
Log.i("aaa", "onRaiseException: " + msg);
runOnUiThread(new Runnable() {
@Override
public void run() {
// info.append("onRaiseException = " + msg + "
");
}
});
}
};
init();
}
private void init() {
Intent intent = new Intent();
intent.setPackage("woyou.aidlservice.jiuiv5");
intent.setAction("woyou.aidlservice.jiuiv5.IWoyouService");
startService(intent);
bindService(intent, servicect2, Context.BIND_AUTO_CREATE);
}
ServiceConnection servicect2 = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
woyouService = IWoyouService.Stub.asInterface(service);
}
@Override
public void onServiceDisconnected(ComponentName name) {
woyouService = null;
}
};
3 인쇄를 위한 드라이버 호출
Bitmap mBitmap;
private void rPrientTicket() {
ThreadPoolManager.getInstance().executeTask(new Runnable() {
@Override
public void run() {
if (mBitmap == null) {
mBitmap = BitmapFactory.decodeResource(getResources(), R.raw.test);
}
try {
// ,
woyouService.printText(" :" + productNam + "
", callback); //
}
});
}
4 QR코드 생성
,
//
private void showQR() {
ThreadPoolManager.getInstance().executeTask(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
// , imageview
//
Bitmap bitmap = BytesUtil.createBitmap(value, 240);
iv_qr.setImageBitmap(bitmap);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
5 QR코드를 생성하는 스레드 탱크 관리 클래스
/**
*
*/
public class ThreadPoolManager {
private ExecutorService service;
private ThreadPoolManager() {
int num = Runtime.getRuntime().availableProcessors() * 20;
service = Executors.newFixedThreadPool(num);
}
private static final ThreadPoolManager manager = new
ThreadPoolManager();
public static ThreadPoolManager getInstance() {
return manager;
}
public void executeTask(Runnable runnable) {
service.execute(runnable);
}
}
QR코드 생성 키트
// , imageview
public static Bitmap createBitmap(String data,int size){
try {
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
// ,
BitMatrix bitMatrix = new QRCodeWriter().encode(data, BarcodeFormat.QR_CODE, size, size, hints);
int[] pixels = new int[size * size];
// , ,
// for
for (int y = 0; y < size; y++) {
for (int x = 0; x < size; x++) {
if (bitMatrix.get(x, y)) {
pixels[y * size + x] = 0xff000000;
} else {
pixels[y * size + x] = 0xffffffff;
}
}
}
// , ARGB_8888
Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, size, 0, 0, size, size);
return bitmap;
} catch (WriterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
요약: 배치의 ImageView 너비를 설정하여 필요한 크기의 QR코드를 표시할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
private void initScan() {
Intent intent = new Intent("com.summi.scan");
intent.setPackage("com.sunmi.sunmiqrcodescanner");
intent.putExtra("CURRENT_PPI", 0X0003);//
//M1 V1 800*480,PPI_1920_1080 = 0X0001;PPI_1280_720 =
//0X0002;PPI_BEST = 0X0003;
intent.putExtra("PLAY_SOUND", true);// true
intent.putExtra("PLAY_VIBRATE", false);
// , false, M1 ,V1
intent.putExtra("IDENTIFY_INVERSE_QR_CODE", true);// , true
intent.putExtra("IDENTIFY_MORE_CODE", false);// , false
intent.putExtra("IS_SHOW_SETTING", true);// , true
intent.putExtra("IS_SHOW_ALBUM", true);// , true
startActivityForResult(intent, Decode);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 2 && data != null) {
Bundle bundle = data.getExtras();
ArrayList> result = (ArrayList>) bundle
.getSerializable("data");
Iterator> it = result.iterator();
while (it.hasNext()) {
HashMap hashMap = it.next();
String value = hashMap.get("VALUE");
String[] split = value.split("=");
orderId = split[1];
// , , , 0 ,
getAvalibaleCount(orderId);
}
}
}
:
/**
*
*/
private void initRPrint() {
callback = new ICallback.Stub() {
@Override
public void onRunResult(boolean isSuccess) throws RemoteException {
}
@Override
public void onReturnString(String result) throws RemoteException {
Log.i("Aaa", "printlength:" + value + "
");
}
@Override
public void onRaiseException(int code, final String msg) throws RemoteException {
Log.i("aaa", "onRaiseException: " + msg);
runOnUiThread(new Runnable() {
@Override
public void run() {
// info.append("onRaiseException = " + msg + "
");
}
});
}
};
init();
}
private void init() {
Intent intent = new Intent();
intent.setPackage("woyou.aidlservice.jiuiv5");
intent.setAction("woyou.aidlservice.jiuiv5.IWoyouService");
startService(intent);
bindService(intent, servicect2, Context.BIND_AUTO_CREATE);
}
ServiceConnection servicect2 = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
woyouService = IWoyouService.Stub.asInterface(service);
}
@Override
public void onServiceDisconnected(ComponentName name) {
woyouService = null;
}
};
Bitmap mBitmap;
private void rPrientTicket() {
ThreadPoolManager.getInstance().executeTask(new Runnable() {
@Override
public void run() {
if (mBitmap == null) {
mBitmap = BitmapFactory.decodeResource(getResources(), R.raw.test);
}
try {
// ,
woyouService.printText(" :" + productNam + "
", callback); //
}
});
}
,
//
private void showQR() {
ThreadPoolManager.getInstance().executeTask(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
// , imageview
//
Bitmap bitmap = BytesUtil.createBitmap(value, 240);
iv_qr.setImageBitmap(bitmap);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
/**
*
*/
public class ThreadPoolManager {
private ExecutorService service;
private ThreadPoolManager() {
int num = Runtime.getRuntime().availableProcessors() * 20;
service = Executors.newFixedThreadPool(num);
}
private static final ThreadPoolManager manager = new
ThreadPoolManager();
public static ThreadPoolManager getInstance() {
return manager;
}
public void executeTask(Runnable runnable) {
service.execute(runnable);
}
}
// , imageview
public static Bitmap createBitmap(String data,int size){
try {
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
// ,
BitMatrix bitMatrix = new QRCodeWriter().encode(data, BarcodeFormat.QR_CODE, size, size, hints);
int[] pixels = new int[size * size];
// , ,
// for
for (int y = 0; y < size; y++) {
for (int x = 0; x < size; x++) {
if (bitMatrix.get(x, y)) {
pixels[y * size + x] = 0xff000000;
} else {
pixels[y * size + x] = 0xffffffff;
}
}
}
// , ARGB_8888
Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, size, 0, 0, size, size);
return bitmap;
} catch (WriterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.