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

首頁 > 系統(tǒng) > Android > 正文

Android 照相機(jī)的實(shí)例應(yīng)用

2019-12-12 02:08:04
字體:
供稿:網(wǎng)友

Android 照相機(jī)的實(shí)例應(yīng)用

關(guān)鍵技術(shù):

SurfaceHolder.Callback

public class MyCameraDemo extends Activity {   private SurfaceView surface = null ;   private Button but = null ;   private SurfaceHolder holder = null ;   private Camera cam = null ;   private boolean previewRunning = true ;   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     super.setContentView(R.layout.main);     this.but = (Button) super.findViewById(R.id.but) ;     this.surface = (SurfaceView) super.findViewById(R.id.surface) ;          this.holder = this.surface.getHolder() ;     this.holder.addCallback(new MySurfaceViewCallback()) ;     //設(shè)置緩沖類型     this.holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS) ;     //設(shè)置分辨率     this.holder.setFixedSize(600, 350);          this.but.setOnClickListener(new OnClickListenerImpl()) ;   }   private class OnClickListenerImpl implements OnClickListener {      @Override     public void onClick(View v) {       if(MyCameraDemo.this.cam != null) {         //自動(dòng)對焦         MyCameraDemo.this.cam.autoFocus(new AutoFocusCallbackImpl()) ;       }     }        }      private class MySurfaceViewCallback implements SurfaceHolder.Callback {      //當(dāng)預(yù)覽界面格式大小改變時(shí),調(diào)用     public void surfaceChanged(SurfaceHolder holder, int format, int width,         int height) {            }      //初次實(shí)例化界面調(diào)用     public void surfaceCreated(SurfaceHolder holder) {       MyCameraDemo.this.cam = Camera.open(0) ;  // 取得第一個(gè)攝像頭       //窗口服務(wù)       WindowManager manager = (WindowManager) MyCameraDemo.this           .getSystemService(Context.WINDOW_SERVICE);       //取得display顯示對象       Display display = manager.getDefaultDisplay() ;       //照相機(jī)參數(shù)       Parameters param = MyCameraDemo.this.cam.getParameters() ;       //將照相機(jī)預(yù)覽大小設(shè)置為display大小       param.setPreviewSize(display.getWidth(), display.getHeight()) ;       param.setPreviewFrameRate(5) ; // 一秒5幀       param.setPictureFormat(PixelFormat.JPEG) ; // 圖片形式       param.set("jpen-quality", 80) ;//圖片質(zhì)量,最高100       MyCameraDemo.this.cam.setParameters(param) ;       try {         MyCameraDemo.this.cam.setPreviewDisplay(MyCameraDemo.this.holder) ;       } catch (IOException e) {       }       MyCameraDemo.this.cam.startPreview() ; // 進(jìn)行預(yù)覽       MyCameraDemo.this.previewRunning = true ;  // 已經(jīng)開始預(yù)覽     }      @Override     public void surfaceDestroyed(SurfaceHolder holder) {       if(MyCameraDemo.this.cam != null) {         if(MyCameraDemo.this.previewRunning) {           MyCameraDemo.this.cam.stopPreview() ;  // 停止預(yù)覽           MyCameraDemo.this.previewRunning = false ;         }         MyCameraDemo.this.cam.release() ;       }     }        }      private class AutoFocusCallbackImpl implements AutoFocusCallback {      @Override     public void onAutoFocus(boolean success, Camera camera) {       if(success) {  // 成功         MyCameraDemo.this.cam.takePicture(sc, pc, jpgcall) ;       }     }        }      private PictureCallback jpgcall = new PictureCallback() {      @Override     public void onPictureTaken(byte[] data, Camera camera) {  // 保存圖片的操作       Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);       String fileName = Environment.getExternalStorageDirectory()           .toString()           + File.separator           + "mldnphoto"           + File.separator           + "MLDN_" + System.currentTimeMillis() + ".jpg";       File file = new File(fileName) ;       if (!file.getParentFile().exists()) {         file.getParentFile().mkdirs() ; // 創(chuàng)建文件夾       }       try {         BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)) ;         bmp.compress(Bitmap.CompressFormat.JPEG, 80, bos) ; // 向緩沖區(qū)之中壓縮圖片         bos.flush() ;         bos.close() ;         Toast.makeText(MyCameraDemo.this,             "拍照成功,照片已保存在" + fileName + "文件之中!", Toast.LENGTH_SHORT)             .show();       } catch (Exception e) {         Toast.makeText(MyCameraDemo.this,             "拍照失敗!", Toast.LENGTH_SHORT)             .show();       }       MyCameraDemo.this.cam.stopPreview() ;       MyCameraDemo.this.cam.startPreview() ;     }        } ;      private ShutterCallback sc = new ShutterCallback(){     @Override     public void onShutter() {       // 按下快門之后進(jìn)行的操作     }   } ;   private PictureCallback pc = new PictureCallback() {      @Override     public void onPictureTaken(byte[] data, Camera camera) {            }        } ; } 

 主布局函數(shù)

<?xml version="1.0" encoding="utf-8"?> <LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"   android:orientation="vertical"    android:layout_width="fill_parent"   android:layout_height="fill_parent">   <Button     android:id="@+id/but"      android:layout_width="fill_parent"     android:layout_height="wrap_content"      android:text="照相" />   <SurfaceView     android:id="@+id/surface"     android:layout_width="fill_parent"     android:layout_height="fill_parent" />  </LinearLayout> 

以上就是Android 相機(jī)的使用方法,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 德阳市| 隆德县| 景德镇市| 巫山县| 开鲁县| 肃南| 宜丰县| 博客| 安陆市| 凤冈县| 大城县| 伊宁市| 阿巴嘎旗| 休宁县| 长汀县| 温州市| 响水县| 化德县| 西平县| 五指山市| 错那县| 当阳市| 岱山县| 柯坪县| 松阳县| 荔浦县| 宣恩县| 铜川市| 灵璧县| 洮南市| 无为县| 莱西市| 牙克石市| 盐津县| 孟津县| 晋江市| 巫山县| 府谷县| 土默特左旗| 罗江县| 安多县|