精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android開發:定制自己的Camera

移動開發 Android
Android自帶的Camera應用雖然可以滿足大多數情景,但是其靈活性上還有不足。但是Android允許我們定制自己的Camera。 本文介紹了如何定制Camera的一個實例。

在Android的hardware包中有一個Camera類。這個類就是獲取Camera服務的,可以定制Camera等。

可以通過open()方法獲取其實例。

在使用這個類是需要在AndroidManifest.xml文件中加入相應的權限和特性。

如:

  1.  <uses-permission android:name = "android.permission.CAMERA" /> 
  2. <uses-feature android:name = "android.hardware.camera" /> 
  3. <uses-feature android:name = "android.hardware.camera.autofocus" />  

等。

本文實例:

  1. package demo.camera; 
  2. import java.io.OutputStream; 
  3. import java.util.Iterator; 
  4. import java.util.List; 
  5. import android.app.Activity; 
  6. import android.content.ContentValues; 
  7. import android.content.res.Configuration; 
  8. import android.hardware.Camera; 
  9. import android.net.Uri; 
  10. import android.os.Bundle; 
  11. import android.provider.MediaStore; 
  12. import android.view.SurfaceHolder; 
  13. import android.view.SurfaceView; 
  14. import android.view.View; 
  15. import android.widget.LinearLayout; 
  16. /** 
  17.  * Android自帶的Camera應用程序可以完成很多功能。但是當其不能滿足我們需要的時候 
  18.  * 我們可以定制自己的Camera。Android提供了Camera類來輔助我們實現自己的Camera。 
  19.  * 這個例子就來定義一個自己的Camera 
  20.  * 首先,在Manifest中需要引入權限<uses-permission android:name="android:permission.CAMERA"/> 
  21.  * 我們需要用來存放取景器的容器,這個容器就是SurfaceView。 
  22.  * 使用SurfaceView的同時,我們還需要使用到SurfaceHolder,SurfaceHolder相當于一個監聽器,可以監聽 
  23.  * Surface上的變化,通過其內部類CallBack來實現。 
  24.  * 為了可以獲取圖片,我們需要使用Camera的takePicture方法同時我們需要實現Camera.PictureCallBack類,實現onPictureTaken方法 
  25.  * @author Administrator 
  26.  * 
  27.  */ 
  28. public class MyCamera extends Activity implements SurfaceHolder.Callback,Camera.PictureCallback{ 
  29.      
  30.     public static final int MAX_WIDTH = 200
  31.     public static final int MAX_HEIGHT = 200
  32.      
  33.     private SurfaceView surfaceView; 
  34.      
  35.     private Camera camera; //這個是hardare的Camera對象 
  36.      
  37.     public void onCreate(Bundle savedInstanceState){ 
  38.         super.onCreate(savedInstanceState); 
  39.         this.setContentView(R.layout.camera); 
  40.         surfaceView = (SurfaceView)this.findViewById(R.id.myCameraView); 
  41.         surfaceView.setFocusable(true);  
  42.         surfaceView.setFocusableInTouchMode(true); 
  43.         surfaceView.setClickable(true); 
  44.         surfaceView.setOnClickListener(new View.OnClickListener() { 
  45.              
  46.             @Override 
  47.             public void onClick(View v) { 
  48.                  
  49.                 camera.takePicture(nullnullnull, MyCamera.this); 
  50.                  
  51.             } 
  52.         }); 
  53.         //SurfaceView中的getHolder方法可以獲取到一個SurfaceHolder實例 
  54.         SurfaceHolder holder = surfaceView.getHolder(); 
  55.         //為了實現照片預覽功能,需要將SurfaceHolder的類型設置為PUSH 
  56.         //這樣,畫圖緩存就由Camera類來管理,畫圖緩存是獨立于Surface的 
  57.         holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
  58.         holder.addCallback(this); 
  59.     } 
  60.     @Override 
  61.     public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
  62.     } 
  63.     @Override 
  64.     public void surfaceCreated(SurfaceHolder holder) { 
  65.         // 當Surface被創建的時候,該方法被調用,可以在這里實例化Camera對象 
  66.         //同時可以對Camera進行定制 
  67.         camera = Camera.open(); //獲取Camera實例 
  68.      
  69.          
  70.         /** 
  71.          * Camera對象中含有一個內部類Camera.Parameters.該類可以對Camera的特性進行定制 
  72.          * 在Parameters中設置完成后,需要調用Camera.setParameters()方法,相應的設置才會生效 
  73.          * 由于不同的設備,Camera的特性是不同的,所以在設置時,需要首先判斷設備對應的特性,再加以設置 
  74.          * 比如在調用setEffects之前最好先調用getSupportedColorEffects。如果設備不支持顏色特性,那么該方法將 
  75.          * 返回一個null 
  76.          */ 
  77.         try { 
  78.              
  79.             Camera.Parameters param = camera.getParameters(); 
  80.             if(this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE){ 
  81.                 //如果是豎屏 
  82.                 param.set("orientation""portrait"); 
  83.                 //在2.2以上可以使用 
  84.                 //camera.setDisplayOrientation(90); 
  85.             }else
  86.                 param.set("orientation""landscape"); 
  87.                 //在2.2以上可以使用 
  88.                 //camera.setDisplayOrientation(0);               
  89.             } 
  90.             //首先獲取系統設備支持的所有顏色特效,有復合我們的,則設置;否則不設置 
  91.             List<String> colorEffects = param.getSupportedColorEffects(); 
  92.             Iterator<String> colorItor = colorEffects.iterator(); 
  93.             while(colorItor.hasNext()){ 
  94.                 String currColor = colorItor.next(); 
  95.                 if(currColor.equals(Camera.Parameters.EFFECT_SOLARIZE)){ 
  96.                     param.setColorEffect(Camera.Parameters.EFFECT_SOLARIZE); 
  97.                     break
  98.                 } 
  99.             } 
  100.             //設置完成需要再次調用setParameter方法才能生效 
  101.             camera.setParameters(param); 
  102.              
  103.             camera.setPreviewDisplay(holder); 
  104.              
  105.             /** 
  106.              * 在顯示了預覽后,我們有時候希望限制預覽的Size 
  107.              * 我們并不是自己指定一個SIze而是指定一個Size,然后 
  108.              * 獲取系統支持的SIZE,然后選擇一個比指定SIZE小且最接近所指定SIZE的一個 
  109.              * Camera.Size對象就是該SIZE。 
  110.              *  
  111.              */ 
  112.             int bestWidth = 0
  113.             int bestHeight = 0
  114.              
  115.             List<Camera.Size> sizeList = param.getSupportedPreviewSizes(); 
  116.             //如果sizeList只有一個我們也沒有必要做什么了,因為就他一個別無選擇 
  117.             if(sizeList.size() > 1){ 
  118.                 Iterator<Camera.Size> itor = sizeList.iterator(); 
  119.                 while(itor.hasNext()){ 
  120.                     Camera.Size cur = itor.next(); 
  121.                     if(cur.width > bestWidth && cur.height>bestHeight && cur.width <MAX_WIDTH && cur.height < MAX_HEIGHT){ 
  122.                         bestWidth = cur.width; 
  123.                         bestHeight = cur.height; 
  124.                     } 
  125.                 } 
  126.                 if(bestWidth != 0 && bestHeight != 0){ 
  127.                     param.setPreviewSize(bestWidth, bestHeight); 
  128.                     //這里改變了SIze后,我們還要告訴SurfaceView,否則,Surface將不會改變大小,進入Camera的圖像將質量很差 
  129.                     surfaceView.setLayoutParams(new LinearLayout.LayoutParams(bestWidth, bestHeight)); 
  130.                 } 
  131.             } 
  132.             camera.setParameters(param); 
  133.         } catch (Exception e) { 
  134.             // 如果出現異常,則釋放Camera對象 
  135.             camera.release(); 
  136.         } 
  137.          
  138.         //啟動預覽功能 
  139.         camera.startPreview(); 
  140.          
  141.     } 
  142.     @Override 
  143.     public void surfaceDestroyed(SurfaceHolder holder) { 
  144.         // 當Surface被銷毀的時候,該方法被調用 
  145.         //在這里需要釋放Camera資源 
  146.         camera.stopPreview(); 
  147.         camera.release(); 
  148.          
  149.     } 
  150.     @Override 
  151.     public void onPictureTaken(byte[] data, Camera camera) { 
  152.         // data是一個原始的JPEG圖像數據, 
  153.         //在這里我們可以存儲圖片,很顯然可以采用MediaStore 
  154.         //注意保存圖片后,再次調用startPreview()回到預覽 
  155.         Uri imageUri = this.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues()); 
  156.         try { 
  157.             OutputStream os = this.getContentResolver().openOutputStream(imageUri); 
  158.             os.write(data); 
  159.             os.flush(); 
  160.             os.close(); 
  161.         } catch (Exception e) { 
  162.             // TODO: handle exception 
  163.             e.printStackTrace(); 
  164.         } 
  165.          
  166.         camera.startPreview(); 
  167.     } 
  168.      
