亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

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

        0 引言

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

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

        1 總體構想

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

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

        2 軟件設計

        2.1 軟件總體設計思路

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

        圖1 應用軟件對象分解圖

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

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

        圖2 應用軟件順序圖

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

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

        2.2 關鍵軟件編程設計

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

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

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

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

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

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

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

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

        //數(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ù)庫文件并拷貝復制數(shù)據(jù)塊

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

        }

        //從assets文件夾導入已有裝備信息數(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);

        }

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

        fos.close();

        fis.close();

        ……

        }

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

        //從assets文件夾導入外部數(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文件關鍵代碼如下:

        //加載顯示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 標題欄掃碼查詢菜單項設計

        華為統(tǒng)一掃碼服務(Scan Kit)[6]提供便捷的條形碼和二維碼掃描與解析能力,默認支持13種碼制式,可以實現(xiàn)遠距離條碼或二維碼的檢測與自動放大,并針對常見復雜掃碼場景(如:強光照、污損、柱面等)做了針對性識別優(yōu)化,以提升掃碼成功率與用戶體驗。Scan Kit提供Default View Mode、Customized View Mode、Bitmap API Mode三種調用方式,其中Default View Mode提供相機掃碼和導入圖片掃碼兩個功能,提供了完整的Activity和掃碼界面UI,Scan Kit直接控制相機實現(xiàn)最優(yōu)的相機Zoom控制、自適應的曝光調節(jié)、自適應對焦調節(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'”以添加編譯依賴。調用Scan Kit時,需要在Manifest文件中注冊申明“com.huawei.hms.hmsscankit.ScanKitActivity”,構建相機掃碼和導入圖片掃碼功能,還需要申請“CAMERA”(相機權限)和“READ_EXTERNAL_STORAGE”(讀文件權限)。配置完成后,使用Default View調用方式進行掃碼查詢裝備數(shù)據(jù)信息的主要業(yè)務流程如圖3所示。

        圖3 應用軟件順序圖

        掃碼查詢關鍵代碼如下所示:

        //工具欄菜單選擇響應處理

        @Override

        public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        switch (item.getItemId()) {

        //掃碼查詢

        case R.id.scanview:

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

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

        break;

        default:

        }

        return true;

        }

        //權限返回的結果處理

        @Override

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

        {

        //判斷是否通過權限申請

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

        return;

        }

        //默認掃碼功能,支持選擇相冊識別

        if (requestCode == DEFINED_CODE) {

        //設置支持掃碼識別的類型碼

        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) {

        ……

        //讀取掃碼返回結果

        if (requestCode == REQUEST_CODE_SCAN) {

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

        if (obj != null) {

        //從掃碼結果中取出原始碼值

        String scan_result = obj.originalValue;

        //跳轉至電子組合頁面,需提供組合的名稱和對應圖片的絕對存儲路徑

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

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

        Bundle check_bd = new Bundle();

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

        String mName = scan_result.substring(2);

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

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

        //組合對應實物照片存儲絕對路徑

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

        //跳轉至組合詳情頁

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

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

        intent.putExtras(check_bd);

        startActivity(intent);

        }

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

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

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

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

        startActivity(intent);

        }}

        else {

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

        }}}

        2.2.3 標題欄關鍵字搜索查詢菜單項設計

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

        //加載菜單

        @Override

        public boolean onCreateOptionsMenu(Menu menu) {

        //引用menu文件

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

        //獲取搜索框組件SearchView

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

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

        mSearchView.setSubmitButtonEnabled(true);

        //設置搜索框提示語

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

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

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

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

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

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

        mSearchAutoComplete.setTextSize(14);

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

        mSearchAutoComplete.setThreshold(1);

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

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

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

        mSearchAutoComplete.setAdapter(adapter);

        //監(jiān)聽搜索框輸入字符,實時顯示匹配預設項,實現(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();

        //組合對應實物照片存儲絕對路徑

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

        //自動跳轉至部組件詳情頁

        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();

        //組合對應實物照片存儲絕對路徑

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

        //自動跳轉至部組件詳情頁

        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ù)展示編程設計

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

        //在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");

        //接口對應實物圖片存儲路徑

        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ù)庫,獲取組合對應接口針腳定義數(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");

        //設置列左對齊

        circuitCharacteristic.setTextAlign(Paint.Align.LEFT);

        //定義表格的列條目

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

        //設置列左對齊

        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ù)據(jù)

        interfaceDatasTable.setTableData(tableData);

        //隱藏表題

        interfaceDatasTable.getConfig().setShowTableTitle(false);

        //設置是否顯示頂部序號列

        interfaceDatasTable.getConfig().setShowXSequence(false);

        //設置是否顯示左側序號列

        interfaceDatasTable.getConfig().setShowYSequence(false);

        //設置表格單元內容字體大小及顏色

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

        //設置表格列項點擊事件響應

        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 軟件運行結果

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

        圖4 應用軟件運行效果圖

        4 結束語

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

        猜你喜歡
        詳情頁代號掃碼
        《中獸醫(yī)學雜志》
        跨境電商背景下廣西工藝品詳情頁優(yōu)化技巧
        《中獸醫(yī)學雜志》
        臍橙連上物聯(lián)網(wǎng) 掃碼便知“前世今生”
        山之高
        歌唱藝術(2022年6期)2022-10-23 07:03:36
        演習代號:圍城計劃
        代號“凌凌漆”
        淺析消費心理下商品無線端詳情頁優(yōu)化策略
        絲路視野(2019年31期)2019-05-09 13:45:32
        中國進入“掃碼”時代
        伙伴(2018年1期)2018-05-14 10:49:15
        店鋪詳情頁裝修那些事
        人妻少妇精品无码专区| 国产av一区网址大全| 中文亚洲一区二区三区| 久久777国产线看观看精品 | 亚洲最新版无码AV| 亚洲一区二区三区乱码在线| 91久久国产香蕉视频| 少妇激情一区二区三区视频| 无限看片在线版免费视频大全| 亚洲成熟丰满熟妇高潮XXXXX| 国产精品一区久久综合| 蜜桃日本免费观看mv| 精品久久久久久久中文字幕| 丰满人妻一区二区乱码中文电影网| 日韩一二三四区在线观看| 无码a级毛片免费视频内谢| 亚洲中文无码永久免| 亚洲AV永久无码精品表情包 | 性一交一乱一乱一视频| 欧美综合区| 亚洲精品国产熟女久久久| 加勒比一本heyzo高清视频| 亚洲av无码之日韩精品| 国产精品国产三级国产AvkTV| 桃色一区一区三区蜜桃视频| 成人午夜特黄aaaaa片男男| 肉体裸交丰满丰满少妇在线观看 | 国产内射性高湖| 亚洲色欲色欲www成人网| 婷婷久久av综合一区二区三区| 夜夜揉揉日日人人青青| 色综合久久天天综线观看| 少妇久久高潮不断免费视频| 色综合久久中文字幕综合网| 日韩精品一区二区三区免费视频 | 97影院在线午夜| 久久一区av蜜桃人妻| 45岁妇女草逼视频播放| 图片区小说区激情区偷拍区| 亚洲一区二区久久青草| 一区二区三区国产精品麻豆|