Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
miya-hardware
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
pengguangpu
miya-hardware
Commits
52a50a41
Commit
52a50a41
authored
Feb 18, 2019
by
pengguangpu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
商米T1打印条码中增加位数判断,大于12位且位奇数的条码使用打印图片的方法实现
parent
e8363847
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
386 additions
and
239 deletions
+386
-239
PrintActivity.java
app/src/main/java/com/miya/hardware/PrintActivity.java
+1
-2
activity_print.xml
app/src/main/res/layout/activity_print.xml
+229
-217
ChuangjiePrinter.java
print/src/main/java/com/miya/print/ChuangjiePrinter.java
+15
-9
PrinterManager.java
print/src/main/java/com/miya/print/PrinterManager.java
+5
-1
SunmiK1Printer.java
print/src/main/java/com/miya/print/SunmiK1Printer.java
+12
-5
SunmiT1Printer.java
print/src/main/java/com/miya/print/SunmiT1Printer.java
+31
-3
BitmapUtils.java
print/src/main/java/com/miya/print/utils/BitmapUtils.java
+93
-0
PrintLogger.java
print/src/main/java/com/miya/print/utils/PrintLogger.java
+0
-2
No files found.
app/src/main/java/com/miya/hardware/PrintActivity.java
View file @
52a50a41
...
...
@@ -179,8 +179,7 @@ public class PrintActivity extends Activity implements View.OnClickListener {
case
R
.
id
.
btnQrcode
:
if
(
PrinterManager
.
getInstance
().
isConnected
())
{
try
{
// PrinterManager.getInstance().getPrinter().printQrcode(-1, etQrcode.getText().toString(), false);
PrinterManager
.
getInstance
().
getPrinter
().
printQrcode
(-
1
,
"http://60.217.64.173:18080/Wrapper/jump.do?type=1/jump.do?type=3&orderno=511530018091900005&sjm=1455"
,
false
);
PrinterManager
.
getInstance
().
getPrinter
().
printQrcode
(-
1
,
etQrcode
.
getText
().
toString
(),
false
);
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
tvResult
.
setText
(
ex
.
getMessage
());
...
...
app/src/main/res/layout/activity_print.xml
View file @
52a50a41
...
...
@@ -4,6 +4,15 @@
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<ScrollView
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<android.support.v7.widget.ActionMenuView
android:layout_width=
"match_parent"
android:layout_height=
"88dp"
...
...
@@ -223,4 +232,7 @@
android:text=
"打印测试订单"
/>
</TableRow>
</TableLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
\ No newline at end of file
print/src/main/java/com/miya/print/ChuangjiePrinter.java
View file @
52a50a41
...
...
@@ -86,6 +86,7 @@ public class ChuangjiePrinter extends BasePrinter {
@Override
public
boolean
release
()
{
try
{
if
(
mUsbDriver
!=
null
&&
mUsbDev
!=
null
)
{
if
(
mUsbDriver
.
isConnected
())
{
if
(
null
!=
mUsbDev
)
{
...
...
@@ -98,6 +99,11 @@ public class ChuangjiePrinter extends BasePrinter {
}
PrintLogger
.
i
(
TAG
,
"创捷打印资源已关闭"
);
return
true
;
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
PrintLogger
.
e
(
TAG
,
ex
.
getMessage
());
}
return
false
;
}
@Override
...
...
print/src/main/java/com/miya/print/PrinterManager.java
View file @
52a50a41
...
...
@@ -76,7 +76,11 @@ public class PrinterManager {
for
(
Type
type
:
Type
.
values
())
{
try
{
if
(
printer
!=
null
)
{
try
{
printer
.
release
();
}
catch
(
Exception
ex
)
{
//出现异常也继续进行轮询
}
}
Class
printerCls
=
Class
.
forName
(
type
.
clsName
);
printer
=
(
IPrinter
)
printerCls
.
newInstance
();
...
...
print/src/main/java/com/miya/print/SunmiK1Printer.java
View file @
52a50a41
...
...
@@ -70,12 +70,19 @@ class SunmiK1Printer extends BasePrinter {
@Override
public
boolean
release
()
{
try
{
if
(
this
.
context
!=
null
&&
connService
!=
null
)
{
this
.
context
.
unbindService
(
connService
);
}
context
=
null
;
extPrinterService
=
null
;
PrintLogger
.
i
(
TAG
,
"商米K1销毁成功"
);
return
true
;
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
PrintLogger
.
e
(
TAG
,
ex
.
getMessage
());
}
return
false
;
}
/**
...
...
print/src/main/java/com/miya/print/SunmiT1Printer.java
View file @
52a50a41
...
...
@@ -69,6 +69,9 @@ public class SunmiT1Printer extends BasePrinter {
woyouService
.
sendRAWData
(
ESCUtil
.
boldOff
(),
null
);
woyouService
.
sendRAWData
(
ESCUtil
.
underlineOff
(),
null
);
woyouService
.
printTextWithFont
(
content
,
null
,
size
,
null
);
if
(
isFeed
)
{
woyouService
.
lineWrap
(
1
,
null
);
}
return
ret
;
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
...
...
@@ -123,12 +126,33 @@ public class SunmiT1Printer extends BasePrinter {
}
try
{
int
ret
=
setAlign
(
align
);
woyouService
.
printBarCode
(
content
,
8
,
162
,
2
,
2
,
null
);
if
(
content
!=
null
&&
content
.
trim
().
length
()
<=
12
)
{
//该方法最多只能打印12位以内的二维码
woyouService
.
printBarCode
(
content
,
8
,
148
,
2
,
2
,
null
);
}
else
if
(
content
!=
null
&&
content
.
trim
().
length
()
>
12
&&
content
.
trim
().
length
()
%
2
==
0
)
{
//该方法只能打印12位以上位数位偶数的条码
ByteArrayOutputStream
buffer
=
new
ByteArrayOutputStream
();
buffer
.
write
(
new
byte
[]{
0x1D
,
0x48
,
(
byte
)
2
,
0x1D
,
0x77
,
(
byte
)
2
,
0x1D
,
0x68
,
(
byte
)
148
,
0x0A
});
byte
[]
barcode
;
barcode
=
BytesUtil
.
getBytesFromDecString
(
content
);
buffer
.
write
(
new
byte
[]{
0x1D
,
0x6B
,
0x49
,
(
byte
)
(
barcode
.
length
+
2
),
0x7B
,
(
byte
)
(
0x43
)});
buffer
.
write
(
barcode
);
woyouService
.
sendRAWData
(
buffer
.
toByteArray
(),
null
);
}
else
if
(
content
!=
null
)
{
//超过12位且长度位奇数的情况,采用打印一维条码图片的形式
Bitmap
barcodeBm
=
BitmapUtils
.
createBarcodeBitmap
(
content
,
8
,
460
,
148
);
if
(
barcodeBm
!=
null
)
{
ret
=
printImage
(
align
,
barcodeBm
,
isFeed
);
barcodeBm
.
recycle
();
}
}
if
(
isFeed
)
{
woyouService
.
lineWrap
(
1
,
null
);
}
return
ret
;
}
catch
(
Remote
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
PrinterException
(
PrinterStatusEnum
.
CODE_FAILED
.
status
,
e
.
getMessage
());
}
}
...
...
@@ -211,6 +235,8 @@ public class SunmiT1Printer extends BasePrinter {
*/
private
int
changeStatus2Custom
(
int
status
)
{
switch
(
status
)
{
case
0
:
return
PrinterStatusEnum
.
CODE_SUCCESS
.
status
;
case
1
:
//正常状态
return
PrinterStatusEnum
.
CODE_SUCCESS
.
status
;
...
...
@@ -226,8 +252,10 @@ public class SunmiT1Printer extends BasePrinter {
case
6
:
//开盖
throw
new
PrinterException
(
PrinterStatusEnum
.
CODE_FAILED
.
status
,
"打印机开盖"
);
case
7
:
throw
new
PrinterException
(
PrinterStatusEnum
.
CODE_KNIFE_ERROR
.
status
,
"切刀异常"
);
default
:
throw
new
PrinterException
(
PrinterStatusEnum
.
CODE_
NO_PAPER
.
status
,
"获取状态异常"
);
throw
new
PrinterException
(
PrinterStatusEnum
.
CODE_
FAILED
.
status
,
"获取状态异常"
);
}
}
...
...
print/src/main/java/com/miya/print/utils/BitmapUtils.java
View file @
52a50a41
...
...
@@ -7,6 +7,16 @@ import android.graphics.Paint;
import
android.graphics.Rect
;
import
android.util.Log
;
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
;
import
com.google.zxing.qrcode.decoder.ErrorCorrectionLevel
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* bitmap处理工具类
*/
...
...
@@ -69,4 +79,87 @@ public class BitmapUtils {
canvas
.
drawBitmap
(
origin
,
width
,
0
,
null
);
return
newBm
;
}
/**
* 生成条码bitmap
*
* @param content 条码内容
* @param format 条码类型
* * 0 -- UPC-A,
* * 1 -- UPC-E,
* * 2 -- JAN13(EAN13),
* * 3 -- JAN8(EAN8),
* * 4 -- CODE39,
* * 5 -- ITF,
* * 6 -- CODABAR,
* * 7 -- CODE93,
* * 8 -- CODE128
* @param width 条码宽度
* @param height 条码高度
* @return 条码bitmap(可为null)
*/
public
static
Bitmap
createBarcodeBitmap
(
String
content
,
int
format
,
int
width
,
int
height
)
{
if
(
content
==
null
||
content
.
equals
(
""
))
return
null
;
BarcodeFormat
barcodeFormat
;
switch
(
format
)
{
case
0
:
barcodeFormat
=
BarcodeFormat
.
UPC_A
;
break
;
case
1
:
barcodeFormat
=
BarcodeFormat
.
UPC_E
;
break
;
case
2
:
barcodeFormat
=
BarcodeFormat
.
EAN_13
;
break
;
case
3
:
barcodeFormat
=
BarcodeFormat
.
EAN_8
;
break
;
case
4
:
barcodeFormat
=
BarcodeFormat
.
CODE_39
;
break
;
case
5
:
barcodeFormat
=
BarcodeFormat
.
ITF
;
break
;
case
6
:
barcodeFormat
=
BarcodeFormat
.
CODABAR
;
break
;
case
7
:
barcodeFormat
=
BarcodeFormat
.
CODE_93
;
break
;
case
8
:
barcodeFormat
=
BarcodeFormat
.
CODE_128
;
break
;
case
9
:
barcodeFormat
=
BarcodeFormat
.
QR_CODE
;
break
;
default
:
barcodeFormat
=
BarcodeFormat
.
QR_CODE
;
height
=
width
;
break
;
}
MultiFormatWriter
qrCodeWriter
=
new
MultiFormatWriter
();
Map
<
EncodeHintType
,
Object
>
hints
=
new
HashMap
<>();
hints
.
put
(
EncodeHintType
.
CHARACTER_SET
,
"GBK"
);
hints
.
put
(
EncodeHintType
.
ERROR_CORRECTION
,
ErrorCorrectionLevel
.
H
);
try
{
BitMatrix
encode
=
qrCodeWriter
.
encode
(
content
,
barcodeFormat
,
width
,
height
,
hints
);
int
[]
pixels
=
new
int
[
width
*
height
];
for
(
int
i
=
0
;
i
<
height
;
i
++)
{
for
(
int
j
=
0
;
j
<
width
;
j
++)
{
if
(
encode
.
get
(
j
,
i
))
{
pixels
[
i
*
width
+
j
]
=
0x00000000
;
}
else
{
pixels
[
i
*
width
+
j
]
=
0xffffffff
;
}
}
}
return
Bitmap
.
createBitmap
(
pixels
,
0
,
width
,
width
,
height
,
Bitmap
.
Config
.
RGB_565
);
}
catch
(
WriterException
e
)
{
e
.
printStackTrace
();
}
catch
(
IllegalArgumentException
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
}
print/src/main/java/com/miya/print/utils/PrintLogger.java
View file @
52a50a41
package
com
.
miya
.
print
.
utils
;
import
com.miya.print.BuildConfig
;
public
class
PrintLogger
{
private
static
final
String
Tag
=
PrintLogger
.
class
.
getSimpleName
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment