| 8 | 1/1 | 返回列表 |
| 查看: 1978 | 回復: 7 | ||||
qqhegg榮譽版主 (文壇精英)
珊瑚小美-----小元家的九妹
|
[交流]
android 學習筆記--------camera 已有5人參與
|
|
最近學習android照相機,我所說的是自定義相機而不是調用系統(tǒng)自帶的相機功能 android的camera其實十分的簡單 1.想要進行camera的自定義,首先必須使用surfaceView畫布,并且需要繼承surfaceHolder callback 2.然后我們會看到一下三個部分:surfaceChanged.surfaceCreated,和surfaceDestroyed。 3.然后進行代碼的關鍵部分的編寫 首先我們需要初始化相機,在surfaceChanged進行 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { //定義參數 Camera.Parameters parameters = mCamera.getParameters(); //設置照片的格式 parameters.setPictureFormat(PixelFormat.JPEG); //設置照片的大小,對于高版本的相機不用推薦直接設置,因為相機可能不支持下面討論 parameters.setPictureSize(320, 480); //這句對于2.2以下必須,2.3不需要這句 mCamera.setParameters(parameters); //開始預覽 mCamera.startPreview(); } 在surfaceCreated部分需要進行判斷 public void surfaceCreated(SurfaceHolder holder) { if(!IspreView) { mCamera = Camera.open(); //對于這個部分經常會出錯,從android API上我們可以發(fā)現2.2的是這種語法,但是對于2.3,它還添加了Camera.open(int id);對于這個id提供了一個范圍,我一般采用0,但是很多時候還是會報錯,具體原因不祥 } try { mCamera.setPreviewDisplay(holder); } catch (IOException e) { mCamera.release(); mCamera = null; } 在這邊一定要釋放掉相機資源,不然相機在返回以后再拍照時,非常有可能會報錯,我經常把資源釋放放在catch語句的后面。 try { mCamera.setPreviewDisplay(holder); } catch (IOException e) { } mCamera.release(); mCamera = null; } 對于surfaceDestroyed部分十分簡單 public void surfaceDestroyed(SurfaceHolder holder) { mCamera.stopPreview(); mCamera = null; } 4.如何進行拍照呢 一般情況下是調用camera的takepicture函數 public boolean onKeyUp(int keyCode, KeyEvent event) { // TODO Auto-generated method stub switch (keyCode) { case KeyEvent.KEYCODE_DPAD_CENTER: mPreview.takePicture(); break; } return true; } takepicture一共有3個參數 前面的2個可以設置為null 最后一個參數最重要下面的代碼是將我們拍照的圖片保存起來 private PictureCallback jpegCallback = new PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { cameraBitmap = BitmapFactory.decodeByteArray(data, 0, data.length); File myCaptureFile = new File("/sdcard/camera/camera1.jpg" ; try { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile)); cameraBitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos); bos.flush(); bos.close(); Canvas canvas = mHolder.lockCanvas(); canvas.drawBitmap(cameraBitmap, 0, 0, null); mHolder.unlockCanvasAndPost(canvas); } catch (Exception e) { e.getStackTrace(); } } }; 因為我做的是一個小項目,camera只是其中一個部分,所以學習是參考網上的代碼進行。現在把鏈接給出來http://www.cnblogs.com/chiefCTO/archive/2011/09/27/2193637.html 這是博客園的鏈接,歡迎大家共同探討和研究 對于camera這個部分有很多的問題存在,比如資源,比如打開語句,大家實際應用時就會發(fā)現,希望可以一起探討呵呵 |
android學習筆記 |

送鮮花一朵
|
榮譽版主 (文壇精英)
珊瑚小美-----小元家的九妹

木蟲 (職業(yè)作家)
夢未央


榮譽版主 (文壇精英)
珊瑚小美-----小元家的九妹

銅蟲 (初入文壇)

| 8 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 材料考研調劑 +5 | Gs大王 2026-04-02 | 5/250 |
|
|---|---|---|---|---|
|
[考研] 江蘇科技大學招材料研究生 +4 | Su032713. 2026-04-01 | 5/250 |
|
|
[考研] 273求調劑 +19 | 李芷新1 2026-03-31 | 19/950 |
|
|
[考研] 286求調劑 +16 | PolarBear11 2026-03-26 | 16/800 |
|
|
[考研] 307分求調劑 +14 | (o~o) 2026-03-31 | 15/750 |
|
|
[考研] 一志愿211,335分,0856,求調劑院校和導師 +11 | 傾____蕭 2026-03-27 | 12/600 |
|
|
[考研] 330分求調劑 +11 | qzenlc 2026-03-29 | 11/550 |
|
|
[考研] 環(huán)境工程調劑 +9 | hyzzzzzzz. 2026-04-01 | 9/450 |
|
|
[考研] 0805求調劑 +6 | 是水分 2026-03-31 | 6/300 |
|
|
[考研] 求調劑:085600材料與化工,考材科基,總分319 +17 | 678lucky 2026-03-31 | 21/1050 |
|
|
[考研] 一志愿:西北大學,英一數一408-284分求調劑 +7 | 12.27 2026-03-27 | 7/350 |
|
|
[考研] 318求調劑 +10 | 陳晨79 2026-03-30 | 10/500 |
|
|
[考研] 276求調劑 +3 | 趙久華 2026-03-29 | 3/150 |
|
|
[考研] 一志愿中海洋320化學工程與技術學碩求調劑 +8 | 披星河 2026-03-30 | 8/400 |
|
|
[考研] 297求調劑 +17 | 田洪有 2026-03-26 | 18/900 |
|
|
[考研] 求調劑 +7 | 青春裁為三截 2026-03-29 | 7/350 |
|
|
[考研] 環(huán)境科學與工程334分求調劑 +6 | 王一一依依 2026-03-30 | 8/400 |
|
|
[考研] 332求92調劑 +8 | 蕉蕉123 2026-03-28 | 8/400 |
|
|
[考研] 08開頭275求調劑 +4 | 拉誰不重要 2026-03-26 | 4/200 |
|
|
[考研] 考研調劑 +9 | 小蠟新筆 2026-03-26 | 9/450 |
|