Android 开发之实现公交卡扣费功能
Posted 心宽何处不桃源
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 开发之实现公交卡扣费功能相关的知识,希望对你有一定的参考价值。
对公交卡实现扣费功能主要分以下几个部分:
1.读取公交卡的余额
2.扣费
3.重获Tac
4.获取PSAMID
5.获取相应的参数
首先我们先看下实现这些功能的案例布局
<span style="font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.cpucard.library.MainActivity" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/ReadBalance"
android:layout_width="fill_parent"
android:layout_height="60sp"
android:layout_weight="1"
android:text="读余额"/>
<Button
android:id="@+id/MinusFee"
android:layout_width="fill_parent"
android:layout_height="60sp"
android:layout_weight="1"
android:text="扣费"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/RegetTac"
android:layout_width="fill_parent"
android:layout_height="60sp"
android:layout_weight="1"
android:text="重获tac"/>
<Button
android:id="@+id/ReadPSAMID"
android:layout_width="fill_parent"
android:layout_height="60sp"
android:layout_weight="1"
android:text="获取PSAMID"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/GetParameter"
android:layout_width="fill_parent"
android:layout_height="60sp"
android:layout_weight="1"
android:text="获取参数"/>
</LinearLayout>
</LinearLayout>
</span>
首先 我们要初始化卡对象
//创建对象
private c cardManager;
private String cpuCardBalance = "", serialNum = "";
cardManager = new c();
然后,我们要设置扣钱方式
cardManager.a(1, 3, true);
功能部分
获取卡的参数
<span style="font-size:18px;"> // 获取卡的参数
private String getAllParams()
// TODO Auto-generated method stub
// 获取城市代码
long cardCityCode = cardManager.h();
// 获取行业代码
long cardBusinessCode = cardManager.i();
// 获取卡号
long cardPhysicsNumber = cardManager.j();
// 获取卡版本
long cardVer = cardManager.k();
// 获取卡类型
long cardType = cardManager.l();
// 获取卡启用日期
long cardStartDate = cardManager.m();
// 卡交易次数
long cardTradeCount = cardManager.n();
// 终端机流水
String termSeq = cardManager.o();
// CPU卡内号
String cpuCardNo = cardManager.q();
// 卡表面号
Long cardSurfaceNumber = cardManager.a(String.valueOf(Long
.toHexString(cardPhysicsNumber)));
return ("cardCityCode=" + cardCityCode + ",cardBusinessCode="
+ cardBusinessCode + ",cardPhysicsNumber=" + cardPhysicsNumber
+ ",cardVer=" + cardVer + ",cardType=" + cardType
+ ",cardStartDate=" + cardStartDate + ",cardTradeCount="
+ cardTradeCount + ",termSeq=" + termSeq + ",cpuCardNo="
+ cpuCardNo + ",cardSurfaceNumber=" + cardSurfaceNumber);
</span>
获取PSAMID
<span style="font-size:18px;"> // 获取PSAMID
private String getPsamid()
// TODO Auto-generated method stub
return cardManager.f();
</span>
扣钱的实现方法
<span style="font-size:18px;"> private String getAccount(int realChargeValue,String balance)
// TODO Auto-generated method stub
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat timeFormat = new SimpleDateFormat("HHmmss");
return cardManager.a(realChargeValue,sdf.format(date), timeFormat.format(date), balance, "E00A0601");
</span>
重获Tac的实现方法
<span style="font-size:18px;">private String getReTac()
// TODO Auto-generated method stub
return cardManager.e();
</span>
获取余额实现方法
<span style="font-size:18px;"> private String getBalance()
// TODO Auto-generated method stub
return cardManager.d();
</span>
最后,我们增加个人性化的功能,提示扣钱成功!就像我们乘公交车一样。滴~~学生卡。
<span style="font-size:18px;">
//扣费成功 响铃
void playSound()
// TODO Auto-generated method stub
MediaPlayer mMediaPlayer = MediaPlayer.create(this, R.raw.di);
SoundPool soundPool= new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
// this.playSound(2, 0);
mMediaPlayer.setLooping(false);
if (!mMediaPlayer.isPlaying())
mMediaPlayer.start();
</span>
附件:
滴的声音
http://pan.baidu.com/s/1hrSxii4
以上是关于Android 开发之实现公交卡扣费功能的主要内容,如果未能解决你的问题,请参考以下文章