完成的设备扫描项目的几个关键程序,包括activity之间的转换
module 的 gradle.build
最后三行的compile 是关键
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:design:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
implementation 'com.android.support:support-vector-drawable:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' compile 'com.journeyapps:zxing-android-embedded:2.3.0@aar'
compile 'com.journeyapps:zxing-android-legacy:2.3.0@aar'
compile 'com.journeyapps:zxing-android-integration:2.3.0@aar' } /******************************************/
inputActivity.java
package com.strongdady.devicescan;
import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.database.Cursor;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import static android.os.Environment.getExternalStorageDirectory;
public class inputActivity extends Activity {
public static String str=null;
protected void onCreate(Bundle savedInstanceState) {
final Button buttonExit,buttonCheck;
final EditText editText0;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input);
editText0 = (EditText) findViewById(R.id.sample_edit_text0);
buttonCheck = (Button) findViewById(R.id.sample_buttonCheck);
buttonExit= (Button) findViewById(R.id.sample_buttonExit);
buttonCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i=new Intent();
i.putExtra("device_no", editText0.getText().toString());
setResult(4,i);
finish();
}
});
buttonExit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i=new Intent();
i.putExtra("device_no", editText0.getText().toString());
setResult(0,i);
finish();
}
});
}
}
/*************MainActivity.java*************/
package com.strongdady.devicescan; import android.os.Process;
import java.util.Arrays;
import java.util.List;
import java.io.File;
import java.io.InputStream;
import java.io.FileOutputStream;
import android.database.sqlite.SQLiteDatabase;
import android.database.Cursor;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult; import android.os.Environment;
import android.widget.Toast;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.TextView;
import static android.os.Environment.getExternalStorageDirectory; public class MainActivity extends AppCompatActivity { private final int BUFFER_SIZE = 400000;
public static final String DB_NAME = "device.db"; // 保存的数据库文件名称
public static final String PACKAGE_NAME = "com.strongdady.qrscan";// 应用的包名
//public static final String DB_PATH = "/data"droid.os.Environment.getDataDirectory().getAbsolutePath()+"/"
public static final String DB_PATH =getExternalStorageDirectory()+"/data"; String device_no,device_name, owner, register_date,device_nanm,sqlString;
SQLiteDatabase db=null;
Cursor cursor; private TextView mTextMessage; public void copyDBFile()
{ try {
File myDataPath = new File(DB_PATH+"/device_db"); if (!myDataPath.exists())
{
myDataPath.mkdirs();// 假设没有这个文件夹,则创建
} String dbfile=myDataPath+"/"+DB_NAME;
if (!(new File(dbfile).exists())) {// 推断数据库文件是否存在,若不存在则运行导入,否则直接打开数据库
InputStream is =getResources().openRawResource(R.raw.device); // 欲导入的数据库
FileOutputStream fos = new FileOutputStream(dbfile);
byte[] buffer = new byte[BUFFER_SIZE];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
db = SQLiteDatabase.openOrCreateDatabase(dbfile,null); } catch (Exception e)
{
mTextMessage.append(e.toString());
}
} public Device findDeviceInfo(String qrCode)
{
String device_no=null,device_name=null,device_owner=null,device_registerDate=null;
Device device1;
//qrCode.trim()去掉前后空格
cursor = db.rawQuery("SELECT * FROM device where device_no = '"+qrCode.trim()+"'", null); while (cursor.moveToNext()) {
device_no = qrCode;
device_name = cursor.getString(cursor.getColumnIndex("owner"));
device_owner = cursor.getString(cursor.getColumnIndex("device_name"));
device_registerDate = cursor.getString(cursor.getColumnIndex("register_date"));
register_date=cursor.getString(cursor.getColumnIndex("register_date"));
}
if( device_name!=null){
device1 = new Device(); device1.Name = device_name;
device1.no = device_no;
device1.Owner = device_owner;
device1.RegisterDate = register_date; return device1;
}else{
return null;
} } private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() { @Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.navigation_home:
//mTextMessage.setText(R.string.title_home);
mTextMessage.setText(""); IntentIntegrator integrator=new IntentIntegrator(MainActivity.this); List<String> oDesiredFormats = Arrays.asList("PDF_417,UPC_A,UPC_E,EAN_13,EAN_8,RSS_14,RSS_EXPANDED,CODE_39,CODE_93,CODE_128,ITF,CODABAR,QR_CODE,DATA_MATRIX".split(",")); //integrator.setOrientation()
//integrator.setBeepEnabled(true);
//integrator.setOrientation(0);
//integrator.setPrompt("scaning ....."); integrator.initiateScan(oDesiredFormats); return true; case R.id.navigation_dashboard:
mTextMessage.setText(R.string.title_dashboard); startActivityForResult(new Intent(MainActivity.this,
inputActivity.class), 1); return true; case R.id.navigation_notifications: cursor.close();
db.close();
finish();
System.exit(0);
Process.killProcess(Process.myPid());
}
return false;
}
}; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mTextMessage = (TextView) findViewById(R.id.message);
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); copyDBFile(); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult scanResult=null; super.onActivityResult(requestCode, resultCode, data); String qrCode = null; try {
scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
}catch (Exception e){
mTextMessage.append("\nException occured during scaning :"+e+"\n");
} if (requestCode == 1 && resultCode == 0) {
return;
} if (requestCode == 1 && resultCode == 4) {
String s = data.getStringExtra("device_no");
qrCode = s; Device device1 = findDeviceInfo(qrCode);
if (device1 != null) {
mTextMessage.setText("\n 设备编号: " + device1.no + "\n 设备名称:" + device1.Name + "\n 责任人:" + device1.Owner + " " + "\n 登记日期:" + device1.RegisterDate);
} else {
mTextMessage.setText("\n 找不到编号为:" + qrCode + "的设备");
}
} else { qrCode=scanResult.getContents().toString(); if (scanResult != null) {
Device device1 = findDeviceInfo(qrCode);
if (device1 != null) {
mTextMessage.setText("\n 设备编号: " + device1.no + "\n 设备名称:" + device1.Name + "\n 责任人:" + device1.Owner + " " + "\n 登记日期:" + device1.RegisterDate);
} else {
mTextMessage.setText("\n !!!: 找不到编号为:" + qrCode + "的设备");
}
} else {
//super.onActivityResult(requestCode, resultCode, data);
//mTextMessage.setText(" 找不到编号为:"+qrCode+"的设备");
mTextMessage.setText("\n找不到编号为:" + qrCode + "的设备");
} }
}
} /*********************/
Device.java
package com.strongdady.devicescan;
public class Device {
public String no, Owner,Name,RegisterDate;
}
完成的设备扫描项目的几个关键程序,包括activity之间的转换的更多相关文章
- [原创]K8Cscan插件之Cisco思科设备扫描(IP、设备型号、主机名、Boot、硬件版本)
[原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...
- 【DSP开发】【VS开发】PCIE设备扫描过程
初步了解完PCI总线标准之后,我们接下来正式开始PCIe设备的漫游之旅.从我们按下PC的电源按钮开始,BIOS就接管系统控制权开始工作,它会先进行一些内存和设备的初始化工作(当然,也包括我们的PCI设 ...
- maven项目检出后报错(包括编译报错和运行报错)的常见检查处理方式
maven项目检出后报错(包括编译报错和运行报错)的常见检查处理方式: 1.更改项目的jdk为我们安装的jdk2.更改build配置里的 output folder 目录为 xxx项目名/target ...
- 将网站项目转为 Web form应用程序(转)
转自 http://blog.sina.com.cn/s/blog_53729e4601014ze9.html 本文介绍如何将现有的 Microsoft Visual Studio 2005 网站项目 ...
- WPF:“wpf类库项目改为Window应用程序项目”系列问题
一.wpf类库项目改为Window应用程序项目1.错误 CS5001 Program does not contain a static 'Main' method suitable for an e ...
- 如何更精准地设置 C# / .NET Core 项目的输出路径?(包括添加和删除各种前后缀)
原文:如何更精准地设置 C# / .NET Core 项目的输出路径?(包括添加和删除各种前后缀) 我们都知道可以通过在 Visual Studio 中设置输出路径(OutputPath)来更改项目输 ...
- qt 旧项目编译运行提示 “启动程序失败,路径或者权限错误?” 原因及解决方法
qt 旧项目编译运行提示 "启动程序失败,路径或者权限错误?" 原因及解决方法 原因 Qt Creator在打开项目文件的同时会生成.pro.user文件,.pro.user文件叫 ...
- .NET 事件总线,简化项目、类库、线程、服务等之间的通信,代码更少,质量更好。
Jaina .NET 事件总线,简化项目.类库.线程.服务等之间的通信,代码更少,质量更好. 安装 Package Manager Install-Package Jaina .NET CLI do ...
- VS2017:win32项目与win32控制台应用程序的转换方法
原文:https://www.cnblogs.com/asuser/articles/12297251.html 刚开始使用VS2017新建项目工程时,有时把应用类型的工程建成控制台类型的工程,在编译 ...
随机推荐
- git和github入门指南(5)
5.github上的标签 5.1.标签的作用 给当前版本打一个标签,在github上就会形成一个releases版本 点击进去后,用户就可以下载对应版本的源代码 5.2.在本地git工具上创建标签,同 ...
- 看完这篇Redis缓存三大问题,保你面试能造火箭,工作能拧螺丝。
前言 日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题. 一旦涉及大数据量的需求,如一些商品抢购的情景,或者主页访问量瞬间较 ...
- C++多种方法枚举串口号
部分方式没结果,思路应该是没错. //7. std::cout << "M8: SetupDiGetClassDevs " << std::endl; // ...
- 执行python 爬虫脚本时提示bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
from bs4 import BeautifulSoupfrom urllib.request import urlopenimport re html = urlopen('http://**** ...
- 分享几个很实用的CSS技巧对前端技术很有帮助
创建剪切动画 对于剪切动画,使用clip-path代替width/height,避免DOM重排导致性能过低. .animate { width: 200px; height: 200px; backg ...
- 内嵌iframe页面在IOS下会受内部元素影响自动撑开的问题
IOS下的webview页面,内嵌iframe元素,将其样式指定为宽高100%: .iframe { width: %; height: %; } 在安卓下运行均无问题,但是在IOS下会出现异常. 具 ...
- 由VIP漂移引发的算法异常问题调查和解决
最近工作中的一个问题,耗时一个月之久终于调查完毕且顺利解决,顿时感慨万千.耗时之久和预期解决时间和环境搭建以及日志不合理等等有关,当然这个并非此文的重点.之所以在很久以后的今天又开始写文,主要是这个问 ...
- 洛谷P5774,可爱的动态规划。
如此可爱的动态规划见过么? 相信各位都非常喜欢动态规划,那我就写一道可爱的动态规划的题解吧. 题目:https://www.luogu.com.cn/problem/P5774 题意: 题意“挺明白” ...
- 洛谷 P4408 [NOI2003]逃学的小孩
题目传送门 题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:“喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?”一听说要考试,Chris的父母就心急如焚, ...
- Docker镜像-拉取并且运行
1.docker search : 从Docker Hub查找镜像 docker search [OPTIONS] 镜像名 OPTIONS说明: --automated :只列出 automated ...