標籤:des android style blog http io ar color 使用
前言
Android在設計架構的時候,採用了mashup(混搭)的設計理念,也就是說一切都是組建,自己寫的是組件,別人提供的也是組件,使用的時候只要符合相關協議就可以把他們當作自己的組件。比如系統提供的照相機、通訊錄等等都可以直接拿來用。今天就看下照相機的相關內容。
簡單調用照相機
如果我們的需求只是直接調用照相機,而不用做任何後續處理,那麼這個就很簡單了,通過傳遞一個intent對象,就可以直接調用照相機組件,如下所示:
Intent intent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); mContext.startActivity(intent);
這樣我們就把照相機組件給調出來了,然後就正常使用照相機就可以了。
擷取照相機的內容
上一節我們簡單的使用了照相機,同時照下來的內容儲存到了預設路徑中了,但是更多的時候我們不僅需要調用照相機進行拍照,同時還需做後續處理,
比如把照下來的內容放到我們指定的內容地區中,這樣的需求就稍微麻煩一點。這時候調用照相機的時候就需要啟動一個帶有傳回值的照相機Activity,
然後在接收介面中處理返回照片,如下所示:
調用代碼
Intent intent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); activity.startActivityForResult(intent,1);
通過上面的代碼就啟動了一個帶傳回值的照相機Activity,完成照相後會調用返回介面,我們處理照片內容就在這個介面裡面了。如下所示
傳回碼
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 1: //擷取照片 Bundle extras = data.getExtras(); Bitmap bitmap = (Bitmap) extras.get("data"); break; default: break; } }
通過上面的代碼我們就可以擷取到照相機拍下來的內容了,是一個Bitmap對象,然後就可以使用這個對象,用這個對象時候我們發現這張照片並不是原始照片,而是經過壓縮後的照片,如果能滿足我們的需求那就ok了,如果我們需要擷取到原始照片,就需要用到下面的內容了
擷取原始照片
如果想擷取原始照片,那麼在傳遞intent對象的時候就需要進行進一步的設定了,需要把指定原始照片儲存到指定路徑,如下所示
File file = new File("/sdcard/demo/temp"); if(!file.exists()){ file.mkdirs(); } File imgFile = new File(tempDir,"test"); Intent intent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); Uri u=Uri.fromFile(imgFile); //指定路徑那個 intent.putExtra(MediaStore.EXTRA_OUTPUT, u);
這樣調用代碼就寫好了,照相機會把原始照片輸出到/sdcard/demo/temp/test檔案中
使用原始照片
這就很簡單了,知道了路徑我們可以通過各種方式來訪問並處理它,下面是其中的一種方式。
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 1: //擷取照片 Uri uri = data.getData(); //擷取到是圖片路徑 ContentResolver cr = this.getContentResolver(); Bitmap bitmap=null; try { bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri)); } catch (FileNotFoundException e) { e.printStackTrace(); } break; default: break; }
這樣我們有拿到了這個bitmap,後續就隨意使用了。
後記
這篇文章簡單介紹了下照相機的使用方式,當然還可以自訂照相機介面來完成,等等吧,相信有了這篇文章的簡單介紹會有一個大概的輪廓,至於
使用到什麼程度還需要看具體需求,然後根據api進行進一步的定製。
Uri:統一資源識別項(Uniform Resource Identifier,或URI)是一個用於標識某一互連網資源名稱的字串。它可以標識各種類型的資源,比如我們常見的http資源,以及ftp資源,在這篇文章中是表示一個路徑資源。
原文地址:http://www.cnblogs.com/luoaz/p/4148851.html
Android照相機應用