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








评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值