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

?

Android即時拍照與上傳應用的設計與實現(xiàn)

2015-10-27 12:13孫力群
電腦知識與技術(shù) 2015年21期
關(guān)鍵詞:服務端監(jiān)控功能

孫力群

摘要:在工(商)業(yè)環(huán)境下,對象的圖文數(shù)據(jù)的實時采集、實時傳遞和處理是非常有價值之需求,但在傳統(tǒng)基于PC的信息應用中,定制實現(xiàn)起來還是成本較高。移動互聯(lián)網(wǎng)時代,利用普通的Android手機,完成這一任務對企業(yè)卻幾乎不需要增加硬件成本,通過整合移動設備的拍照,圖片數(shù)據(jù)存儲和提取功能,使用apache httpclient和MultipartEntityBuilder組合模式傳送圖片等業(yè)務數(shù)據(jù)至服務端,實現(xiàn)了以通用移動設備和軟件技術(shù)應用達到較理想商業(yè)價值的目的。

關(guān)鍵詞:Android;圖片上傳;移動應用;實時監(jiān)控;httpclient;MultipartEntityBuilder

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)21-0064-02

在一些商業(yè)應用場景,經(jīng)常會需要將待處理產(chǎn)品對象的圖片和相關(guān)信息實時采集和發(fā)送到相關(guān)干系人,以便更精準和及時響應特、急事件的處理。在傳統(tǒng)的客戶機/服務器網(wǎng)絡應用模式下,可能需要經(jīng)過系統(tǒng)外的數(shù)據(jù)采集和準備,不能自然得納入應用系統(tǒng)中,或者使用非通用化的定制設備。隨著智能手機等大眾化移動設備應用領(lǐng)域不斷擴展,我們也可以充分利用之實現(xiàn)服務于工、商業(yè)環(huán)境下的移動應用。

1 應用需求特點

我們開發(fā)的生產(chǎn)執(zhí)行系統(tǒng),要求在項目監(jiān)控功能里,監(jiān)控者跟蹤在制品對象的進度狀況,監(jiān)控者手機登錄生產(chǎn)執(zhí)行系統(tǒng),對現(xiàn)場發(fā)現(xiàn)有問題的在制品,通過選擇對應含責任人定位數(shù)據(jù)列表細目,啟用信息發(fā)送界面,監(jiān)控者可使用手機拍照后,隨定制的文本信息一起,即時發(fā)送上傳給應用服務器,也可調(diào)出已存在的圖片文件發(fā)送。服務器接收后路由轉(zhuǎn)發(fā)給相關(guān)責任人。這個需求有較強的類型意義,因為在傳統(tǒng)的工業(yè)現(xiàn)場信息化應用,最多由車間內(nèi)工作站充當數(shù)據(jù)采集、上報的終端,離現(xiàn)場發(fā)生情況的時、點都有一定距離,而通過將普通的智能手機等設備有機得納入應用環(huán)境中,可以以性價比很高的方式即時采集,零距離反饋。

2 拍照與選擇圖片的整合設計

設計附加圖片功能時,如果用戶選用拍照方式,則調(diào)用手機拍照功能,拍攝后的照片會回傳照片的Url路徑,從中可以解析出照片文件的保存路徑。如果用戶選擇已有照片,則調(diào)用手機的圖片文件的選擇功能,選擇后也能回Url路徑。這樣兩種方式就方便整合設計。

if (radioGroupMessageImageSource

.getCheckedRadioButtonId() == R.id.radio_capture_image_to_send_mes) {

//intent設定為系統(tǒng)內(nèi)置的拍照功能

Intent intentForCapture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

ContentValuesmyContentValues = new ContentValues();

//在外存上準備新增一個圖片文件,返回的是Uri格式的準備指向新文件的路徑

uriPicture = ProjectMessageSendActivity.this .getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,myContentValues);

intentForCapture.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uriPicture);

//告訴系統(tǒng),拍照后保存的文件Uri路徑賦值給uriPicture

startActivityForResult(intentForCapture,ACTION_IMAGE_CAPTRUE);

} else {

Intent intentForSelect = new Intent();

//調(diào)用系統(tǒng)只選擇圖片對象的內(nèi)容選擇功能

intentForSelect.setAction(Intent.ACTION_GET_CONTENT);

intentForSelect.setType("image/*");

startActivityForResult(intentForSelect, ACTION_IMAGE_PICK);}

