Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
Widget
Project
Project
Details
Activity
Releases
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Android Widget
Widget
Commits
b11bf355
Commit
b11bf355
authored
Aug 16, 2021
by
王雷
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
发布printer,keyboard新版本
parent
d645ea5d
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
118 additions
and
80 deletions
+118
-80
build.gradle
KeyBoardView/build.gradle
+1
-1
NumberKeyBoard.kt
...src/main/java/com/qmai/android/keyboard/NumberKeyBoard.kt
+4
-1
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+2
-0
MainActivityPtinter.kt
...main/java/com/qimai/android/widget/MainActivityPtinter.kt
+2
-0
Utils.java
app/src/main/java/com/qimai/android/widget/Utils.java
+50
-0
build.gradle
printer/build.gradle
+1
-1
BlueDeviceManager.kt
...n/java/zs/qimai/com/printer2/manager/BlueDeviceManager.kt
+56
-76
PrintManagerUtils.kt
...ain/java/zs/qimai/com/printer2/utils/PrintManagerUtils.kt
+2
-1
No files found.
KeyBoardView/build.gradle
View file @
b11bf355
...
@@ -37,7 +37,7 @@ repositories {
...
@@ -37,7 +37,7 @@ repositories {
}
}
group
'com.qmai.android.widget'
group
'com.qmai.android.widget'
version
'1.1.4
3
-SNAPSHOT'
version
'1.1.4
4
-SNAPSHOT'
gradlePublish
{
gradlePublish
{
...
...
KeyBoardView/src/main/java/com/qmai/android/keyboard/NumberKeyBoard.kt
View file @
b11bf355
...
@@ -77,7 +77,10 @@ class NumberKeyBoard : QmKeyboardView {
...
@@ -77,7 +77,10 @@ class NumberKeyBoard : QmKeyboardView {
}
}
override
fun
onKey
(
primaryCode
:
Int
,
keyCodes
:
IntArray
?)
{
override
fun
onKey
(
primaryCode
:
Int
,
keyCodes
:
IntArray
?)
{
//判断没有初始化
if
(!
::
editWidget
.
isInitialized
)
{
return
}
val
editable
=
editWidget
.
editableText
val
editable
=
editWidget
.
editableText
when
(
primaryCode
)
{
when
(
primaryCode
)
{
Code
.
CLEAR
.
code
->
{
Code
.
CLEAR
.
code
->
{
...
...
app/src/main/AndroidManifest.xml
View file @
b11bf355
...
@@ -4,6 +4,8 @@
...
@@ -4,6 +4,8 @@
<uses-permission
android:name=
"android.permission.BLUETOOTH"
/>
<uses-permission
android:name=
"android.permission.BLUETOOTH"
/>
<uses-permission
android:name=
"android.permission.READ_PHONE_STATE"
/>
<application
<application
android:name=
".App"
android:name=
".App"
android:allowBackup=
"true"
android:allowBackup=
"true"
...
...
app/src/main/java/com/qimai/android/widget/MainActivityPtinter.kt
View file @
b11bf355
...
@@ -43,6 +43,8 @@ class MainActivityPtinter : AppCompatActivity(), PrintConnOrDisCallBack {
...
@@ -43,6 +43,8 @@ class MainActivityPtinter : AppCompatActivity(), PrintConnOrDisCallBack {
setContentView
(
R
.
layout
.
activity_main_printer
)
setContentView
(
R
.
layout
.
activity_main_printer
)
DeviceManagerUtils
.
getInstance
().
addConnectStatusCallBack
(
this
)
DeviceManagerUtils
.
getInstance
().
addConnectStatusCallBack
(
this
)
initUsbPrinter
()
initUsbPrinter
()
val
value
=
Utils
.
getSN
()
Log
.
d
(
TAG
,
"onCreate: value= $value"
)
tv_connect_bt
.
setOnClickListener
{
tv_connect_bt
.
setOnClickListener
{
startActivity
(
Intent
(
this
,
BtListActivity
::
class
.
java
))
startActivity
(
Intent
(
this
,
BtListActivity
::
class
.
java
))
}
}
...
...
app/src/main/java/com/qimai/android/widget/Utils.java
0 → 100644
View file @
b11bf355
package
com
.
qimai
.
android
.
widget
;
import
android.os.Build
;
import
java.lang.reflect.Method
;
/**
* <pre>
* author : leiwang
* e-mail : xxx@xx
* time : 2021/08/12
* desc :
* version: 1.0
* </pre>
*/
public
class
Utils
{
/**
* 获取SN
* @return
*/
public
static
String
getSN
()
{
String
serial
=
""
;
//通过android.os获取sn号
try
{
serial
=
android
.
os
.
Build
.
SERIAL
;
if
(!
serial
.
equals
(
""
)
&&
!
serial
.
equals
(
"unknown"
))
{
return
serial
;
}
}
catch
(
Exception
e
)
{
serial
=
""
;
}
//通过反射获取sn号
try
{
Class
<?>
c
=
Class
.
forName
(
"android.os.SystemProperties"
);
Method
get
=
c
.
getMethod
(
"get"
,
String
.
class
);
serial
=
(
String
)
get
.
invoke
(
c
,
"ro.serialno"
);
if
(!
serial
.
equals
(
""
)
&&
!
serial
.
equals
(
"unknown"
))
return
serial
;
//9.0及以上无法获取到sn,此方法为补充,能够获取到多数高版本手机 sn
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
)
serial
=
Build
.
getSerial
();
}
catch
(
Exception
e
)
{
serial
=
""
;
}
return
serial
;
}
}
printer/build.gradle
View file @
b11bf355
...
@@ -51,7 +51,7 @@ repositories {
...
@@ -51,7 +51,7 @@ repositories {
}
}
group
'com.qmai.android.print'
group
'com.qmai.android.print'
version
'1.1.3
4
-SNAPSHOT'
version
'1.1.3
8
-SNAPSHOT'
gradlePublish
{
gradlePublish
{
...
...
printer/src/main/java/zs/qimai/com/printer2/manager/BlueDeviceManager.kt
View file @
b11bf355
...
@@ -34,6 +34,7 @@ class BlueDeviceManager(override var mType: Int = BT) : DeviceManager() {
...
@@ -34,6 +34,7 @@ class BlueDeviceManager(override var mType: Int = BT) : DeviceManager() {
private
var
disposable
:
Disposable
?
=
null
private
var
disposable
:
Disposable
?
=
null
private
val
uuid
=
UUID
.
fromString
(
"00001101-0000-1000-8000-00805F9B34FB"
)
//蓝牙打印UUID
private
val
uuid
=
UUID
.
fromString
(
"00001101-0000-1000-8000-00805F9B34FB"
)
//蓝牙打印UUID
private
var
job
:
Job
?
=
null
private
var
job
:
Job
?
=
null
@RequiresApi
(
Build
.
VERSION_CODES
.
KITKAT
)
@RequiresApi
(
Build
.
VERSION_CODES
.
KITKAT
)
override
fun
openPort
()
{
override
fun
openPort
()
{
mOnBtConnectCallBack
?.
onConnectStart
()
mOnBtConnectCallBack
?.
onConnectStart
()
...
@@ -57,10 +58,8 @@ class BlueDeviceManager(override var mType: Int = BT) : DeviceManager() {
...
@@ -57,10 +58,8 @@ class BlueDeviceManager(override var mType: Int = BT) : DeviceManager() {
mBlueToothDevice
?.
let
{
it
->
mBlueToothDevice
?.
let
{
it
->
//这里判断是否需要弹出密码输入弹窗
//这里判断是否需要弹出密码输入弹窗
var
isVerify
:
Boolean
=
it
.
createBond
()
var
isVerify
:
Boolean
=
it
.
createBond
()
//如果不需要就直接去连接
//如果不需要就直接去连接 同时是未配对状态
if
(!
isVerify
)
{
if
(
isVerify
&&
(
it
.
bondState
!=
BluetoothDevice
.
BOND_BONDED
))
{
connectBt
(
it
)
}
else
{
//获取顶部Activity
//获取顶部Activity
ActivityManagers
.
getInstance
().
getTopActivity
()
?.
let
{
activity
->
ActivityManagers
.
getInstance
().
getTopActivity
()
?.
let
{
activity
->
//去广播中等待状态
//去广播中等待状态
...
@@ -86,6 +85,8 @@ class BlueDeviceManager(override var mType: Int = BT) : DeviceManager() {
...
@@ -86,6 +85,8 @@ class BlueDeviceManager(override var mType: Int = BT) : DeviceManager() {
}
}
}
}
}
?:
mOnBtConnectCallBack
?.
onConnectError
(
ACTIVITY_NOT_FOUND
,
"获取不到Activity实例"
)
}
?:
mOnBtConnectCallBack
?.
onConnectError
(
ACTIVITY_NOT_FOUND
,
"获取不到Activity实例"
)
}
else
{
connectBt
(
it
)
}
}
//mOnBtConnectCallBack?.onConnectError(DEVICE_NOT_FIND, "根据地址获取不到设备")
//mOnBtConnectCallBack?.onConnectError(DEVICE_NOT_FIND, "根据地址获取不到设备")
}
}
...
@@ -144,88 +145,67 @@ class BlueDeviceManager(override var mType: Int = BT) : DeviceManager() {
...
@@ -144,88 +145,67 @@ class BlueDeviceManager(override var mType: Int = BT) : DeviceManager() {
* ***/
* ***/
private
fun
connectBt
(
it
:
BluetoothDevice
)
{
private
fun
connectBt
(
it
:
BluetoothDevice
)
{
GlobalScope
.
launch
(
Dispatchers
.
Main
)
{
GlobalScope
.
launch
(
Dispatchers
.
Main
)
{
mBluetoothSocket
=
getBtSocket
(
it
)
try
{
if
(
mBluetoothSocket
!=
null
)
{
withContext
(
Dispatchers
.
IO
)
{
try
{
mBluetoothSocket
=
it
.
createRfcommSocketToServiceRecord
(
uuid
)
withContext
(
Dispatchers
.
IO
)
{
}
mBluetoothSocket
!!
.
connect
()
if
(
mBluetoothSocket
!=
null
)
{
}
try
{
mOutPutStream
=
mBluetoothSocket
!!
.
outputStream
withContext
(
Dispatchers
.
IO
)
{
mInPutStream
=
mBluetoothSocket
!!
.
inputStream
if
(
mBluetoothSocket
!!
.
isConnected
)
{
//到这里说明配对并连接成功 判断打印机模式
mBluetoothSocket
!!
.
close
()
PrinterStatusUtils
(
this
@BlueDeviceManager
).
apply
{
}
mPrintStatusCallBack
=
object
:
PrintStatusCallBack
{
mBluetoothSocket
!!
.
connect
()
override
fun
searchResult
(
status
:
Int
?)
{
}
mPrintMode
=
status
?:
ESC
mOutPutStream
=
mBluetoothSocket
!!
.
outputStream
mStatus
=
true
mInPutStream
=
mBluetoothSocket
!!
.
inputStream
// name = it.productName
//到这里说明配对并连接成功 判断打印机模式
name
=
it
.
name
PrinterStatusUtils
(
this
@BlueDeviceManager
).
apply
{
/* if (name.isNullOrEmpty()) {
mPrintStatusCallBack
=
object
:
PrintStatusCallBack
{
name = if (mPrintMode == ESC) "小票打印机" else "杯贴打印机"
override
fun
searchResult
(
status
:
Int
?)
{
}*/
mPrintMode
=
status
?:
ESC
DeviceManagerUtils
.
getInstance
().
addDevice
(
this
@BlueDeviceManager
)
mStatus
=
true
mOnBtConnectCallBack
?.
onConnectSuccess
(
this
@BlueDeviceManager
)
// name = it.productName
//mUsbPrintConnCallBack?.onConnSucess(this@UsbDeviceManager)
name
=
it
.
name
/* if (name.isNullOrEmpty()) {
Log
.
d
(
TAG
,
"searchResult: status= $status"
)
name = if (mPrintMode == ESC) "小票打印机" else "杯贴打印机"
/* status?.let {
}*/
handleConnectSuccess(status)
DeviceManagerUtils
.
getInstance
()
} ?: handleUnknownStatus()*/
.
addDevice
(
this
@BlueDeviceManager
)
mOnBtConnectCallBack
?.
onConnectSuccess
(
this
@BlueDeviceManager
)
//mUsbPrintConnCallBack?.onConnSucess(this@UsbDeviceManager)
Log
.
d
(
TAG
,
"searchResult: status= $status"
)
/* status?.let {
handleConnectSuccess(status)
} ?: handleUnknownStatus()*/
}
}
}
queryStatus
()
}
}
queryStatus
()
}
catch
(
e
:
IOException
)
{
Log
.
d
(
TAG
,
"connectBt: e= $e"
)
mOnBtConnectCallBack
?.
onConnectError
(
PrintManagerUtils
.
SOCKET_ERROR
,
"socket连接异常"
)
closePort
()
mStatus
=
false
}
}
}
catch
(
e
:
IOException
)
{
}
else
{
Log
.
d
(
TAG
,
"connectBt: e= $e"
)
mOnBtConnectCallBack
?.
onConnectError
(
mOnBtConnectCallBack
?.
onConnectError
(
PrintManagerUtils
.
SOCKET_
ERROR
,
PrintManagerUtils
.
SOCKET_
NOT_FOUND
,
"
socket连接异常
"
"
获取不到socket
"
)
)
closePort
()
mStatus
=
false
}
}
}
else
{
}
catch
(
e
:
Exception
)
{
mOnBtConnectCallBack
?.
onConnectError
(
mOnBtConnectCallBack
?.
onConnectError
(
PrintManagerUtils
.
SOCKET_
NOT_FOUND
,
PrintManagerUtils
.
SOCKET_
ERROR
,
"
获取不到socket
"
"
${e.message}
"
)
)
}
}
}
}
/* mBluetoothSocket = it.createRfcommSocketToServiceRecord(uuid)
mBluetoothSocket?.let {
try {
//发起连接
it.connect()
try {
mOutPutStream = it.outputStream
mInPutStream = it.inputStream
} catch (e: IOException) {
mOnBtConnectCallBack?.onConnectError(PrintManagerUtils.IO_ERROR, "获取流失败")
closePort()
mStatus = false
}
} catch (e: IOException) {
mOnBtConnectCallBack?.onConnectError(PrintManagerUtils.SOCKET_ERROR, "socket连接异常")
closePort()
mStatus = false
}
//到这里说明配对并连接成功 判断打印机模式
PrinterStatusUtils(this).apply {
mPrintStatusCallBack = object : PrintStatusCallBack {
override fun searchResult(status: Int?) {
Log.d(TAG, "searchResult: status= $status")
status?.let {
handleConnectSuccess(status)
} ?: handleUnknownStatus()
}
}
queryStatus()
}
} ?: mOnBtConnectCallBack?.onConnectError(PrintManagerUtils.SOCKET_NOT_FOUND, "获取不到socket")*/
}
}
...
...
printer/src/main/java/zs/qimai/com/printer2/utils/PrintManagerUtils.kt
View file @
b11bf355
...
@@ -263,9 +263,10 @@ class PrintManagerUtils {
...
@@ -263,9 +263,10 @@ class PrintManagerUtils {
fun
connectSunmiInnerBluePrint
(
onBtConnectCallBack
:
OnBtConnectCallBack
?
=
null
)
{
fun
connectSunmiInnerBluePrint
(
onBtConnectCallBack
:
OnBtConnectCallBack
?
=
null
)
{
val
brand
=
Build
.
BRAND
val
brand
=
Build
.
BRAND
val
model
=
Build
.
MODEL
val
model
=
Build
.
MODEL
Log
.
d
(
TAG
,
"connectSunmiInnerBluePrint: model= ${model}"
)
//商米品牌&&(T系列||D2s系列 D2mini))
//商米品牌&&(T系列||D2s系列 D2mini))
if
(
brand
==
"SUNMI"
&&
if
(
brand
==
"SUNMI"
&&
(
model
.
contains
(
"T2"
)
||
model
.
contains
(
"T1
"
)
||
model
.
contains
(
"D2s"
)
||
model
.
contains
(
(
model
.
contains
(
"T2"
)
||
model
.
contains
(
"t2"
)||
model
.
contains
(
"t1host
"
)
||
model
.
contains
(
"D2s"
)
||
model
.
contains
(
"D2mini"
"D2mini"
))
))
)
{
)
{
...
...
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