国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于華為統(tǒng)一掃碼服務(wù)編程實現(xiàn)裝備信息的交互查詢

2021-06-30 12:44:52杜國祥楊小龍
計算機測量與控制 2021年6期
關(guān)鍵詞:詳情頁代號掃碼

杜國祥,劉 洋,楊小龍,王 君

(中國人民解放軍32382部隊,武漢 430311)

0 引言

為適應(yīng)當(dāng)今復(fù)雜多變的國際環(huán)境變化,各類高新技術(shù)在新型裝備研制中得到越來越多的應(yīng)用,在極大提升裝備技戰(zhàn)性能的同時,也導(dǎo)致裝備變得越來越復(fù)雜,傳統(tǒng)的紙質(zhì)隨裝技術(shù)資料存在體積與重量大、編輯與更新不及時、使用不便、易污染、防火性差等諸多弊端。交互式電子技術(shù)手冊(IETM,interactive electronic technical manual)采用文字、圖形、表格、音視頻等形式,以人機交互的方式為用戶提供裝備相關(guān)技術(shù)信息[1],但作為一種新型技術(shù)出版物,局限于與用戶的交互,要求用戶對裝備有一定的了解,IETM未與裝備產(chǎn)生直接關(guān)聯(lián)。采用射頻識別技術(shù)(RFID,radio frequency identification)設(shè)計備件物資保障系統(tǒng)和導(dǎo)彈武器管理系統(tǒng),通過非接觸雙向通信,以完成裝備、備件、物資的目標(biāo)識別和數(shù)據(jù)交換,可實現(xiàn)備件物資和裝備技術(shù)狀態(tài)的精確化、智能化管理[2],但RFID在使用過程中會產(chǎn)生射頻信號,可能會對裝備正常運行產(chǎn)生電磁干擾,多個RFID標(biāo)簽在進(jìn)行識別時也易相互產(chǎn)生干擾。

本文將采用二維碼標(biāo)簽對裝備部組件及其對外接口連接線纜進(jìn)行標(biāo)識,用戶通過運行于Android智能設(shè)備的客戶端軟件,掃碼完成身份識別、解碼后,自動觸發(fā)業(yè)務(wù)邏輯處理,查詢與此二維碼標(biāo)簽標(biāo)識對象所相關(guān)的技術(shù)信息,以此為用戶提供各類信息服務(wù),具有技術(shù)成熟、識別速度快、易于制作、成本低、開發(fā)周期短等特點,用戶即掃即查,更加契合現(xiàn)今用戶使用習(xí)慣,更易激發(fā)用戶興趣。

1 總體構(gòu)想

按照裝備配套表,為其所有部組件及其連接線纜統(tǒng)一制作、更換二維碼銘牌,二維碼參考格式為“A:加電控制組合”,或者“B:6S2208-7D X1”,其中A和B為特征標(biāo)識字,可自行定義,主要用于區(qū)別部組件和部組件對外接口連接的線纜。本裝備信息交互查詢APP運行于常見的Android系統(tǒng)智能設(shè)備,軟件調(diào)用設(shè)備的攝像頭進(jìn)行掃碼,以解析出二維碼中的特征標(biāo)識字、部組件名稱或部組件連接線纜代號,之后從數(shù)據(jù)庫中查詢出其相關(guān)數(shù)據(jù)信息,最后自動跳轉(zhuǎn)至部組件詳情頁或部組件對外接口明細(xì)頁將數(shù)據(jù)信息展示給用戶。

用戶可以通過頁面工具欄上面的搜索菜單項,輸入關(guān)鍵字查詢相關(guān)數(shù)據(jù)信息,也可以用作裝備電子技術(shù)手冊,瀏覽數(shù)據(jù)信息。

2 軟件設(shè)計

2.1 軟件總體設(shè)計思路

采用模型-視圖-控制器(MVC,model-view-controller)的架構(gòu)模式進(jìn)行分層設(shè)計,如圖1所示。用戶在視圖層進(jìn)行交互操作,控制器層根據(jù)用戶請求進(jìn)行業(yè)務(wù)邏輯處理,從數(shù)據(jù)模型層查詢相關(guān)數(shù)據(jù)信息,再回送視圖層將查詢結(jié)果顯示給用戶。

