SunARS.java
12.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
package cn.sunars.sdk;
import java.lang.reflect.Field;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.HashMap;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
/**
*
* @author houj
* @ID
* @time 2015年11月12日 11:27:30
*/
public class SunARS extends Service{
public final static int BaseStation_RFPower = 1; // 基站功率
public final static int BaseStation_Channel = 2; // ; 基站主信道
public final static int BaseStation_CommunicationChannels = 3; // 通讯通道:是否中继,通道数,通道1,通道2,通道3,通道4
public final static int BaseStation_IP = 4; // IP
public final static int BaseStation_MAC = 5; // mac地址
public final static int BaseStation_SubnetMask = 6; // 子网掩码
public final static int BaseStation_Gateway = 7; // 网关
public final static int BaseStation_Title = 8; // 基站名称
public final static int BaseStation_ID = 9; // 基站编号
public final static int BaseStation_SN = 10; // 硬件序列号( 只读)
public final static int BaseStation_Version = 11; // 硬件版本
//public final static int BaseStation_PairCode = 12; // 配对码
public final static int BaseStation_MatchCode = 12; // 配对码
public final static int SoftwareDongle_VerifyPWD = 13; // 验证密码
public final static int SoftwareDongle_A_PWD = 14;// 软件狗密码
public final static int SoftwareDongle_A_Zone = 15;// 软件狗读写A区
public final static int SoftwareDongle_B_Zone = 16;
public final static int KeyPad_Config = 17; // 键盘设置
//public final static int KeyPad_ConnectionMode = 18; // 键盘连接模式(固定配对、自由配对、免配对)
public final static int KeyPad_WorkingMode = 18;// 键盘连接模式(固定配对、自由配对、免配对)
public final static int KeyPad_IdentificationMode = 19; // 键盘识别模式(是否SN号模式)
public final static int KeyPad_ID = 20; // 键盘编号
public final static int KeyPad_UserID = 21;// 用户编号
public final static int KeyPad_SN = 22;// 键盘出厂序列号
public final static int KeyPad_Version = 23;// 键盘版本信息
public final static int KeyPad_MatchCode = 24;// 配对码//KeyPad_PairCode
public final static int WiFi_SSID = 25;// 组合 baseMode;ssid
public final static int WiFi_WorkMode =26;
public final static int WiFi_Password = 27;
public final static int Background_SignIn = 28;
public final static int Keypad_AuthorizeByID = 29;
public final static int Keypad_AuthorizeBySN = 30;
public final static int BaseStation_ChannelInterference = 31;
public final static int BaseStation_AutoChangeChannel = 32;
public final static int BaseStation_Model = 33;
public final static int KeyPad_Model = 34;
public final static int KeyPad_UserName = 35; //用户姓名
//VoteMode
public final static int VoteType_Free = 0; // 空闲模式(停止)
public final static int VoteType_Signin = 1; // 签到
public final static int VoteType_Vote = 2; // 表决
public final static int VoteType_Number = 4;// 数值 (单项评分模式)
public final static int VoteType_TrueFalse = 5; // 5 判断
public final static int VoteType_KeyPadTest = 9;// 模拟测试
public final static int VoteType_Choice = 10;// 选择
public final static int VoteType_Sequence = 11; // 排序
public final static int VoteType_FillBlanks = 12; // 填空
public final static int VoteType_Quiz = 13; // 抢答
public final static int VoteType_Examination = 14;//测验
public final static int VoteType_Homework = 15;//作业
//public final static int VoteType_KeyPadPair = 40; // 配对
public final static int VoteType_KeyPadMatch = 40; // 配对
public final static int VoteType_Continue = 100;
public final static int VoteType_SubmitAndContinue = 101;
public final static int KeyPad_PowerOff = 222;
// 键盘状态
public final static int KeyResult_info = 1; //结果
public final static int KeyResult_status = 2; //状态
public final static int KeyResult_loginInfo = 3; //配对(登录)信息
public final static int KeyResult_remoteControlAnswer = 4; //表决器遥控指令应答
public final static int KeyResult_extendInfo = 5;
public final static int KeyResult_match = 5;
static {
//System.out.println("java platform:"+ System.getProperty("sun.arch.data.model")+ "bit");
//if(System.getProperty("sun.arch.data.model").equals("32")){
System.loadLibrary("stlport_shared");
System.loadLibrary("SunVoteSDK");
//System.loadLibrary("SunVoteSDK_x64");
//}else{
// System.loadLibrary("SunVoteSDK_x64");
//}
init();
}
private final static Charset UTF8 = Charset.forName("UTF8");
private final static Charset GBK = Charset.forName("GBK");
private final static byte[] stringToBytes(String s) {
byte[] bs = s.getBytes(GBK);
return Arrays.copyOf(bs, bs.length + 1);
}
private final static String bytesToString(byte[] bs) {
return new String(bs, GBK);
}
public interface SunARSListener {
public void onConnectEventCallBack(int iBaseID, int iMode, String sInfo);
public void onHDParamCallBack(int iBaseID, int iMode, String sInfo);
public void onVoteEventCallBack(int iBaseID, int iMode, String sInfo);
public void onKeyEventCallBack(String KeyID, int iMode, float Time, String sInfo);
public void onStaEventCallBack(String sInfo);
public void onLogEventCallBack(String sInfo);
public void onDataTxEventCallBack(byte[] sendData, int dataLen);
}
public static boolean isConnected;
public static boolean isSnMode;
private static String r_onHDParamCallBack;
private static void onConnectEventCallBack(int iBaseID, int iMode, byte[] sInfo) {
if (al != null) {
al.onConnectEventCallBack(iBaseID, iMode, bytesToString(sInfo));
}
}
private static void onHDParamCallBack(int iBaseID, int iMode, byte[] sInfo) {
r_onHDParamCallBack = bytesToString(sInfo);
if (al != null) {
al.onHDParamCallBack(iBaseID, iMode, r_onHDParamCallBack);
}
}
private static void onVoteEventCallBack(int iBaseID, int iMode, byte[] sInfo) {
r_onHDParamCallBack = bytesToString(sInfo);
if (al != null) {
al.onVoteEventCallBack(iBaseID, iMode, r_onHDParamCallBack);
}
}
private static void onStaEventCallBack(byte[] sInfo){
if (al != null) {
al.onStaEventCallBack(bytesToString(sInfo));
}
}
private static void onKeyEventCallBack(byte[] KeyID, int iMode, float Time, byte[] sInfo) {
if (al != null) {
al.onKeyEventCallBack(bytesToString(KeyID), iMode, (float) Time, bytesToString(sInfo));
}
}
private static void onLogEventCallBack(byte[] sInfo){
if(al != null){
al.onLogEventCallBack(bytesToString(sInfo));
}
}
private static void onDataTxEventCallBack(byte[] sendData, int dataLen) {
if (al != null) {
al.onDataTxEventCallBack(sendData,dataLen);
}
}
public static int connect(int mode, String params) {
return connect0(mode, stringToBytes(params));
}
public static int disconnect(int baseID) {
return disconnect0(baseID);
}
public static int checkBaseConnection(){
return checkBaseConnection0();
}
public static String writeHDParam(int BaseID, int iMode, String sSetting) {
r_onHDParamCallBack = null;
writeHDParam0(BaseID, iMode, stringToBytes(sSetting));
return r_onHDParamCallBack;
}
// int ReadHDParam(int BaseID,int iMode);
public static String readHDParam(int BaseID, int iMode) {
r_onHDParamCallBack = null;
readHDParam0(BaseID, iMode);
return r_onHDParamCallBack;
}
public static String voteStart(int iMode, String sSetting) {
r_onHDParamCallBack = null;
if (sSetting != null) {
voteStart0(iMode, stringToBytes(sSetting));
} else {
voteStart0(iMode, stringToBytes(""));
}
return r_onHDParamCallBack;
}
public static int voteStop() {
return voteStop0();
}
public static int voteStopByMsg(String msg) {
return voteStopByMsg0(stringToBytes(msg));
}
public static int getResultByID(int keyId,int resultType) {
return getResultByID0(keyId,resultType);
}
public static int getMultiResultByID(String keyIDs,int resultType,int resultId){
return getMultiResultByID0(stringToBytes(keyIDs), resultType, resultId);
}
public static int getResultBySN(String keySn ,int resultType,int resultId){
return getResultBySN0(stringToBytes(keySn),resultType,resultId);
}
public static int exitGetResult() {
return exitGetResult0();
}
public static int getStaIP() {
return getStaIP0();
}
public static int setDemoMode(int isEnable,String keyIDs){
return setDemoMode0(isEnable,stringToBytes(keyIDs));
}
public static int DataRx(byte[] recvData,int dataLen){
return DataRx0(recvData,dataLen);
}
public static int license(int Mode, String sInfo) {
return license0(Mode, stringToBytes(sInfo));
}
private static SunARSListener al;
public static void setListener(SunARSListener al) {
SunARS.al = al;
}
public static int setLogOn(int isEnable){
return setLogOn0(isEnable);
}
public static int setArchiveDir(String path){
return setArchiveDir0(stringToBytes(path));
}
// =原生方法开始=========================
private static native int connect0(int mode, byte[] params);
private static native int disconnect0(int baseID);
private static native int checkBaseConnection0();
private static native int writeHDParam0(int BaseID, int iMode, byte[] sSetting);
private static native int readHDParam0(int BaseID, int iMode);
private static native int voteStart0(int iMode, byte[] sSetting);
private static native int voteStop0();
private static native int voteStopByMsg0(byte[] msg);
private static native int getResultByID0(int keyId ,int resultType);
private static native int getResultBySN0(byte[] keySn,int resultType,int resultId);
private static native int getMultiResultByID0(byte[] keyIDs,int resultType,int resultId);
private static native int exitGetResult0();
private static native int getStaIP0();
private static native int setDemoMode0(int isEnable,byte[] keyIDs);
private static native int DataRx0(byte[] recvData,int dataLen);
private static native int setArchiveDir0(byte[] path);
private static native int setLogOn0(int isEnable);
private static native int license0(int Mode, byte[] sInfo);
private static native int init();
private IBinder myBinder = new Binder(){
@Override
public String getInterfaceDescriptor(){
return "SunARS class";
}
};
@Override
public IBinder onBind(Intent intent) {
System.out.println("service onBind");
return myBinder;
}
@Override
public void onCreate() {
System.out.println("service onCreate");
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
System.out.println("service onStartCommand intent:"+intent);
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
System.out.println("service onDestroy");
super.onDestroy();
}
private static HashMap<Integer, String> modeNameMap;
public static String getModeName(int i) {
if (modeNameMap == null) {
modeNameMap = new HashMap<Integer, String>();
Class c = SunARS.class;
for (Field f : c.getFields()) {
if (f.getType() == Integer.TYPE) {
String name = f.getName();
if (name.startsWith("BaseStation_") || name.startsWith("SoftwareDongle_") || name.startsWith("KeyPad_") ||name.startsWith("Keypad_")|| name.startsWith("WiFi_")|| name.startsWith("Background")) {
try {
int v = f.getInt(null);
modeNameMap.put(v, name);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
return modeNameMap.get(i);
}
public static String getVoteModeName(int i) {
switch (i) {
case 0:
return "VoteType_Free";
case 1:
return "VoteType_Signin";
case 2:
return "VoteType_Vote";
case 4:
return "VoteType_Number";
case 5:
return "VoteType_TrueFalse";
case 9:
return "VoteType_KeyPadTest";
case 10:
return "VoteType_Choice";
case 11:
return "VoteType_Sequence";
case 12:
return "VoteType_FillBlanks";
case 13:
return "VoteType_Quiz";
case 14:
return "VoteType_Examnation";
case 15:
return "VoteType_Homework";
case 40:
return "VoteType_KeyPadMatch";
case 100:
return "VoteType_continue";
case 101:
return "VoteType_submitAndContinue";
}
return "VoteType_End";
}
public static String getKeyEventTypeName(int i) {
switch (i) {
case 1:
return "KeyResult_info";
case 2:
return "KeyResult_status";
case 3:
return "KeyResult_loginInfo";
case 4:
return "KeyResult_remoteControl";
case 5:
return "KeyResult_match";
default:
break;
}
return "" + i;
}
public static String getConnectTypeName(int i){
switch(i){
case 1:
return "Connect_type_usb";
case 2:
return "Connect_type_tcp/ip";
case 3:
return "Connect_type_ble";
default:
break;
}
return ""+i;
}
}