Android照相機應用

來源:互聯網
上載者:User

標籤: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照相機應用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.