基本信息
源码名称:OpenMobileApi demo
源码大小:10.58M
文件格式:.zip
开发语言:Java
更新时间:2021-01-12
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
获取reader、打开会话、打开通道 demo(需要SE硬件支持)

package com.gwb.oma;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.os.Handler;
import android.os.Message;
import android.se.omapi.Channel;
import android.se.omapi.Reader;
import android.se.omapi.SEService;
import android.se.omapi.Session;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.IOException;
import java.util.ArrayList;
import java.util.concurrent.Executor;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private final String TAG = MainActivity.class.getSimpleName();
    private Handler mHandler;
    private ArrayList<Session> mSessionList = null;
    private ArrayList<Channel> mChannelList = null;

    private final int MSG_SHOW_READERS = 0x01;
    private final int MSG_OPEN_SESSION = 0x02;
    private final int MSG_OPEN_CHANNEL = 0x03;

    private boolean mIsConnected = false;
    private SEService mSeService;
    Reader[] mReaders;
    @BindView(value = R.id.tv)
    TextView mTv;
    @BindView(value = R.id.btn_get_reader)
    Button mBtnGetReaders;
    @BindView(value = R.id.btn_close_sessions)
    Button mBtnCloseSessions;
    @BindView(value = R.id.btn_open_session)
    Button mBtnOpenSession;
    @BindView(value = R.id.btn_open_channel)
    Button mBtnOpenChannel;

    private void setAllBtn(boolean enable) {
        mBtnGetReaders.setEnabled(enable);
        mBtnCloseSessions.setEnabled(enable);
        mBtnOpenSession.setEnabled(enable);
        mBtnOpenChannel.setEnabled(enable);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        mSessionList = new ArrayList<>();
        mChannelList = new ArrayList<>();
        mHandler = new Handler(new Handler.Callback() {
            @Override
            public boolean handleMessage(@NonNull Message message) {
                String str = "";
                switch (message.what) {
                    case MSG_SHOW_READERS:
                        for (Reader reader : mReaders) {
                            str  = reader.getName()   ":"   reader.toString()   "\r\n";
                        }
                        Log.d(TAG, str);
                        mTv.setText(str);
                        break;
                    case MSG_OPEN_SESSION:
                        for (Reader reader : mReaders) {
                            try {
                                Session session = reader.openSession();
                                mSessionList.add(session);
                                str  = reader.getName()   " openSession Success\r\n";
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                            mTv.setText(str);
                        }
                        break;
                    case MSG_OPEN_CHANNEL:
                        for (Session session : mSessionList) {
                            for (int i = 0; i < 2; i  ) {
                                try {
                                    Channel channel = null;
                                    if (i == 0) {
                                        channel = session.openBasicChannel(null);
                                        if (channel != null) {
                                            str  = session.toString()   " openBasicChannel(null) Success\r\n";
                                            mChannelList.add(channel);
                                            byte[] response = channel.getSelectResponse();
                                            str  = "response: "   response.toString();
                                        }
                                    } else if (i == 1) {
                                        channel = session.openLogicalChannel(null);
                                        if (channel != null) {
                                            str  = session.toString()   " openLogicalChannel(null) Success\r\n";
                                            mChannelList.add(channel);
                                            byte[] response = channel.getSelectResponse();
                                            str  = "response: "   response.toString();
                                        }
                                    }

                                } catch (IOException | SecurityException e) {
                                    e.printStackTrace();
                                }
                            }
                        }
                        mTv.setText(str);
                        break;
                    default:
                        break;
                }

                return false;
            }
        });

        mIsConnected = false;
        SeConnectedListener mListener = new SeConnectedListener();
        mSeService = new SEService(this, new Executor() {
            @Override
            public void execute(Runnable runnable) {
                runnable.run();
            }
        }, mListener);
        setAllBtn(false);
    }

    @Override
    @OnClick({R.id.btn_get_reader, R.id.btn_close_sessions, R.id.btn_open_session, R.id.btn_open_channel})
    public void onClick(View view) {
        if (!mIsConnected) {
            return;
        }
        Message msg = Message.obtain();
        switch (view.getId()) {
            case R.id.btn_get_reader:
                mReaders = mSeService.getReaders();
                Log.d(TAG, "readers:"   mReaders.toString());
                msg.what = MSG_SHOW_READERS;
                mHandler.sendMessage(msg);
                break;
            case R.id.btn_close_sessions:
                for (Reader reader : mReaders) {
                    reader.closeSessions();
                }
                break;
            case R.id.btn_open_session:
                msg.what = MSG_OPEN_SESSION;
                mHandler.sendMessage(msg);
                break;
            case R.id.btn_open_channel:
                msg.what = MSG_OPEN_CHANNEL;
                mHandler.sendMessage(msg);
                break;
            default:
                return;
        }
    }

    private class SeConnectedListener implements SEService.OnConnectedListener {

        @Override
        public void onConnected() {
            Log.d(TAG, "SeConnectedListener:onConnected");
            mIsConnected = true;
            setAllBtn(true);
        }
    }
}