圖1 應(yīng)用軟件對象分解圖

在數(shù)據(jù)模型層,裝備信息分成兩類存儲在assets文件夾下,編譯時打包至APK安裝包內(nèi),第一類是裝備的部組件清單、部組件接口明細(xì)清單、部組件連接線纜針腳定義明細(xì)等,此類信息數(shù)據(jù)量較小,利用開源數(shù)據(jù)庫框架LitePal進(jìn)行管理[3]。第二類是裝備部組件的詳細(xì)介紹、實物圖、結(jié)構(gòu)圖、電路圖、接線圖,此類信息數(shù)據(jù)量較大,則以PDF、JPEG格式文件存儲在assets文件下,利用barteksc:android-pdf-viewer開源庫加載顯示PDF文件[4],利用Glide開源庫加載顯示JPEG文件[5]。

控制器層4個活動對象MainActivity(首頁)、EquipmentActivity(部組件清單頁)、DetailsPageActivity(部組件詳情頁)、InterfaceDatasActivity(部組件接口明細(xì)頁)相互間跳轉(zhuǎn)關(guān)系如圖2所示,分別對應(yīng)視圖層中的activity_main.xml、activity_equipment.xml、activity_details_page.xml、activity_interface_datas.xml四個布局頁。

圖2 應(yīng)用軟件順序圖

在視圖層,首頁列出裝備的結(jié)構(gòu)組成和功能組成供用戶選擇,用戶點擊選擇后將自動跳轉(zhuǎn)至部組件清單頁。在部組件清單頁利用RecyclerView控件展示用戶選中的某結(jié)構(gòu)組成或分系統(tǒng)所包含的部組件,RecyclerView設(shè)置為StaggeredGridLayoutManager縱向2列瀑布流布局,條目則采用自定義的圖片+文字縱向布局,用戶點擊選中某一部組件后將自動跳轉(zhuǎn)至部組件詳情頁。部組件詳情頁將為用戶展示其詳細(xì)相關(guān)技術(shù)信息,包括詳細(xì)介紹、對外接口、實物圖、結(jié)構(gòu)圖、電路圖、接線圖,采用TabLayout控件+ViewPager控件實現(xiàn),ViewPager控件包含6個頁面,可通過左右滑動或者點擊標(biāo)簽進(jìn)行頁面,其中詳細(xì)介紹、實物圖、結(jié)構(gòu)圖、電路圖、接線圖4個頁面展示裝備信息均為PDF格式文件,對外接口頁則采用smartTable開源庫加載顯示數(shù)據(jù)表格,用戶點擊某對外接口后將自動跳轉(zhuǎn)至部組件對外接口明細(xì)頁。部組件對外接口明細(xì)頁也采用smartTable開源庫加載顯示數(shù)據(jù)表格,展示該對外接口所連接線纜的針腳定義列表。

此外,4個布局頁頂部均設(shè)有提供掃碼查詢和關(guān)鍵字搜索查詢菜單項的標(biāo)題欄,其中首頁和部組件清單頁采用Toolbar,部組件詳情頁和部組件接口明細(xì)頁則改用可折疊式標(biāo)題欄CollapsingToolbarLayout,下拉標(biāo)題欄式可顯示部組件或部組件對外接口的照片。

2.2 關(guān)鍵軟件編程設(shè)計

2.2.1 裝備信息數(shù)據(jù)管理設(shè)計

1)利用LitePal配置管理數(shù)據(jù):

首先在app/build.gradle文件中的dependencies閉包中添加“implementation 'org.litepal.android:java:3.0.0'”以引入LitePal開源數(shù)據(jù)庫框架。之后在assets文件夾下新建litepal.xml配置數(shù)據(jù)庫,關(guān)鍵代碼如下:

