您的位置:首页 > 移动开发

RFID扫描APP--source1

2015-12-15 21:11 375 查看
上一篇blog贴出RFIDReader的效果图,这里贴出其重点部分代码,以供学习。

1. ConnectActivity

/**
* Created by boyangel on 2015/12/11.
* @author icecreamco
*/
public class ConnectActivity extends AppCompatActivity{

/*
* 实例域
*/
private static final String TAG = "ConnectActivity";        // log TAG

private ProgressBar mProgressBar;                           // 连接时显示
private TextView mConnectModuText;                          // 连接时显示的文字
private LinearLayout mLinearLayout;                         // Button所在layout,控制是否显示按钮
private Button mReconnectButton;                            // 重连按钮
private Button mExitButton;                                 // 退出按钮
private static UhfReader mReader;                           // UHF对象

private Handler mHandler;                                   // UI线程的消息处理handler
private Timer mTimer;                                       // 定时,其实是为了显示一下ProgressBar

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_connect);

//初始化Setting参数,第一次启动有效
initiaParameters();

//设置ActionBar
Toolbar toolbar = (Toolbar) findViewById(R.id.connect_toolbar);
setSupportActionBar(toolbar);

//自动连接
mProgressBar = (ProgressBar)findViewById(R.id.progress_bar);
mConnectModuText = (TextView)findViewById(R.id.connect_modu_text);

//初始化失败处理
mLinearLayout = (LinearLayout)findViewById(R.id.connect_liearlayout);
mReconnectButton = (Button)findViewById(R.id.reconnect_button);
mReconnectButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mLinearLayout.setVisibility(View.GONE);
mProgressBar.setVisibility(View.VISIBLE);
mConnectModuText.setText(R.string.connect_modula);
//定时发送
timerConnect();
}
});
mExitButton = (Button)findViewById(R.id.exit_button);
mExitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});

//消息处理
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// 连接扫描模块,成功则进入mainactivity,否则显示重连界面
if(msg.what == 0) {
if (initiaModu()) {
Intent intent = new Intent(ConnectActivity.this, MainActivity.class);
startActivity(intent);
// 销毁此activity
finish();
} else {
mProgressBar.setVisibility(View.INVISIBLE);
mConnectModuText.setText(R.string.connect_failed);
mLinearLayout.setVisibility(View.VISIBLE);
}
}
}
};

//定时
mTimer = new Timer();
timerConnect();
}

/*
* 模块初始化
*/
private boolean initiaModu() {
mReader = UhfReader.getInstance();
if(mReader == null) {
return false;
}

//休眠一下,估计是硬件初始化的需求
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Log.e(TAG, "Thread sleep error");
mReader = null;
return false;
}

//获取模块功率参数
int power = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext())
.getInt(SettingActivity.POWER, 26);
Log.i(TAG, "Get the power " + power);
mReader.setOutputPower(power);

//连接
byte[] versionBytes = mReader.getFirmware();
if(versionBytes == null) {
mReader = null;
return false;
}
String version = new String(versionBytes);
Log.i(TAG, "version : " + version);
return true;
}

/*
* 返回Reader
*/
public static UhfReader getReader() {
return mReader;
}

/*
* 定时重连,延时300ms
*/
private void timerConnect() {
mTimer.schedule(new TimerTask() {

4000
@Override
public void run() {
//初始化模块信息发送
Message msg = mHandler.obtainMessage();
msg.what = 0;
mHandler.sendMessage(msg);
}
}, 300);
}

/*
* 初始化Setting参数,只在第一次启动此app时生效
*/
private void initiaParameters() {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
// FIRST为第一次启动的标志,若是第一次则为空,否则为first
if (sp.getString(SettingActivity.FIRST,"").equals("")) {
sp.edit()
.putInt(SettingActivity.POWER, SettingActivity.MAXPOWER)
.putString(SettingActivity.URL, SettingActivity.DEFAULT_URL)
.putString(SettingActivity.VEHICLE_ID, SettingActivity.DEFAULT_VEHICLE_ID)
.putString(SettingActivity.VEHICLE_TYPE, SettingActivity.TYPE_CAR)
.putString(SettingActivity.ACTION, SettingActivity.ACTION_LOAD)
.putString(SettingActivity.FIRST, SettingActivity.FIRST)
.commit();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android RFID connect