拍照或選擇圖片界面操作完成返回后,在接收處均可得到Uri格式的圖片文件的引用路徑,需要從中解析出File類型的目錄,以便進一步處理。獲取的圖片按比例顯示在預覽imageView中。

String[] pictures = { MediaStore.Images.Media.DATA };

Cursor imageCR = managedQuery(uriPicture, pictures, null, null,null);

imageCR.moveToFirst();

intimage_index = imageCR

.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

String imagePath = imageCR.getString(image_index);

File imageFile = new File(imagePath);

FileInputStream stream = new FileInputStream(imageFile);

//讀取生成圖片

Bitmap image =MediaStore.Images.Media.getBitmap(

this.getContentResolver(), uriPicture);

//防止圖片過大溢出,按比例縮放顯示

BitmapFactory.OptionsBFOption = new BitmapFactory.Options();

BFOption.inSampleSize = Math.max((int) (4096 / image.getWidth()),

(int) (4096 / image.getHeight())) + 1;

BitmapmyMap = BitmapFactory.decodeStream(pictureInput, null,BFOption);

// myMap = Bitmap.createScaledBitmap(bitmap ,2048,2048, false);

imageViewSendMessageImage.setImageBitmap(myMap);

3 使用MultipartEntityBuilder構(gòu)建傳輸圖文信息

包含圖片文件和普通文本域的內(nèi)容上傳,使用傳統(tǒng)的http文件上傳編碼方式,需要處理較多細節(jié),因此選用apache httpclient和MultipartEntityBuilder組合模式,非常簡潔得包裝完成

MultipartEntityBuildermultipartEntity = MultipartEntityBuilder

.create();

inti = 0;

while (i

if (keyValueList.get(i).getName()//圖片文件上傳

.equals("projectMessageImage")) {

File file = new File(keyValueList

.get(i).getValue());

multipartEntity.addBinaryBody(keyValueList.get(i)

.getName(),file,ContentType.create("image/jpeg"),

file.getName());

} else {//表單字段處理

multipartEntity.addPart(keyValueList.get(i).getName(),

newStringBody(keyValueList.get(i).getValue(),

ContentType.create("text/plain","UTF-8")));

}

}

通過MultipartEntityBuilder分類封裝,繁雜的參數(shù)定義,文件上傳的流處理都隱藏起來。服務端可按正常的接收含文件上專表單數(shù)據(jù)來處理。

4 結(jié)束語

通過上述功能的綜合實現(xiàn),現(xiàn)場人員只需在個人手機上安裝app,隨時將目標對象的數(shù)據(jù)和圖片發(fā)送給相關(guān)責任人,服務端也作了后續(xù)歸檔處理。將現(xiàn)場采集、傳遞和響應融入到傳統(tǒng)的生產(chǎn)執(zhí)行系統(tǒng)應用中,既做到實時處理,又完成數(shù)據(jù)流后臺歸整,提升了整個系統(tǒng)的應用價值,得到用戶的好評。

參考文獻:

[1] 高洪巖.android學精要[M].北京:清華大學出版社, 2012.

[2] Ronan Schwarz.The AndroidDevelopers Cookbook[M]. Indiana:Addsion-wesley, 2014.

[3] Wallace Jackson.Pro Android UI[M].NewYork:Appress, 2013.

[4] OnurClinar.Pro Android Quick ApisReferencee[M].NewYork:Appress, 2013.

[5] Reto Meier. Android 4 高級編程[M]. 北京: 清華大學出版社, 2014.

[6 ]陳文,郭依正.深入理解Android網(wǎng)絡編程[M]. 北京: 機械工業(yè)出版社, 2013.

猜你喜歡
服務端監(jiān)控功能
也談詩的“功能”
The Great Barrier Reef shows coral comeback
你被監(jiān)控了嗎?
Zabbix在ATS系統(tǒng)集中監(jiān)控中的應用
云存儲中基于相似性的客戶-服務端雙端數(shù)據(jù)去重方法
新時期《移動Web服務端開發(fā)》課程教學改革的研究
在Windows Server 2008上創(chuàng)建應用
關(guān)于非首都功能疏解的幾點思考
PDCA循環(huán)法在多重耐藥菌感染監(jiān)控中的應用
中西醫(yī)結(jié)合治療甲狀腺功能亢進癥31例