@@ -0,0 +1,88 @@ | |||
package com.huntersun.vkyes.etcopencard.project.bluetooth; | |||
import android.annotation.SuppressLint; | |||
import android.text.TextUtils; | |||
import com.huntersun.vkyes.etcopencard.project.api.bean.ResultBean; | |||
import io.reactivex.Observable; | |||
import io.reactivex.ObservableOnSubscribe; | |||
import io.reactivex.android.schedulers.AndroidSchedulers; | |||
import io.reactivex.schedulers.Schedulers; | |||
/** | |||
* 蓝牙写卡写签 | |||
* 注意调用该内容方法时,要在链接玩蓝牙设备后调用 | |||
* @author admin | |||
*/ | |||
public class BluetoothWriteCardWriteTab { | |||
/** | |||
* 写卡 | |||
* | |||
* @param commands 指令内容 | |||
* @return 执行指令返回结果 9000 为成功 | |||
*/ | |||
public static String writeCard(String commands) { | |||
String[] commands_arry = commands.split(","); //命令排列 | |||
String[] results = new String[commands_arry.length]; //结果 | |||
int len = results.length; | |||
int split = 0; | |||
for (int i = 0; i < len; i++) { | |||
//透传写卡指令 | |||
ServiceStatus resp_string = MethodManager.sendApduICC(commands_arry[i]); | |||
results[i] = resp_string.getServiceInfo(); | |||
} | |||
//分隔字符流文件 | |||
StringBuilder buffer = new StringBuilder(); | |||
for (int i = 0; i < len; i++) { | |||
buffer.append(results[i]); | |||
if (i != len - 1) { | |||
buffer.append(","); | |||
} | |||
} | |||
return buffer.toString(); | |||
} | |||
/** | |||
* 透传指令 | |||
* | |||
* @param apdu 指令内容 | |||
* @param | |||
*/ | |||
@SuppressLint("CheckResult") | |||
private void sendApduEsam(String apdu, Callback callback) { | |||
Observable.create((ObservableOnSubscribe<ServiceStatus>) emitter -> { | |||
if (!TextUtils.isEmpty(apdu)) { | |||
emitter.onNext(MethodManager.sendApduEsam(apdu)); | |||
emitter.onComplete(); | |||
} else { | |||
//APDU为空 | |||
callback.fail("APDU返回为空"); | |||
} | |||
}).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe(ss -> { | |||
if (0 == ss.getServiceCode() && checkApdu(ss)) { | |||
callback.success(); | |||
} else { | |||
callback.fail("指令执行错误:" + ss); | |||
} | |||
}); | |||
} | |||
//判断指令执行结果 | |||
public boolean checkApdu(ServiceStatus resp_string) { | |||
if (null != resp_string) { | |||
if (resp_string.getServiceInfo().length() >= 4) { | |||
return "9000".equals(resp_string.getServiceInfo().substring(resp_string.getServiceInfo().length() - 4)); | |||
} | |||
} | |||
return false; | |||
} | |||
interface Callback { | |||
void success(); | |||
void fail(String str); | |||
} | |||
} |
@@ -43,7 +43,7 @@ import java.util.List; | |||
public class FragmentHomeTow extends TitleBarFragment<MainActivity> { | |||
private FragmentHomeFiveBinding binding; | |||
private final Object[][] menu = { | |||
{R.mipmap.card1, "卡签查询"}, | |||
{R.mipmap.card1, "卡签信息查询"}, | |||
{R.mipmap.card2, "发货管理"}, | |||
{R.mipmap.card3, "充值圈存"}, | |||
{R.mipmap.card4, "卡签注销"}, | |||
@@ -51,7 +51,7 @@ public class FragmentHomeTow extends TitleBarFragment<MainActivity> { | |||
{R.mipmap.card6, "卡签挂起"}, | |||
{R.mipmap.card7, "满意度评价"}, | |||
{R.mipmap.card8, "设备激活"}, | |||
{R.mipmap.card9, "储值卡测"}, | |||
{R.mipmap.card9, "储值卡转记账卡"}, | |||
{R.mipmap.card4, "设备注销"}, | |||
{R.mipmap.card5, "设备挂失"}, | |||
{R.mipmap.card6, "设备挂起"}, | |||
@@ -68,8 +68,10 @@ public class FragmentHomeTow extends TitleBarFragment<MainActivity> { | |||
{R.mipmap.card18, "发票管理"}, | |||
{R.mipmap.card19, "解除车牌占用"}, | |||
{R.mipmap.card20, "圈存退费"}, | |||
{R.mipmap.card2, "补卡额"}, | |||
{R.mipmap.card2, "补卡额申请"}, | |||
{R.mipmap.card3, "卡签版本查询"}, | |||
{R.mipmap.card5, "通行流水查询"}, | |||
{R.mipmap.card6, "公务车发行"}, | |||
}; | |||
public static AppFragment<MainActivity> newInstance() { | |||
@@ -169,7 +171,7 @@ public class FragmentHomeTow extends TitleBarFragment<MainActivity> { | |||
case "设备激活": | |||
startActivity(ObuActivationHintActivity.class); | |||
break; | |||
case "储值卡测": | |||
case "储值卡转记账卡": | |||
startActivity(ValueToBookkeepingCardActivity.class); | |||
break; | |||
case "更换卡签": |