1. 程式人生 > >Android自定義相機,帶邊框截圖

Android自定義相機,帶邊框截圖

專案需求:要實現自定義拍照介面,並且只取框框中的內容。

問題點:1、通過Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)方式自動對焦,沒有實現觸控對焦

       2、myParameters.setPreviewSize(1280, 720)  myParameters.setPictureSize(2048, 1152); 需根據機型選定,否則會報setParameters錯誤,嘗試了設定了不同的大小,對相機介面和照片沒有影響,不知道為什麼?索性去掉了

效果圖:


  1. <pre name="code"
    class="html"><span style="font-size:18px;">package com.emoney.camera;  
  2. import java.io.BufferedOutputStream;  
  3. import java.io.File;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7. import java.text.SimpleDateFormat;  
  8. import java.util.Date;  
  9. import java.util.List;  
  10. import java.util.Timer;  
  11. import java.util.TimerTask;  
  12. import com.stock.stock.R;  
  13. import android.graphics.Bitmap;  
  14. import android.graphics.BitmapFactory;  
  15. import android.graphics.Canvas;  
  16. import android.graphics.Matrix;  
  17. import android.graphics.PixelFormat;  
  18. import android.hardware.Camera;  
  19. import android.hardware.Camera.AutoFocusCallback;  
  20. import android.hardware.Camera.CameraInfo;  
  21. import android.hardware.Camera.PictureCallback;  
  22. import android.hardware.Camera.ShutterCallback;  
  23. import android.net.Uri;  
  24. import android.os.Bundle;  
  25. import android.os.Environment;  
  26. import android.app.Activity;  
  27. import android.app.AlertDialog;  
  28. import android.app.AlertDialog.Builder;  
  29. import android.content.Context;  
  30. import android.content.DialogInterface;  
  31. import android.content.Intent;  
  32. import android.content.pm.PackageManager;  
  33. import android.util.Log;  
  34. import android.view.Menu;  
  35. import android.view.SurfaceHolder;  
  36. import android.view.SurfaceView;  
  37. import android.view.View;  
  38. import android.view.Window;  
  39. import android.view.WindowManager;  
  40. import android.view.View.OnClickListener;  
  41. import android.widget.Button;  
  42. import android.widget.TextView;  
  43. import android.widget.Toast;  
  44. publicclass RectCameraActivity extends Activity implements
  45.         SurfaceHolder.Callback, OnClickListener {  
  46.     private SurfaceView mySurfaceView = null;  
  47.     private SurfaceHolder mySurfaceHolder = null;  
  48.     private CameraTopRectView topView = null//自定義頂層view
  49.     private Camera myCamera = null;  
  50.     private Camera.Parameters myParameters;  
  51.     private TextView takeTxt;  
  52.     private TextView cancelTxt;  
  53.     privateboolean isPreviewing = false;  
  54.     private Bitmap bm;  
  55.     privatestaticfinal String IMG_PATH = "SHZQ";  
  56.     private File file;  
  57.     private Uri uri;  
  58.     @Override
  59.     protectedvoid onCreate(Bundle savedInstanceState) {  
  60.         super.onCreate(savedInstanceState);  
  61.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  62.         int flag = WindowManager.LayoutParams.FLAG_FULLSCREEN;  
  63.         Window myWindow = this.getWindow();  
  64.         myWindow.setFlags(flag, flag);  
  65.         setContentView(R.layout.my_camera_activity);  
  66.         mySurfaceView = (SurfaceView) findViewById(R.id.sv_camera);  
  67.         mySurfaceView.setZOrderOnTop(false);  
  68.         mySurfaceHolder = mySurfaceView.getHolder();  
  69.         mySurfaceHolder.setFormat(PixelFormat.TRANSLUCENT);  
  70.         mySurfaceHolder.addCallback(this);  
  71.         mySurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  
  72.         topView = (CameraTopRectView) findViewById(R.id.top_view);  
  73.         takeTxt = (TextView) findViewById(R.id.txt_take);  
  74.         cancelTxt = (TextView) findViewById(R.id.txt_cancel);  
  75.         takeTxt.setClickable(false);  
  76.         cancelTxt.setClickable(false);  
  77.         takeTxt.setOnClickListener(this);  
  78.         cancelTxt.setOnClickListener(this);  
  79.         topView.onDraw(new Canvas());  
  80.         initCamera();  
  81.     }  
  82.     @Override
  83.     protectedvoid onResume() {  
  84.         // TODO Auto-generated method stub
  85.         super.onResume();  
  86.         if (myCamera == null) {  
  87.             initCamera();  
  88.         }  
  89.     }  
  90.     @Override
  91.     protectedvoid onPause() {  
  92.         // TODO Auto-generated method stub
  93.         super.onPause();  
  94.         if (myCamera != null) {  
  95.             isPreviewing = false;  
  96.             takeTxt.setClickable(false);  
  97.             cancelTxt.setClickable(false);  
  98.             myCamera.release(); // release the camera for other applications
  99.             myCamera = null;  
  100.         }  
  101.     }  
  102.     @Override
  103.     protected

    相關推薦

    Android定義相機邊框

    專案需求:要實現自定義拍照介面,並且只取框框中的內容。 問題點:1、通過Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)方式自動對焦,沒有實現觸控對焦        2、myParameters.setPreview

    android定義相機邊框和按鈕)

    前兩個月專案要求不能呼叫系統的相機,那就只能用自定義的了,查了一些資料,自己再研究了一下,自定義的相機還是有點複雜的,佈局和程式碼中都要用到一個重要的SurfaceView。 一、建立佈局,佈局的背景框可以讓美工給出,這裡姑且就是一個藍色的邊框,然後下面有三個按鈕,我里布局檔案activit

    Android定義控制元件 -- 邊框的TextView

    使用xml實現邊框 原來使用帶邊框的TextView時一般都是用XML定義來完成,在drawable目錄中定義如下所示的xml檔案: <?xml version="1.0" encoding="utf-8"?> <selector xm

    android定義圓角實線邊框圓角虛線邊框直實線虛實線半圓角邊框

    先上圖。<img src="http://img.my.csdn.net/uploads/201510/05/1444048517_3752.png-thumb.jpg" width="1080" height="1920" style="font-family: A

    Android定義View畫一個好看延長線的餅狀

    開發十年,就只剩下這套架構體系了! >>>   

    Android定義相機超詳細講解

    了解 catch 實現 4.4 required form 需要 eset 自己 Android自定義相機超詳細講解 轉載請標明出處: http://blog.csdn.net/vinicolor/article/details/49642861; 由於網上關於Andr

    Android 定義相機 Camera 圖片方向問題

    相機預覽方向問題 對於相機的預覽方向我們可以通過如下API進行設定 camera.setDisplayOrientation(0);但是,該API影響的是相機的預覽方向,對於照片的儲存方向並沒有什麼影響,最終照片儲存的方向還是由Camera的影象Sensor決定的。 照片儲

    Android定義相機Camera(一)

    Time:2018/06/21  因為專案需求,需要實現跟小猿搜題的類似的功能,系統相機直接就被排除了,原本打算是找個一個demo,改吧改吧就直接用了,找的過程中發現程式碼太舊了,目前6.0以上的系統很多不支援,然後按照demo的邏輯,就寫一個相

    Android 定義相機第二次開啟卡死

    原因:相機沒有被正確釋放導致第二次打卡死。 //正確的釋放資原始碼 public void release(){ if (mCamera != null) { mCamera.setPreviewCallback(null) ;

    Android 定義View SeekBar 浮動文字顯示

    先上圖 問1:seekbar_style.xml 為什麼 用xml 會不生效 參考 http://blog.csdn.net/as7210636/article/details/52169643 基本差不多 下載地址 https://github.com/linrenqi

    Android定義控制元件 文字提示的SeekBar

    轉載請註明出處:juejin.im/post/5c1af0… 本文出自 容華謝後的部落格 1.寫在前面 SeekBar控制元件在開發中還是比較常見的,比如音視訊進度、音量調節等,但是原生控制元件有時還不能滿足我們的需求,今天就來學習一下如何自定義SeekBar控制元件,本文主要實現了一個帶文

    Android 定義相機Demo 入門學習

    Android 自定義相機Demo 本文是參考網上一些自定義相機示例,再結合自己對相機的功能需求寫的,基本上包含了很多基本功能,比如相機對焦、閃光燈,以及在手機預覽介面上繪製自己想要繪製的圖案。 話不多說,先上一張圖: 應用是在Android Studio中開發的,java程

    android 定義view在xml中引用內部類View

    java.lang.ClassCastException: android.view.View cannot be cast to com.voice.VoiceFragment$AnimationView E/AndroidRuntime( 3543): at com.voice.VoiceFragme

    Android 定義CheckAnimView支付寶支付成功打勾對號動畫kotlin編寫

    CheckAnimView是什麼東西呢,顧名思義就是選擇器,帶動畫效果的View,此View全由程式碼生成圖形。 使用場景:1、可以當作酷炫的選擇器。2、也可以用於展示結果,比如:支付結果,操作成功等 接下來看一下效果:  控制元件由四種圖形組合成動畫:邊框(空心圓

    Android 定義ImageView支援圓角和直角

    使用自定義ImageView,實現圓角功能 1.自定義屬性attrs.xml <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="RoundC

    Android定義相機實現N連拍

    /** * 描述:自動連續拍照 * 開發者:開發者的樂趣JRT * 建立時間:2017-3-15 19:16 * CSDN地址:http://blog.csdn.net/Jiang_Rong_Tao/article * E-mail:[email protected] **/ publi

    Android 定義View虛線縱向、橫向

    虛線在shape中配置還是比較麻煩的,所以自定義一個,使用起來會方便很多。  虛線支援橫向、縱向兩種方式。並且高寬間隔都可以自定義,使用很靈活。 使用說明: 預設方向:橫向。 橫向時:預設寬度為40,預設高度為View高度 縱向時:預設寬度為View的寬度,預設

    Android 定義Toast修改Toast樣式和顯示時長

    Android 中有一個 Toast 控制元件,可以用來顯示提示資訊,還是非常好用的,但是樣式和顯示時長比較侷限。所以我們來自定義一個  Toast ,讓它可以顯示我們想要的效果,並能設定顯示時長。 首先,在 res\layout 資料夾下建立自定義 Toast 的佈

    Android定義View高仿QQ音樂歌詞滾動控制元件!

    最近在以QQ音樂為樣板做一個手機音樂播放器,原始碼下篇博文放出。今天我想聊的是這個QQ音樂播放器中歌詞顯示控制元件的問題,和小夥伴們一起來探討怎麼實現這個歌詞滾動的效果。OK,廢話不多說,先來看看效果圖:好,接下來我們就來看看怎麼實現這樣一個效果。本文主要包括如下幾方面內容:

    Android定義EditText實現分割輸入內容效果

    例如,輸入一組25位的序列號,希望分成5組,每組5個數字。效果如下圖。 Android中沒有發現類似的空間,只好自己動手了。 1.首先自定義控制元件繼承EditText,實現相應方法。  Java程式碼   package com.example.sequencenu