對應(yīng)配置文件中定義的三張數(shù)據(jù)表定義三個對應(yīng)的數(shù)據(jù)管理類:Matchingequipments:其實例為裝備某一部組件,包含屬性有序號、名稱、代號、所屬分系統(tǒng)、安裝位置、接口清單、備注;Equipmentinterfaces:其實例為裝備部組件某一對外接口的定義,包含的屬性有序號、名稱、代號、接口、連接線纜、線纜去向、備注;Cablepinsdefinitions:其實例為部組件對外接口連接線纜的針腳定義,包含的屬性有序號、名稱、接口A#針腳pin_nx、電路特性、接口B(信號去向)、針腳pin_ny(信號去向)。

LitePal新生成的數(shù)據(jù)庫文件默認(rèn)保存在/data/data/packagename/databases目錄下,APP啟動運行后,將自動創(chuàng)建數(shù)據(jù)庫文件,之后就可以利用LitePal查詢裝備數(shù)據(jù)信息,比如由組合名稱查找組合對應(yīng)代號:

String mMark = LitePal.select("mark").where("name = ?", mNameTxt).find(MatchingEquipments.class).get(0).getMark();

2)從assets文件下的SQLite數(shù)據(jù)庫導(dǎo)入數(shù)據(jù):

因LitePal只支持自己創(chuàng)建的數(shù)據(jù)庫,為使用已有裝備信息數(shù)據(jù)庫,在利用LitePal配置管理數(shù)據(jù)時,對應(yīng)數(shù)據(jù)表定義的三個數(shù)據(jù)管理類應(yīng)與現(xiàn)有數(shù)據(jù)庫中數(shù)據(jù)表的結(jié)構(gòu)保持一致,然后新建DBManager類,通過其定義的openDatabase( )和closeDatabase( )兩個函數(shù),將assets文件下的已有裝備信息數(shù)據(jù)庫導(dǎo)入至LitePal創(chuàng)建的數(shù)據(jù)庫,采取讀取寫入字節(jié)流的方式導(dǎo)入已有裝備信息數(shù)據(jù),關(guān)鍵代碼如下:

//數(shù)據(jù)庫文件名

private static final String DB_NAME = "ElectricCableManagementDatas.db";

//包名

private static final String PACKAGE_NAME = "com.example.electriccablemanagement2";

//LitePal創(chuàng)建數(shù)據(jù)庫的存放目錄

private static final String DB_PATH = "/data"+Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME + "/databases";

//打開數(shù)據(jù)庫

public void openDatabase() {

//判斷目錄是否存在,若不存在則創(chuàng)建目錄

File dFile = new File(DB_PATH);

if (!dFile.exists())

dFile.mkdir();

//打開數(shù)據(jù)庫文件并拷貝復(fù)制數(shù)據(jù)塊

this.database = this.openDatabase(DB_PATH + "/" + DB_NAME);

}

//從assets文件夾導(dǎo)入已有裝備信息數(shù)據(jù)庫

private SQLiteDatabase openDatabase(String dbfile) {

……

if ((new File(dbfile).exists())) {

//創(chuàng)建字節(jié)輸入流

FileInputStream fis = this.context.getResources().getAssets().open("ElectricCableManagementDatas.db");

//創(chuàng)建字節(jié)輸出流

FileOutputStream fos = new FileOutputStream(dbfile);

int BUFFER_SIZE = 1028 * 10;

byte[] buffer = new byte[BUFFER_SIZE];

//字節(jié)輸入流實際讀取的字符數(shù)

int count = 0;

//從已有裝備信息數(shù)據(jù)庫文件讀取字符并寫入LitePal創(chuàng)建的數(shù)據(jù)庫

while ((count = fis.read(buffer)) > 0) {

fos.write(buffer, 0, count);

}

//關(guān)閉字節(jié)輸入流和字節(jié)輸出流

fos.close();

fis.close();

……

}

在MainActivity的onCreate()中添加如下代碼以在APP啟動時自動導(dǎo)入裝備數(shù)據(jù)庫。

//從assets文件夾導(dǎo)入外部數(shù)據(jù)庫

DBManager dbHelper =new DBManager(this);

dbHelper.openDatabase();

dbHelper.closeDatabase();

3)加載顯示PDF文件和JPEG文件:

首先在app/build.gradle文件中的dependencies閉包中添加“implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'”、“implementation 'com.github.bumptech.glide:glide:4.11.0'”以引入庫文件。加載顯示PDF文件和JPEG文件關(guān)鍵代碼如下:

