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
721d3247
Commit
721d3247
authored
Jan 28, 2019
by
pengguangpu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加海信驱动并测试
parent
13d6bbf2
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
802 additions
and
17 deletions
+802
-17
gradle_models.ser
.idea/caches/gradle_models.ser
+0
-0
ExampleUnitTest.java
app/src/test/java/com/miya/hardware/ExampleUnitTest.java
+1
-0
HisensePrinter.java
print/src/main/java/com/miya/print/HisensePrinter.java
+529
-0
PrinterManager.java
print/src/main/java/com/miya/print/PrinterManager.java
+6
-2
SunmiK1Printer.java
print/src/main/java/com/miya/print/SunmiK1Printer.java
+21
-15
SunmiT1Printer.java
print/src/main/java/com/miya/print/SunmiT1Printer.java
+23
-0
AccumulateUtils.java
...t/src/main/java/com/miya/print/utils/AccumulateUtils.java
+222
-0
No files found.
.idea/caches/gradle_models.ser
0 → 100644
View file @
721d3247
File added
app/src/test/java/com/miya/hardware/ExampleUnitTest.java
View file @
721d3247
...
...
@@ -13,5 +13,6 @@ public class ExampleUnitTest {
@Test
public
void
addition_isCorrect
()
{
assertEquals
(
4
,
2
+
2
);
System
.
out
.
println
(
""
.
getBytes
().
length
);
}
}
\ No newline at end of file
print/src/main/java/com/miya/print/HisensePrinter.java
View file @
721d3247
This diff is collapsed.
Click to expand it.
print/src/main/java/com/miya/print/PrinterManager.java
View file @
721d3247
...
...
@@ -2,6 +2,7 @@ package com.miya.print;
import
android.content.Context
;
import
com.miya.print.exception.PrinterException
;
import
com.miya.print.utils.D
;
/**
...
...
@@ -16,8 +17,9 @@ public class PrinterManager {
*/
enum
Type
{
//这里添加扩展的驱动
// TYPE_HISENSE("hisense", ChuangjiePrinter.class.getName()),
TYPE_SUNMI
(
"sunmiK1"
,
SunmiK1Printer
.
class
.
getName
()),
TYPE_HISENSE
(
"hisense"
,
HisensePrinter
.
class
.
getName
()),
TYPE_SUNMI_TI
(
"sunmiT1"
,
SunmiT1Printer
.
class
.
getName
()),
TYPE_SUNMI_K1
(
"sunmiK1"
,
SunmiK1Printer
.
class
.
getName
()),
TYPE_YINGTAI
(
"yingtai"
,
YingtaiPrinter
.
class
.
getName
()),
TYPE_CHUANGJIE
(
"chuangjie"
,
ChuangjiePrinter
.
class
.
getName
()),
TYPE_SANGDA
(
"sangda"
,
SangdaPrinter
.
class
.
getName
());
...
...
@@ -87,6 +89,7 @@ public class PrinterManager {
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
printer
=
null
;
}
}
//没有找到对应的打印机
...
...
@@ -96,6 +99,7 @@ public class PrinterManager {
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
}
printer
=
null
;
}
D
.
i
(
TAG
,
"没找到对应的打印机器,请检查"
);
return
false
;
...
...
print/src/main/java/com/miya/print/SunmiK1Printer.java
View file @
721d3247
...
...
@@ -49,6 +49,7 @@ class SunmiK1Printer extends BasePrinter {
}
}
};
;
@Override
public
boolean
init
(
Context
context
)
{
...
...
@@ -163,16 +164,24 @@ class SunmiK1Printer extends BasePrinter {
throw
new
PrinterException
(
PrinterStatusEnum
.
CODE_FAILED
.
status
,
"服务已断开!"
);
}
try
{
int
ret
=
setAlign
(
align
);
//打印的样式默认为CODE128码,数字在条码下面
ret
=
extPrinterService
.
printBarCode
(
content
,
8
,
2
,
120
,
2
);
//强制走两行纸才能生效
ret
=
extPrinterService
.
lineWrap
(
2
);
if
(
isFeed
)
{
ret
=
feedPaper
();
}
/**
* 打印一维条形码
* data 条码内容
* height 条码高度
* width 条码宽度
* textposition 条码内容位置
*/
//这里的高度固定传100,宽度传2,条码内容文字传2
ByteArrayOutputStream
buffer
=
new
ByteArrayOutputStream
();
buffer
.
write
(
new
byte
[]{
0x1D
,
0x48
,
(
byte
)
2
,
0x1D
,
0x77
,
(
byte
)
2
,
0x1D
,
0x68
,
(
byte
)
100
,
0x0A
});
byte
[]
barcode
;
barcode
=
BytesUtil
.
getBytesFromDecString
(
content
);
buffer
.
write
(
new
byte
[]{
0x1D
,
0x6B
,
0x49
,
(
byte
)
(
barcode
.
length
+
2
),
0x7B
,
(
byte
)
(
0x43
)});
buffer
.
write
(
barcode
);
int
ret
=
extPrinterService
.
sendRawData
(
buffer
.
toByteArray
());
return
changeStatus2Custom
(
ret
);
}
catch
(
Remote
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
PrinterException
(
PrinterStatusEnum
.
CODE_FAILED
.
status
,
e
.
getMessage
());
}
...
...
@@ -190,9 +199,9 @@ class SunmiK1Printer extends BasePrinter {
* modeSize ⼆维码块⼤⼩ 1-16 像素点
* errorlevel ⼆维码纠错等级 0-3 四个等级
*/
ret
=
extPrinterService
.
printQrCode
(
content
,
4
,
3
);
ret
=
extPrinterService
.
printQrCode
(
content
,
6
,
3
);
//强制走两行纸才能生效
ret
=
extPrinterService
.
lineWrap
(
2
);
ret
=
extPrinterService
.
lineWrap
(
3
);
if
(
isFeed
)
{
ret
=
feedPaper
();
}
...
...
@@ -231,9 +240,7 @@ class SunmiK1Printer extends BasePrinter {
if
(
actualBm
!=
null
)
{
actualBm
.
recycle
();
}
if
(
isFeed
)
{
ret
=
feedPaper
();
}
//打印图片会默认强制走纸一行
return
changeStatus2Custom
(
ret
);
}
catch
(
RemoteException
e
)
{
throw
new
PrinterException
(
PrinterStatusEnum
.
CODE_FAILED
.
status
,
e
.
getMessage
());
...
...
@@ -431,7 +438,6 @@ class SunmiK1Printer extends BasePrinter {
public
void
printQr
(
String
data
,
int
modulesize
,
int
errorlevel
)
{
if
(
extPrinterService
==
null
)
{
throw
new
PrinterException
(
PrinterStatusEnum
.
CODE_FAILED
.
status
,
"服务已断开!"
);
}
try
{
extPrinterService
.
setAlignMode
(
1
);
...
...
print/src/main/java/com/miya/print/SunmiT1Printer.java
0 → 100644
View file @
721d3247
package
com
.
miya
.
print
;
import
android.content.Context
;
public
class
SunmiT1Printer
extends
BasePrinter
{
final
static
String
TAG
=
SunmiT1Printer
.
class
.
getSimpleName
();
@Override
public
boolean
init
(
Context
context
)
{
return
super
.
init
(
context
);
}
@Override
public
boolean
release
()
{
return
super
.
release
();
}
@Override
public
int
printText
(
int
align
,
int
size
,
String
content
,
boolean
isFeed
)
{
return
super
.
printText
(
align
,
size
,
content
,
isFeed
);
}
}
print/src/main/java/com/miya/print/utils/AccumulateUtils.java
0 → 100644
View file @
721d3247
package
com
.
miya
.
print
.
utils
;
import
android.support.annotation.Nullable
;
import
java.nio.charset.Charset
;
/**
* 累积工具类
*/
public
class
AccumulateUtils
{
/**
* 80mm打印纸一行允许的最大打印字符数(默认字符大小)
*/
final
static
int
MAX_WORDS_80MM
=
46
;
/**
* 58mm打印纸一行允许的最大打印字符数(默认字符大小)
*/
final
static
int
MAX_WORDS_58MM
=
32
;
/**
* 80mm打印纸类型
*/
public
final
static
int
PAGE_MODE_80MM
=
0
;
/**
* 58mm打印纸类型
*/
public
final
static
int
PAGE_MODE_58MM
=
1
;
/**
* 累积字符串
*/
@Nullable
private
static
String
accumulateStr
=
""
;
private
AccumulateUtils
()
{
throw
new
UnsupportedOperationException
();
}
/**
* 累积字符串,自带换行
*
* @param pageMode 打印纸类型
* @param size 字符大小
* @param align 对齐方式
* @param str 待累积的新字符串
* @return 当前累积的字符串
*/
public
static
String
accumulateStringWithLF
(
int
pageMode
,
int
align
,
int
size
,
String
str
)
{
if
(
str
==
null
)
{
return
accumulateStr
;
}
switch
(
pageMode
)
{
case
PAGE_MODE_80MM:
return
accumulateString_80mm
(
align
,
size
,
str
,
true
);
case
PAGE_MODE_58MM:
return
accumulateString_58mm
(
align
,
size
,
str
,
true
);
}
return
accumulateStr
;
}
/**
* 累积字符串
*
* @param pageMode 打印纸类型
* @param size 字符大小
* @param align 对齐方式
* @param str 待累积的新字符串
* @param isFeed 是否走纸
* @return 当前累积的字符串
*/
public
static
String
accumulateString
(
int
pageMode
,
int
align
,
int
size
,
String
str
,
boolean
isFeed
)
{
if
(
str
==
null
)
{
return
accumulateStr
;
}
switch
(
pageMode
)
{
case
PAGE_MODE_80MM:
return
accumulateString_80mm
(
align
,
size
,
str
,
isFeed
);
case
PAGE_MODE_58MM:
return
accumulateString_58mm
(
align
,
size
,
str
,
isFeed
);
}
return
accumulateStr
;
}
/**
* 立即清除已经累积的字符串
*/
public
static
void
clearAccmulateString
()
{
accumulateStr
=
""
;
}
/**
* 获取字符串的byte长度
*
* @param str
* @return
*/
private
static
int
getBytesLength
(
String
str
)
{
if
(
str
!=
null
)
{
return
str
.
getBytes
(
Charset
.
forName
(
"utf-8"
)).
length
;
}
return
0
;
}
/**
* 80mm打印纸累积字符串,自带换行
*
* @param align 对齐方式
* @param size 字符大小
* @param str 字符串内容
* @param isFeed 是否走纸
* @return 当前累积的字符串
*/
public
static
String
accumulateString_80mm
(
int
align
,
int
size
,
String
str
,
boolean
isFeed
)
{
if
(
str
==
null
)
{
return
accumulateStr
;
}
//待拼接的字符串
String
targetStr
=
""
;
switch
(
align
)
{
case
0
:
//居左
accumulateStr
=
accumulateStr
+
str
;
break
;
case
1
:
//居中
if
(
getBytesLength
(
str
)
>
MAX_WORDS_80MM
)
{
accumulateStr
=
accumulateStr
+
str
;
break
;
}
//计算空格数
for
(
int
i
=
0
;
i
<
(
MAX_WORDS_80MM
-
getBytesLength
(
str
))
/
2
;
i
++)
{
targetStr
=
targetStr
+
" "
;
}
targetStr
=
targetStr
+
str
;
accumulateStr
=
accumulateStr
+
targetStr
;
break
;
case
2
:
//居右
if
(
getBytesLength
(
str
)
>
MAX_WORDS_80MM
)
{
accumulateStr
=
accumulateStr
+
str
;
break
;
}
//计算空格数
for
(
int
i
=
0
;
i
<
MAX_WORDS_80MM
-
getBytesLength
(
str
);
i
++)
{
targetStr
=
targetStr
+
" "
;
}
targetStr
=
targetStr
+
str
;
accumulateStr
=
accumulateStr
+
targetStr
;
break
;
}
if
(
isFeed
)
{
accumulateStr
+=
"\n"
;
}
return
accumulateStr
;
}
/**
* 58mm打印纸累积字符串,自带换行
*
* @param align 对齐方式
* @param size 字符大小
* @param str 字符串内容
* @param isFeed 是否走纸
* @return 当前累积的字符串
*/
public
static
String
accumulateString_58mm
(
int
align
,
int
size
,
String
str
,
boolean
isFeed
)
{
if
(
str
==
null
)
{
return
accumulateStr
;
}
//待拼接的字符串
String
targetStr
=
""
;
switch
(
align
)
{
case
0
:
//居左
accumulateStr
=
accumulateStr
+
str
;
break
;
case
1
:
//居中
if
(
getBytesLength
(
str
)
>
MAX_WORDS_58MM
)
{
accumulateStr
=
accumulateStr
+
str
;
break
;
}
//计算空格数
for
(
int
i
=
0
;
i
<
(
MAX_WORDS_58MM
-
getBytesLength
(
str
))
/
2
;
i
++)
{
targetStr
=
targetStr
+
" "
;
}
targetStr
=
targetStr
+
str
;
accumulateStr
=
accumulateStr
+
targetStr
;
break
;
case
2
:
//居右
if
(
getBytesLength
(
str
)
>
MAX_WORDS_58MM
)
{
accumulateStr
=
accumulateStr
+
str
;
break
;
}
//计算空格数
for
(
int
i
=
0
;
i
<
MAX_WORDS_58MM
-
getBytesLength
(
str
);
i
++)
{
targetStr
=
targetStr
+
" "
;
}
targetStr
=
targetStr
+
str
;
accumulateStr
=
accumulateStr
+
targetStr
;
break
;
}
if
(
isFeed
)
{
accumulateStr
+=
"\n"
;
}
return
accumulateStr
;
}
/**
* 获取当前已经累积完的字符串
*
* @return 当前已经累积完的字符串
*/
public
static
String
getAccumulatedString
()
{
return
accumulateStr
;
}
}
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