Android 开发之实现公交卡扣费功能

来源:互联网 发布:plc编程标准 编辑:程序博客网 时间:2024/05/17 02:02

对公交卡实现扣费功能主要分以下几个部分:

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;">// 获取PSAMIDprivate String getPsamid() {// TODO Auto-generated method stubreturn cardManager.f();}</span>

扣钱的实现方法
<span style="font-size:18px;">private String getAccount(int realChargeValue,String balance) {// TODO Auto-generated method stubDate 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 stubreturn cardManager.e();}</span>

获取余额实现方法

<span style="font-size:18px;">private String getBalance() {// TODO Auto-generated method stubreturn cardManager.d();}</span>

最后,我们增加个人性化的功能,提示扣钱成功!就像我们乘公交车一样。滴~~学生卡

<span style="font-size:18px;">//扣费成功    响铃 void playSound() {// TODO Auto-generated method stub MediaPlayermMediaPlayer = 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








0 0