//加載顯示PDF文件

mPdfView=(PDFView)findViewById(R.id.equipment_details_pdfview);

mPdfView.fromAsset(mName.pdf).enableSwipe(true).swipeHorizontal(true).enableDoubletap(true).defaultPage(0).load();

//加載顯示JPEG文件

Glide.with(this).load(mPicturePath).into(pictureImage);

2.2.2 標(biāo)題欄掃碼查詢菜單項設(shè)計

華為統(tǒng)一掃碼服務(wù)(Scan Kit)[6]提供便捷的條形碼和二維碼掃描與解析能力,默認(rèn)支持13種碼制式,可以實現(xiàn)遠(yuǎn)距離條碼或二維碼的檢測與自動放大,并針對常見復(fù)雜掃碼場景(如:強光照、污損、柱面等)做了針對性識別優(yōu)化,以提升掃碼成功率與用戶體驗。Scan Kit提供Default View Mode、Customized View Mode、Bitmap API Mode三種調(diào)用方式,其中Default View Mode提供相機掃碼和導(dǎo)入圖片掃碼兩個功能,提供了完整的Activity和掃碼界面UI,Scan Kit直接控制相機實現(xiàn)最優(yōu)的相機Zoom控制、自適應(yīng)的曝光調(diào)節(jié)、自適應(yīng)對焦調(diào)節(jié)等操作,保障最佳的掃碼體驗,特別適用于快速集成。將HMS SDK集成到Android Studio開發(fā)環(huán)境中的操作步驟為:

首先打開Android Studio項目級build.gradle文件,在allprojects ->repositories和buildscript ->repositories里面分別添加代碼“maven {url 'http://developer.huawei.com/repo/'}”、在buildscript ->dependencies里面添加代碼“classpath 'com.huawei.agconnect:agcp:1.2.1.301'”以配置HMS SDK的maven倉地址。之后打開app/build.gradle文件,在文件頭添加代碼“apply plugin: 'com.huawei.agconnect'”、在“dependencies”中添加代碼“implementation 'com.huawei.hms:scanplus:1.1.1.301'”以添加編譯依賴。調(diào)用Scan Kit時,需要在Manifest文件中注冊申明“com.huawei.hms.hmsscankit.ScanKitActivity”,構(gòu)建相機掃碼和導(dǎo)入圖片掃碼功能,還需要申請“CAMERA”(相機權(quán)限)和“READ_EXTERNAL_STORAGE”(讀文件權(quán)限)。配置完成后,使用Default View調(diào)用方式進(jìn)行掃碼查詢裝備數(shù)據(jù)信息的主要業(yè)務(wù)流程如圖3所示。

圖3 應(yīng)用軟件順序圖

掃碼查詢關(guān)鍵代碼如下所示:

//工具欄菜單選擇響應(yīng)處理

@Override

public boolean onOptionsItemSelected(@NonNull MenuItem item) {

switch (item.getItemId()) {

//掃碼查詢

case R.id.scanview:

//動態(tài)申請相機和文件讀寫權(quán)限

ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE},PERMISSION_CODE);

break;

default:

}

return true;

}

//權(quán)限返回的結(jié)果處理

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)

{

//判斷是否通過權(quán)限申請

if (permissions == null || grantResults == null || grantResults.length < 2 || grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) {

return;

}

//默認(rèn)掃碼功能,支持選擇相冊識別

if (requestCode == DEFINED_CODE) {

//設(shè)置支持掃碼識別的類型碼

ScanUtil.startScan(this, REQUEST_CODE_SCAN, new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.ALL_SCAN_TYPE).create());

}

}

//掃碼識別并查詢數(shù)據(jù)庫

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

……

//讀取掃碼返回結(jié)果

if (requestCode == REQUEST_CODE_SCAN) {

HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);

