精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产一区二区导航在线播放| 色先锋久久影院av| 亚洲男人天堂一区| 国产一区免费观看| 国产99免费视频| 97视频热人人精品免费| 精品久久久三级丝袜| 成人在线免费在线观看| 国产二区三区在线| 91在线云播放| 91在线观看欧美日韩| 亚洲精品www久久久久久| 欧美亚洲在线日韩| 亚洲国产精品人人爽夜夜爽| 午夜在线观看av| 国产天堂在线播放视频| 欧美激情一区在线观看| 国产乱码精品一区二区三区日韩精品 | 欧美日韩一级大片| 精品国产成人| 亚洲的天堂在线中文字幕| 污污的网站18| 国产精品av一区二区三区| 亚洲品质自拍视频| 日韩国产欧美一区| 牛牛热在线视频| 成人h动漫精品一区二| 国产在线视频一区| 亚洲欧美偷拍一区| 精品69视频一区二区三区Q| 在线成人中文字幕| 亚洲午夜福利在线观看| 老牛国内精品亚洲成av人片| 777久久久精品| 无码人妻精品一区二区三区66| 丰满大乳少妇在线观看网站| 亚洲视频你懂的| 亚洲国产午夜伦理片大全在线观看网站 | 精品久久人人做人人爰| 嫩草影院国产精品| 成人看片在线观看| 一本一本久久a久久精品综合麻豆| 国产传媒久久久| 九七久久人人| 中文字幕在线不卡| 亚洲精品一区二区三区四区五区 | 一级特黄aaa| 日韩精品一二三| 欧美一级淫片丝袜脚交| 国产福利拍拍拍| 国产深夜精品| 欧美一级淫片播放口| 毛片视频网站在线观看| 国产精品腿扒开做爽爽爽挤奶网站| 欧美黑人狂野猛交老妇| 欧美日韩一级大片| 亚洲午夜激情在线| 久久久久国产精品免费| www.av视频在线观看| 亚洲第一黄色| 97超级碰碰人国产在线观看| 久久不卡免费视频| 久久香蕉精品| 国产精品免费一区豆花| 中文字幕手机在线视频| 欧美96一区二区免费视频| 国产精品专区一| 97精品人妻一区二区三区在线| 久久99热99| 91pron在线| 亚洲精品国产精| 久久众筹精品私拍模特| 欧洲高清一区二区| 在线视频婷婷| 一区二区三区欧美视频| 免费网站永久免费观看| 老牛影视精品| 欧美在线不卡一区| 午夜av中文字幕| 日韩精品视频在线看| 亚洲成色999久久网站| 韩国无码一区二区三区精品| 神马影视一区二区| 精品国产欧美一区二区三区成人| 国产日韩欧美在线观看视频| 在线精品福利| 国产成人亚洲精品| av中文字幕第一页| 久久综合给合久久狠狠狠97色69| 性欧美大战久久久久久久免费观看| 黄色av电影在线播放| 亚洲午夜电影网| 国产激情在线观看视频| 成人在线视频www| 日韩精品黄色网| 欧美色图17p| 黄色亚洲在线| 69av在线视频| 国产老妇伦国产熟女老妇视频| 丰满少妇久久久久久久| 日韩欧美激情一区二区| 91网址在线观看| 91成人在线精品| 乳色吐息在线观看| 国产伦精品一区二区三区视频| 久久亚洲一区二区三区四区五区高| 国产系列精品av| 久久99精品一区二区三区三区| 国产精品免费视频一区二区| 2017亚洲天堂1024| 黄色成人av在线| 国产探花在线观看视频| 国产精品免费99久久久| 欧美激情视频一区二区| 成人毛片一区二区三区| 99久久综合精品| 亚洲区成人777777精品| 忘忧草在线www成人影院| 日韩精品影音先锋| 国产极品视频在线观看| 一区二区三区福利| 97人人干人人| 午夜在线免费观看视频| 色综合久久久网| 一级少妇精品久久久久久久| 香蕉av一区二区 | vam成人资源在线观看| 亚洲人午夜色婷婷| 日韩成人免费在线观看| 国产福利一区二区三区视频在线 | 国产精品视频一区二区三区经| 日本在线免费| 在线免费视频一区二区| 手机av免费看| 国产精品久久久免费| 国产精品免费一区二区三区在线观看| 在线观看av的网站| 欧美在线观看视频一区二区| 黑人巨大精品欧美| 国产日韩1区| 久久99九九| 国产中文在线播放| 亚洲精品国产suv| 国产在线欧美在线| 国产.欧美.日韩| 91免费国产精品| 在线播放一区二区精品视频| 久久夜色撩人精品| 国产免费的av| 伊人性伊人情综合网| 四川一级毛毛片| 欧美黄色aaaa| 丁香五月网久久综合| 国产白丝在线观看| 亚洲国产99精品国自产| 日韩成人免费在线视频| 91啪亚洲精品| 能看的毛片网站| 精品免费一区二区| 国产欧美精品xxxx另类| 大片免费在线看视频| 日韩亚洲欧美一区| 国产午夜小视频| 久久亚洲精品小早川怜子| 日本熟妇人妻xxxxx| 精品盗摄女厕tp美女嘘嘘| 国产精品美女av| 超碰在线免费公开| 精品精品国产高清一毛片一天堂| 国产中文字幕免费| 93久久精品日日躁夜夜躁欧美| 日韩中文字幕二区| 成人羞羞视频在线看网址| 91久久精品国产| 日本大胆在线观看| 亚洲精品久久久久久下一站| 五月天婷婷导航| 中文字幕亚洲成人| 91成人在线观看喷潮蘑菇| 国产欧美一区二区三区国产幕精品| 欧美xxxx黑人又粗又长密月| 欧美爱爱视频| 久久久久久久久电影| 青青草手机在线| 欧美日韩1234| 日韩xxx高潮hd| 国产精品白丝在线| 中国极品少妇videossexhd| 日韩精品一二三| 久久久久久久久影视| 亚洲+小说+欧美+激情+另类| 国产精品最新在线观看| h片精品在线观看| 中文字幕9999| 亚洲精品911| 欧美日韩免费不卡视频一区二区三区 | 亚洲蜜桃精久久久久久久| 久久久成人网| 欧美日韩综合不卡| 永久免费看黄网站| 久久女同互慰一区二区三区| 天堂在线一区二区三区| 亚洲精品一级| 亚洲成年人专区| 中文字幕亚洲影视| 91丨九色丨国产| 日本综合视频| 久久久久久中文字幕| 中文字幕在线播放| 亚洲欧美制服第一页| www.xxx国产| 欧美视频一区二区三区四区 | 欧美日韩午夜剧场| 最新一区二区三区| 国产日韩欧美精品综合| www.四虎在线| 国产一区视频在线看| 成年人在线看片| 亚洲高清免费| 乱熟女高潮一区二区在线| 青青草国产成人a∨下载安卓| 国产伦视频一区二区三区| 2019中文亚洲字幕| 国产精品美女免费看| 欧美gv在线| 欧美韩日一区二区| av在线播放观看| 神马久久桃色视频| 国产在线播放av| 亚洲欧美另类自拍| 熟妇高潮一区二区高潮| 日韩精品一区二区三区在线观看 | 国产精品老女人| 亚洲综合色自拍一区| 亚洲精品卡一卡二| 国产精品美女一区二区三区| 日韩精品无码一区二区三区久久久| 99re成人精品视频| 漂亮人妻被黑人久久精品| 国产suv一区二区三区88区| 五月天六月丁香| 国产精品资源站在线| 爱情岛论坛成人| 人人狠狠综合久久亚洲| 亚洲第一中文av| 美国毛片一区二区三区| jizz18女人| 九九久久精品视频| 婷婷中文字幕在线观看| 国产综合成人久久大片91| 中文字幕久久av| 激情综合网激情| 国产毛片久久久久久| 韩日精品视频一区| 最好看的中文字幕| 国产suv一区二区三区88区| 亚洲麻豆一区二区三区| 成人高清视频在线观看| 亚洲图片欧美另类| 91免费观看在线| 国产免费一区二区三区网站免费| 久久九九久久九九| 蜜桃av免费在线观看| 亚洲少妇最新在线视频| 九九热国产在线| 岛国av在线不卡| 精品一区二区无码| 欧美日韩和欧美的一区二区| 99国产精品久久久久久久成人| 精品国精品国产| 丝袜+亚洲+另类+欧美+变态| 亚洲性生活视频在线观看| 在线免费黄色| 欧美大片免费看| 中文字幕乱码在线播放| 国产精品欧美风情| 日韩精品久久久久久久软件91| 精品国产综合| 欧美丝袜一区| 亚洲理论电影在线观看| 日韩精品三区四区| 99久久99精品| 91蜜桃视频在线| 国产精品视频看看| 激情成人在线视频| 亚洲专区第一页| 亚洲成人1234| 秋霞午夜理伦电影在线观看| 久久久噜噜噜久久久| 99re66热这里只有精品4| 亚洲伊人久久综合| 亚洲欧美tv| 日韩视频一二三| 青娱乐精品视频| 日本不卡视频一区| 国产精品美女一区二区三区| 国产一级二级毛片| 欧美日韩久久不卡| 手机av在线免费观看| 久久精品最新地址| 成人美女黄网站| 99蜜桃在线观看免费视频网站| 九九热线有精品视频99| 少妇久久久久久被弄到高潮| 奇米影视在线99精品| 午夜免费福利影院| 亚洲女同一区二区| 91黑人精品一区二区三区| 日韩欧美一二区| a中文在线播放| 2019中文字幕免费视频| 免费观看在线一区二区三区| 婷婷四月色综合| 久久国产福利| 一级黄色片毛片| 中文字幕综合网| 中文字幕日日夜夜| 亚洲欧美精品伊人久久| 国产91足控脚交在线观看| 91久久夜色精品国产网站| 国产精品一在线观看| 国产乱子伦农村叉叉叉| 成人妖精视频yjsp地址| 国产激情无码一区二区三区| 精品污污网站免费看| 国产无套粉嫩白浆在线2022年| 91国产精品视频在线| 911亚洲精品| 男同互操gay射视频在线看| 青娱乐精品在线视频| 91l九色lporny| 色噜噜久久综合| 裸体xxxx视频在线| 5566日本婷婷色中文字幕97| 国产精品中文字幕制服诱惑| 99re6这里有精品热视频| 国产一区在线视频| 男人晚上看的视频| 欧美日韩一区二区三区高清| 成人jjav| 国产精品一区二区电影| 欧美色图国产精品| 亚洲欧美另类动漫| 国产精品视频第一区| 中文字幕码精品视频网站| 尤物九九久久国产精品的特点 | 欧美日韩免费一区二区三区视频| 国产系列电影在线播放网址| 日韩美女激情视频| 精品国产99| 国产小视频精品| 国产精品久久久久久福利一牛影视| 日韩精品在线一区二区三区| 中文字幕亚洲欧美日韩在线不卡 | 久久久精品成人| 欧美亚洲国产怡红院影院| 1024视频在线| 91久久久在线| 韩日欧美一区| 欧美精品欧美极品欧美激情| 色综合中文字幕国产| 川上优的av在线一区二区| 国产精品日韩一区| 亚洲综合小说| 无码人妻丰满熟妇啪啪网站| 偷拍日韩校园综合在线| 国产资源在线看| 成人日韩av在线| 国产综合婷婷| 自拍偷拍视频亚洲| 777久久久精品| 黄在线观看免费网站ktv| 欧美日韩国产免费一区二区三区| 美女爽到高潮91| 麻豆91精品91久久久| 亚洲欧美国产va在线影院| 日本久久久久| 国内精品视频一区二区三区| 久久久精品国产免大香伊| 91成年人视频| 性欧美办公室18xxxxhd| 成人中文视频| 欧美丰满熟妇bbb久久久| 色婷婷亚洲精品| 成人a在线视频免费观看| 国产在线精品一区| 免费观看在线色综合| 免费麻豆国产一区二区三区四区| 亚洲老头同性xxxxx| crdy在线观看欧美| 免费观看精品视频| 亚洲精品视频免费观看| 日韩一区av| 3d动漫啪啪精品一区二区免费| 国产日韩一区二区三区在线| 日日噜噜夜夜狠狠久久波多野| 国产午夜精品久久久| 日本免费在线一区| www.玖玖玖| 亚洲黄色小说网站|