責任編輯:徐川 來源: OSChina
相關推薦

2014-08-12 09:54:05

Android定制化啟動器

2024-03-15 08:00:00

2024-09-14 14:09:40

2024-08-22 13:40:08

開發者GPT-4oepoch

2022-08-21 14:05:54

調試工具CDP

2021-09-02 07:04:45

Docker鏡像語言

2024-03-29 15:43:32

大型語言模型人工智能

2014-05-22 14:15:45

Android系統定制小技巧

2009-10-10 16:31:13

VB開發定制控件

2014-03-13 09:46:36

Linux操作系統開源

2011-04-02 11:46:50

UI嵌入式開發

2011-07-25 09:24:07

2014-08-26 10:05:37

框架開發AngularJS

2023-11-26 00:17:21

2016-03-02 10:27:16

Python定制化Eclipse IDE

2017-03-08 17:47:50

數據

2023-02-13 15:54:49

2013-01-09 17:22:38

Android開發Camera

2019-04-08 16:41:55

Oomox圖形應用Linux

2019-04-04 14:23:08

GTK2GTK3Linux
點贊
收藏

51CTO技術棧公眾號

黄页在线观看免费| 99热这里是精品| 国产探花在线精品| 精品视频在线看| 欧美一级特黄aaaaaa在线看片| 亚洲乱码一区av黑人高潮| 五月天av影院| 五月天婷婷激情网| 久久99精品国产.久久久久久| 欧美成人一二三| 超碰97人人干| 天堂久久av| 色婷婷久久久亚洲一区二区三区| 一区二区日本| 无码精品视频一区二区三区| 久久99久久久久久久久久久| 午夜精品久久久久久久久久久久久| 夜夜春很很躁夜夜躁| 中文一区二区三区四区| 色老头久久综合| 欧美一区二区激情| 91最新在线| 国产99久久久国产精品潘金网站| 国产精品久久久久久久久借妻| 国产一级免费av| 忘忧草精品久久久久久久高清| 亚洲乱码一区二区| 国产十八熟妇av成人一区| 四虎国产精品成人免费影视| 欧美性xxxxx极品娇小| 一本色道久久88亚洲精品综合| jizz在线观看| 久久久久久久久久久99999| 国产精品免费aⅴ片在线观看| 美女国内精品自产拍在线播放| 日韩人妻一区二区三区| 九九热hot精品视频在线播放| 欧美高清性hdvideosex| 天天干天天综合| 怡红院成人在线| 狠狠色狠狠色综合日日五| 国产在线拍揄自揄拍无码| av男人的天堂在线| 国产欧美1区2区3区| 久久久久久高清| 污污的视频网站在线观看| 成人一区在线观看| 成人资源视频网站免费| 国产av无码专区亚洲av| 国产一区二区伦理片| 91精品久久久久久久久久另类| 亚洲欧美自拍视频| 免费日韩av片| 欧美一级成年大片在线观看| 久久免费激情视频| 美女精品在线| 国产成人精品a视频一区www| 国产精品熟女视频| 日韩黄色免费电影| 国产欧美一区二区三区四区| 一级特黄aaa大片在线观看| 久久精品国产亚洲高清剧情介绍| 国产日韩视频在线观看| 亚洲综合精品国产一区二区三区 | 黄色a级片免费看| 羞羞视频在线免费国产| 亚洲综合清纯丝袜自拍| 欧美中文字幕在线观看视频 | 国产免费a级片| 波多野结衣欧美| 精品夜色国产国偷在线| 亚洲久久久久久久| 欧美成人直播| 欧美激情视频网站| 欧美 日韩 精品| 日本亚洲一区二区| 国产专区一区| 亚洲天堂成人在线| 国产免费嫩草影院| 亚洲天堂免费| 国内外成人免费激情在线视频| 91九色丨porny丨肉丝| 噜噜噜在线观看免费视频日韩| 国产精品99一区| 国产精品国产av| 99久久久国产精品免费蜜臀| 日韩亚洲欧美精品| 成人日批视频| 欧美性生交xxxxx久久久| 国产一区二区在线免费播放| 玖玖精品一区| 亚洲欧美成人网| 最新中文字幕av| 黄色免费成人| 国产精品久久久av| 亚洲精品久久久久久久久久| 久久精品视频一区二区三区| 日本老太婆做爰视频| 在线最新版中文在线| 91精品蜜臀在线一区尤物| 国产不卡一二三| 欧美国产一级| 欧美最顶级丰满的aⅴ艳星| 伊人网av在线| 久久嫩草精品久久久精品| 国内外成人激情免费视频| 日本学生初尝黑人巨免费视频| 视频在线这里都是精品| 亚洲国产日日夜夜| 国产一级特黄a大片免费| 精品国内亚洲2022精品成人| 日韩在线观看高清| 黄色在线观看国产| 国产酒店精品激情| 亚洲免费不卡| 日韩av福利| 亚洲国产日韩欧美在线动漫 | 亚洲精品美腿丝袜| 天天爱天天操天天干| 欧美黑白配在线| 欧美精品一区三区| 夜夜躁狠狠躁日日躁av| 久久久三级国产网站| 日韩视频免费播放| 日韩欧美另类中文字幕| 色妞在线综合亚洲欧美| 久久久精品视频网站| 成a人片国产精品| 91精品国产毛片武则天| 99综合久久| 中文字幕免费精品一区高清| 麻豆成人免费视频| 久久综合九色综合97婷婷| 免费超爽大片黄| 白白在线精品| 欧美激情亚洲另类| www.av网站| 亚洲伦在线观看| 亚洲午夜精品一区| 91日韩视频| 91精品国产自产在线观看永久| 成黄免费在线| 欧美性感一区二区三区| 成人无码av片在线观看| 日韩黄色免费网站| 日韩精品欧美专区| 欧美色片在线观看| 国产亚洲视频在线| 国产精品露脸视频| 国产日产欧美一区| 丝袜制服一区二区三区| 国产探花在线精品| 日本亚洲欧洲色| 国产视频在线看| 欧美色倩网站大全免费| 91传媒免费观看| 精品亚洲aⅴ乱码一区二区三区| 伊人狠狠色丁香综合尤物| 国产精品亚洲成在人线| 在线观看不卡av| 中文字幕高清在线免费播放| 国产欧美va欧美不卡在线 | 国产老肥熟一区二区三区| 中文字幕精品在线播放| 国产成人tv| 国产97人人超碰caoprom| eeuss影院在线播放| 欧美一区二视频| 日本特黄一级片| 久久亚洲精华国产精华液| 亚洲成熟丰满熟妇高潮xxxxx| 欧美日韩国产高清电影| 成人精品在线观看| 男男gaygays亚洲| 亚洲精品成人久久| 久久久999久久久| 亚洲人成网站精品片在线观看| 一级黄色大片免费看| 亚洲少妇诱惑| 亚洲图片欧洲图片日韩av| 蜜桃在线一区| 57pao国产精品一区| 在线看免费av| 精品国产免费一区二区三区香蕉 | 日韩电影免费观看| 精品小视频在线| 中文字幕资源网| 亚洲影视在线播放| 亚洲av无码一区二区三区人| 国产乱人伦精品一区二区在线观看 | 91亚洲自偷观看高清| 国产高清自拍99| 色综合天天色| 97国产精品视频人人做人人爱| 国产三级视频在线| 精品99一区二区| 国产精品免费无遮挡无码永久视频| 亚洲天堂a在线| 91久久免费视频| 国产剧情一区二区| 亚欧在线免费观看| 日韩视频二区| 久久天天东北熟女毛茸茸| 欧美男男gaytwinkfreevideos| 亚洲专区中文字幕| 青青热久免费精品视频在线18| 久久免费福利视频| 男人天堂久久久| 亚洲女在线观看| 色香蕉在线视频| 欧美一区二区三区精品| 久久精品久久久久久久| 亚洲一区二区在线播放相泽| 国产精品密蕾丝袜| 成人av网站免费观看| 午夜激情视频网| 男女视频一区二区| 国产成人无码a区在线观看视频| 久久久久久免费视频| 日本欧美色综合网站免费| 精品国产一区二区三区不卡蜜臂 | 亚洲愉拍自拍另类高清精品| 亚洲欧美卡通动漫| 国产欧美日韩在线| 免费在线观看你懂的| 成人av免费在线| 亚洲 自拍 另类 欧美 丝袜| 粉嫩久久久久久久极品| 在线视频亚洲一区| 欧美一级高潮片| 亚洲天堂中文字幕| 男女男精品视频网站| 日本一区免费视频| 一区二区精品免费| 久久久久久久久久久久久久久99| 国产精品无码电影| 成人99免费视频| av av在线| 成人av在线一区二区三区| 女同性αv亚洲女同志| 国产一区二区在线观看视频| 亚洲视频一二三四| 久久精品国产亚洲一区二区三区| 五月婷婷之综合激情| 日韩电影在线免费观看| 精品久久久久久久无码| 水蜜桃久久夜色精品一区的特点| 亚洲人成色77777| 视频一区视频二区中文| 亚洲欧美另类动漫| 91视频啊啊啊| 久久蜜桃一区二区| xxxx日本黄色| 国产精品超碰97尤物18| 日韩欧美国产成人精品免费| 日韩理论在线观看| 国产盗摄一区二区三区在线| 亚洲综合清纯丝袜自拍| 国产精品第一页在线观看| 欧美日韩国产区| 中文字幕av影院| 欧美色综合网站| 国产三级在线观看视频| 精品剧情v国产在线观看在线| 五月婷婷在线播放| 伊人久久男人天堂| 国内精品久久久久久野外| 久久精品成人欧美大片| 狂野欧美激情性xxxx欧美| 69久久夜色精品国产69| 蜜桃视频成人m3u8| 91精品久久久久久久久久久久久| 51亚洲精品| 欧美日韩大片一区二区三区| 91亚洲国产| 91免费黄视频| 日韩av在线播放中文字幕| 又色又爽又黄视频| 成人ar影院免费观看视频| 亚洲人成人无码网www国产| 综合久久一区二区三区| 国产真人真事毛片| 91传媒视频在线播放| 国产农村妇女毛片精品久久| 亚洲成人网久久久| eeuss影院www在线观看| 欧美二区在线播放| 欧美性片在线观看| 成人黄动漫网站免费| 国产成人精品免费视| 女女百合国产免费网站| 亚洲在线日韩| 日韩在线一区视频| 91原创在线视频| 26uuu成人网| 一道本成人在线| www.黄色av| 一区二区三区视频免费在线观看 | 欧美另类极品videosbest最新版本 | 日本高清视频一区| 激情综合婷婷| 日本视频精品一区| 在线高清一区| 波多野结衣在线免费观看| 91香蕉视频污| 永久免费看黄网站| 欧美亚洲动漫精品| 少妇一区二区三区四区| 久久精品国产2020观看福利| 芒果视频成人app| 高清av免费一区中文字幕| 色综合狠狠操| 成年网站在线免费观看| 国产成都精品91一区二区三| 亚洲一级片在线播放| 精品久久久久久久久久| 99在线观看免费| 色偷偷88888欧美精品久久久| 999精品在线观看| 天天射成人网| 国产一级特黄a大片免费| www激情久久| 日韩欧美中文字幕一区二区| 日韩一区二区在线免费观看| 日本韩国在线视频爽| 国产成人精品电影久久久| 欧美成人一区在线观看| 日韩av在线播放不卡| 懂色av噜噜一区二区三区av| www.99re7| 7777精品伊人久久久大香线蕉的| xxxxx日韩| 国产精品久久久久久久午夜| 国偷自产av一区二区三区| 黄色一级片国产| 国产在线不卡一卡二卡三卡四卡| 国产精品18在线| 欧美日韩亚洲综合| av资源在线观看免费高清| 日本精品免费一区二区三区| 日韩有码av| 能在线观看的av| 久久蜜桃av一区精品变态类天堂| 国产奶水涨喷在线播放| 亚洲国产精品网站| 久久男人av资源站| 麻豆久久久9性大片| 麻豆成人在线| 美女网站视频色| 欧美精品丝袜久久久中文字幕| 日本天堂在线观看| 91色视频在线导航| 欧美精品三区| www.四虎精品| 亚洲v日本v欧美v久久精品| 人妻精品一区二区三区| 91产国在线观看动作片喷水| 亚州综合一区| 91视频免费版污| 国产精品久线观看视频| 99久久国产免费| 欧美极品少妇全裸体| 任你躁在线精品免费| 久久精品99国产| 国产精品三级电影| 国产毛片毛片毛片毛片| 欧美黑人xxx| 日韩欧美四区| 亚洲精品久久久久久宅男| 亚洲精品你懂的| 超碰在线播放97| 91精品国产一区| 成人一区二区| 色欲欲www成人网站| 精品久久久国产| av在线电影院| 成人在线免费网站| 久久天天综合| 天天综合天天做| 日韩av中文字幕在线播放| 91在线亚洲| 4444亚洲人成无码网在线观看| www精品美女久久久tv| 亚洲综合五月天婷婷丁香| 久久青草福利网站| 奇米影视亚洲| 国产大学生视频| 欧美三级一区二区| 国产蜜臀av在线播放| 日本不卡在线播放| 国产成人午夜视频| 欧美国产一级片| 欧美精品电影在线| 欧美自拍偷拍| 欧亚乱熟女一区二区在线| 欧美日韩电影在线| 亚洲黄色中文字幕| 热久久最新网址| 国产精品视频一区二区三区不卡| 亚洲精品一级片|