if (obj != null) {

//從掃碼結(jié)果中取出原始碼值

String scan_result = obj.originalValue;

//跳轉(zhuǎn)至電子組合頁面,需提供組合的名稱和對應(yīng)圖片的絕對存儲路徑

//根據(jù)掃碼結(jié)果自動跳轉(zhuǎn)至對應(yīng)界面,若scan_result以A開頭,比如“A:加電控制組合”,則跳轉(zhuǎn)至電子組合頁面

if(scan_result.startsWith("A")){Intent intent = new Intent(MainActivity.this, DetailsPageActivity.class);

Bundle check_bd = new Bundle();

//從二維碼中識別出組合名稱

String mName = scan_result.substring(2);

//由組合名稱查找組合對應(yīng)代號

String mMark = LitePal.select("mark").where("name = ?", mName).find(MatchingEquipments.class).get(0).getMark();

//組合對應(yīng)實物照片存儲絕對路徑

String mPicturePath = "file:///android_asset/Pictures/" + mMark + ".jpg";

//跳轉(zhuǎn)至組合詳情頁

check_bd.putString("名稱",mName);

check_bd.putString("圖片絕對路徑",mPicturePath);

intent.putExtras(check_bd);

startActivity(intent);

}

//若以B開頭,比如“B:6S2208-7D X1”,則跳轉(zhuǎn)至組合對外接口頁面,需提供組合接口代號

else if(scan_result.startsWith("B")){

Intent intent = new Intent(MainActivity.this, InterfaceDatasActivity.class);

//從二維碼中識別出組合接口對應(yīng)的代號,并自動跳轉(zhuǎn)至對應(yīng)界面intent.putExtra("CHECK_KEY",scan_result.substring(2));

startActivity(intent);

}}

else {

Toast.makeText(MainActivity.this, "未掃碼到二維碼或條形碼!", Toast.LENGTH_SHORT).show();

}}}

2.2.3 標(biāo)題欄關(guān)鍵字搜索查詢菜單項設(shè)計

關(guān)鍵字搜索查詢采用SearchView控件實現(xiàn),用戶輸入關(guān)鍵字比如部組件的代號時,點擊提交查詢按鈕,將自動從裝備數(shù)據(jù)庫從查詢該部組件的相關(guān)技術(shù)信息,并自動跳轉(zhuǎn)至部組件詳情頁展示相關(guān)數(shù)據(jù)。搜索欄具備自動完成功能,在用戶輸入1個字符后,將自動展開一個下拉列表列出與改字符匹配的預(yù)設(shè)項供用戶選擇,用戶選中下拉列表中的某一待選項后,將自動完成提交、查詢,并自動跳轉(zhuǎn)至部組件詳情頁展示相關(guān)數(shù)據(jù)。關(guān)鍵代碼如下:

//加載菜單

@Override

public boolean onCreateOptionsMenu(Menu menu) {

//引用menu文件

getMenuInflater().inflate(R.menu.toolbar, menu);

//獲取搜索框組件SearchView

mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.searchview));

//設(shè)置顯示搜索框展開時的提交按鈕

mSearchView.setSubmitButtonEnabled(true);

//設(shè)置搜索框提示語

mSearchView.setQueryHint("請輸入關(guān)鍵字");

//獲取mSearchView的子組件以自定義樣式

mSearchAutoComplete = (SearchAutoComplete) mSearchView.findViewById(R.id.search_src_text);

//設(shè)置輸入框提示文字的顏色、背景色、大小

mSearchAutoComplete.setHintTextColor(getResources().getColor(android.R.color.darker_gray));

mSearchAutoComplete.setTextColor(getResources().getColor(android.R.color.background_light));

mSearchAutoComplete.setTextSize(14);

//設(shè)置輸入框輸入1個字符時觸發(fā)查詢

mSearchAutoComplete.setThreshold(1);

//創(chuàng)建數(shù)組適配器,list為存放預(yù)設(shè)項數(shù)據(jù)的字符類型數(shù)組

ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line, 0,list);

//為輸入框設(shè)置數(shù)組適配器

mSearchAutoComplete.setAdapter(adapter);

//監(jiān)聽搜索框輸入字符,實時顯示匹配預(yù)設(shè)項,實現(xiàn)快速搜索查詢功能

