国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

自定義拍照

2019-11-08 00:28:20
字體:
來源:轉載
供稿:網友

自定義拍照

拍照實現步驟:

 界面使用SurfaceView控件,顯示照相機的畫面

 SurfaceView接受攝像頭界面變化的信息

 重寫三個方法

保存

實現效果:

界面使用SurfaceView控件,顯示照相機的畫面

      布局文件

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"    android:layout_width="match_parent" android:layout_height="match_parent"    tools:context="com.example.p_.MainActivity"><SurfaceView    android:layout_width="match_parent"    android:layout_height="match_parent"    android:id="@+id/sfv_mian"    /><Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="拍照"    android:onClick="pz"    /></RelativeLayout>

SurfaceView接受攝像頭界面變化的信息

//SurfaceView接受攝像頭界面變化的信息        sfv_mian.getHolder().addCallback(new SurfaceHolder.Callback);//重寫三個方法

重寫三個方法

具體邏輯代碼在三個方法中

 //預覽界面被創建時,調用一般在這里打開照相機和設置照相機的一些參數            @Override            public void surfaceCreated(SurfaceHolder surfaceHolder) {                //開啟攝像頭(Camera.open()就是后面攝像頭,可以填參數的可以設置前后攝像頭)                camera = Camera.open();                //給攝像頭設置參數                Camera.Parameters parameters = camera.getParameters();                // 設置每秒3棧                //parameters.setPictureFormat(3);                // 設置照片的輸出格式                parameters.setPictureFormat(PixelFormat.JPEG);                // 設置照片的質量(第一個參數:是規定了的,                // 第二個參數:0-100(越大越質量好,但是是根據手機像素,設置85差不多))                parameters.set("jpeg-quality",85);                // 給照相機設置參數                camera.setParameters(parameters);                //將攝像頭的畫面顯示到SurfaceView控件上                try {                    camera.setPReviewDisplay(sfv_mian.getHolder());                    // 開始預覽                    camera.startPreview();                } catch (IOException e) {                    e.printStackTrace();                }            }            //當預覽界面的格式和大小發生改變時,觸發            @Override            public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {            }            //當預覽界面關閉時,觸發 一般在這里執行銷毀照相機的操作,釋放內存            @Override            public void surfaceDestroyed(SurfaceHolder surfaceHolder) {            }        });

保存

   當然保存要將字節轉成Bitmap

                        //第一個參數:快門,第二個參數存放raw文件下,第三個參數想存到那就到那       camera.takePicture(null, null, new Camera.PictureCallback() {           @Override           public void onPictureTaken(byte[] bytes, Camera camera) {               //將字節改變成圖片               //壓縮               Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);               try {                   FileOutputStream fileOutputStream=new FileOutputStream("/mnt/sdcard/DCIM/王琰"+System.currentTimeMillis()+".png");                   bitmap.compress(Bitmap.CompressFormat.PNG,85,fileOutputStream);                   //停止                   camera.stopPreview();                   //重新拍照                   camera.startPreview();               }catch (Exception e){               }           }       });

添加權限(清單文件)

第一個權限是照相機的權限

第二個權限是獲取寫文件的權限

<uses-permission android:name="android.permission.CAMERA" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平利县| 富平县| 日土县| 四平市| 辽阳县| 焉耆| 华池县| 象山县| 天峨县| 琼中| 湖北省| 万盛区| 赫章县| 萨嘎县| 彭阳县| 五华县| 海盐县| 运城市| 玉林市| 建宁县| 华池县| 蓬溪县| 嘉鱼县| 清水河县| 南投县| 舞钢市| 神池县| 侯马市| 睢宁县| 福安市| 延寿县| 霍林郭勒市| 淮阳县| 登封市| 南丰县| 洛浦县| 罗城| 景宁| 杨浦区| 汤原县| 成武县|