mSearchAutoComplete.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView parent, View view, int position, long id) {

//獲取選擇項的值,也即組合代號

String selectStr = (String) parent.getItemAtPosition(position);

mSearchAutoComplete.setText(selectStr);

//由組合代號查找組合名稱

String mNmae = LitePal.select("name").where("mark = ?", selectStr).find(MatchingEquipments.class).get(0).getName();

//組合對應(yīng)實物照片存儲絕對路徑

String mPicturePath = "file:///android_asset/Pictures/" + selectStr + ".jpg";

//自動跳轉(zhuǎn)至部組件詳情頁

Intent intent = new Intent(MainActivity.this, DetailsPageActivity.class);

Bundle check_bd = new Bundle();

check_bd.putString("名稱",mNmae);

check_bd.putString("圖片絕對路徑",mPicturePath);

intent.putExtras(check_bd);

startActivity(intent);

return;

}

});

//監(jiān)聽搜索框文字變化

mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

@Override public boolean onQueryTextSubmit(String searchStr) {

//由組合代號查找組合名稱

String mNmae = LitePal.select("name").where("mark = ?", searchStr).find(MatchingEquipments.class).get(0).getName();

//組合對應(yīng)實物照片存儲絕對路徑

String mPicturePath = "file:///android_asset/Pictures/" + searchStr + ".jpg";

//自動跳轉(zhuǎn)至部組件詳情頁

Intent intent = new Intent(MainActivity.this, DetailsPageActivity.class);

Bundle check_bd = new Bundle();

check_bd.putString("名稱",mNmae);

check_bd.putString("圖片絕對路徑",mPicturePath); intent.putExtras(check_bd);

startActivity(intent);

return false;

}

……

return super.onCreateOptionsMenu(menu);

}

2.2.4 表格數(shù)據(jù)展示編程設(shè)計

部組件詳情頁中的對外接口標(biāo)簽頁和部組件對外接口連接線纜針腳定義明細(xì),采用smartTable開源控件[7]以表格的形式進(jìn)行展示。使用前需在app/build.gradle文件中的dependencies閉包中添加“com.github.huangyanbin:SmartTable:2.2.0”以引入庫文件。關(guān)鍵代碼如下所示:

//在activity_interface__datas.xml中添加smartTable控件

android:id="@+id/interface_datas_table"

android:layout_width="match_parent"

android:layout_height="match_parent" />

//在InterfaceDatasActivity中使用smartTable控件

public class InterfaceDatasActivity extends AppCompatActivity {

//InterfaceDatasInfo為自定義類對象,包含pinNumber、circuitCharacteristic、connectionDestination三個String變量

private SmartTable interfaceDatasTable;

//表格表題

private String smartTableTitle;

//針腳號

Column pinNumber;

//電路特性

Column circuitCharacteristic;

//信號去向

Column connectionDestination;

……

@Override

protected void onCreate(Bundle savedInstanceState) {

……

//讀取數(shù)據(jù)

Intent intent = getIntent();

//接口代號,比如6S2208-7D X1

String check_key = intent.getStringExtra("CHECK_KEY");

//接口對應(yīng)實物圖片存儲路徑

mPicturePath = PATH_HEAD + check_key + ".jpg";

//由組合接口代號分析出組合代號

String mMark = check_key.substring(0,(check_key.indexOf("7D"))+2);

//由組合代號查找組合名稱

String mNameTxt = LitePal.select("name").where("mark = ?", mMark).find(MatchingEquipments.class).get(0).getName();

smartTableTitle = mNameTxt + check_key;

……

//查詢數(shù)據(jù)庫,獲取組合對應(yīng)接口針腳定義數(shù)據(jù)

List check_CablePinsDefinitions = new List() {};

check_CablePinsDefinitions = LitePal.where("connectiona = ?",check_key).find(CablePinsDefinitions.class);

//表格填充數(shù)據(jù)

List list = new ArrayList<>();

for(int i=0;i

String pinnumber = check_CablePinsDefinitions.get(i).getPinnumberA();

String define = check_CablePinsDefinitions.get(i).getCircuitCharacteristic();

String connect = check_CablePinsDefinitions.get(i).getConnectionB();

connect = connect + ":" + check_CablePinsDefinitions.get(i).getPinnumberB();

list.add(new InterfaceDatasInfo(pinnumber,define,connect));

}

//定義表格的列條目

pinNumber = new Column<>("針腳號", "pinNumber");

//滑動到表格左邊時固定列

pinNumber.setFixed(true);

circuitCharacteristic = new Column<>("電路特性", "circuitCharacteristic");

//設(shè)置列左對齊

circuitCharacteristic.setTextAlign(Paint.Align.LEFT);

//定義表格的列條目

connectionDestination = new Column<>("信號去向", "connectionDestination");

//設(shè)置列左對齊

connectionDestination.setTextAlign(Paint.Align.LEFT);

//定義表格數(shù)據(jù)

final TableData tableData = new TableData<>(smartTableTitle,list, pinNumber, circuitCharacteristic, connectionDestination);

interfaceDatasTable = (SmartTable)findViewById(R.id.interface_datas_table);

//設(shè)置連接表格數(shù)據(jù)

interfaceDatasTable.setTableData(tableData);

//隱藏表題

interfaceDatasTable.getConfig().setShowTableTitle(false);

//設(shè)置是否顯示頂部序號列

interfaceDatasTable.getConfig().setShowXSequence(false);

//設(shè)置是否顯示左側(cè)序號列

interfaceDatasTable.getConfig().setShowYSequence(false);

//設(shè)置表格單元內(nèi)容字體大小及顏色

interfaceDatasTable.getConfig().setContentStyle(new FontStyle(40, Color.BLUE));

//設(shè)置表格列項點擊事件響應(yīng)

pinNumber.setOnColumnItemClickListener(new OnColumnItemClickListener() {

@Override

public void onClick(Column column, String value, String bool, int position) {

Toast.makeText(InterfaceDatasActivity.this,"點擊了" + value,Toast.LENGTH_SHORT).show();

//不要忘記刷新表格,否則選中效果會延時一步

interfaceDatasTable.refreshDrawableState();

interfaceDatasTable.invalidate();

}});

……

}

3 軟件運行結(jié)果

軟件編譯完成后,安裝部署在Android系統(tǒng)智能設(shè)備上,用戶可選擇順序瀏覽查詢、掃碼查詢、關(guān)鍵字搜索查詢3種使用方式,運行效果如圖4所示。

圖4 應(yīng)用軟件運行效果圖

4 結(jié)束語

本文介紹了如何利用華為統(tǒng)一掃碼服務(wù),實現(xiàn)裝備部組件的掃碼識別,并查詢、顯示與其相對應(yīng)的技術(shù)信息,同時也實現(xiàn)了關(guān)鍵字搜索查詢部組件相關(guān)技術(shù)信息,通過掃碼識別查詢和關(guān)鍵字搜索查詢,將裝備信息與裝備快速關(guān)聯(lián)起來,在裝備信息的管理使用上,更加契合現(xiàn)今用戶的使用習(xí)慣,在裝備信息使用管理、技術(shù)培訓(xùn)、維修保障等方面具有極大的軍事使用價值。

猜你喜歡
詳情頁代號掃碼
《中獸醫(yī)學(xué)雜志》
跨境電商背景下廣西工藝品詳情頁優(yōu)化技巧
《中獸醫(yī)學(xué)雜志》
臍橙連上物聯(lián)網(wǎng) 掃碼便知“前世今生”
山之高
演習(xí)代號:圍城計劃
代號“凌凌漆”
淺析消費心理下商品無線端詳情頁優(yōu)化策略
絲路視野(2019年31期)2019-05-09 13:45:32
中國進(jìn)入“掃碼”時代
伙伴(2018年1期)2018-05-14 10:49:15
店鋪詳情頁裝修那些事
南江县| 永兴县| 三河市| 吉安市| 泽库县| 清徐县| 廉江市| 兴和县| 凌源市| 克山县| 上虞市| 三台县| 齐齐哈尔市| 大石桥市| 靖边县| 吉林省| 都兰县| 海城市| 万源市| 云和县| 沈阳市| 望都县| 共和县| 乐平市| 吴忠市| 买车| 楚雄市| 富平县| 龙游县| 文登市| 江口县| 丹棱县| 紫金县| 平凉市| 天长市| 达孜县| 鹰潭市| 琼海市| 城口县| 鄯善县| 曲阳县|