zoukankan      html  css  js  c++  java
  • 019_04简易相机

     1 package com.example.day19_04simplecamera;
     2 
     3 import android.app.Activity;
     4 import android.content.Intent;
     5 import android.os.Bundle;
     6 import android.view.View;
     7 
     8 public class MainActivity extends Activity {
     9 
    10     @Override
    11     protected void onCreate(Bundle savedInstanceState) {
    12         super.onCreate(savedInstanceState);
    13         setContentView(R.layout.activity_main);
    14     }
    15 
    16     public void takephoto(View v){
    17         Intent intent = new Intent();
    18         intent.setClass(this, TakePhoto.class);
    19         startActivity(intent);
    20         
    21     }
    22     
    23     public void takevideo(View v){
    24         Intent intent = new Intent();
    25         intent.setClass(this, TakeVideo.class);
    26         startActivity(intent);
    27     }
    28 }
      1 package com.example.day19_04simplecamera;
      2 
      3 import java.io.File;
      4 import java.io.FileNotFoundException;
      5 import java.io.FileOutputStream;
      6 import java.io.IOException;
      7 
      8 import android.app.Activity;
      9 import android.graphics.Bitmap;
     10 import android.graphics.BitmapFactory;
     11 import android.graphics.Bitmap.CompressFormat;
     12 import android.hardware.Camera;
     13 import android.hardware.Camera.AutoFocusCallback;
     14 import android.hardware.Camera.Parameters;
     15 import android.hardware.Camera.PictureCallback;
     16 import android.os.Bundle;
     17 import android.view.SurfaceHolder;
     18 import android.view.SurfaceHolder.Callback;
     19 import android.view.SurfaceView;
     20 import android.view.View;
     21 import android.widget.Toast;
     22 
     23 public class TakePhoto extends Activity{
     24     private Camera camera;
     25    @Override
     26     protected void onCreate(Bundle savedInstanceState) {
     27     // TODO Auto-generated method stub
     28        super.onCreate(savedInstanceState);
     29        setContentView(R.layout.takephoto);
     30        
     31        SurfaceView surfaceView = (SurfaceView) findViewById(R.id.sf_photo);
     32        SurfaceHolder holder = surfaceView.getHolder();
     33        
     34        holder.addCallback(new Callback() {
     35         @Override
     36         public void surfaceCreated(SurfaceHolder holder) {
     37             System.out.println("TakePhoto.onCreate(...).new Callback() {...}.surfaceCreated()");
     38             camera = Camera.open();
     39                try {
     40                 camera.setPreviewDisplay(holder);
     41                 camera.startPreview();
     42             } catch (IOException e) {
     43                 // TODO Auto-generated catch block
     44                 e.printStackTrace();
     45             }
     46         }
     47         
     48         @Override
     49         public void surfaceChanged(SurfaceHolder holder, int format, int width,
     50                 int height) {
     51             // TODO Auto-generated method stub            
     52         }
     53         
     54         @Override
     55         public void surfaceDestroyed(SurfaceHolder holder) {
     56             // TODO Auto-generated method stub
     57             System.out
     58                     .println("TakePhoto.onCreate(...).new Callback() {...}.surfaceDestroyed()");
     59             camera.stopPreview();
     60             camera.release();
     61         }
     62         
     63        });
     64        
     65     } 
     66 
     67    
     68     public void takephoto(View V){      
     69         camera.autoFocus( new AutoFocusCallback() {        
     70             @Override
     71             public void onAutoFocus(boolean success, Camera camera) {
     72                 // TODO Auto-generated method stub
     73                 //对焦完成之后,就应该拍照
     74                 Parameters parameters = camera.getParameters();
     75                  takephotobycamera();        
     76             }
     77         });
     78     }
     79     
     80     
     81     private void takephotobycamera(){
     82         camera.takePicture(null, null, new PictureCallback() {        
     83             @Override
     84             public void onPictureTaken(byte[] data, Camera camera) {
     85                 // TODO Auto-generated method stub            
     86                 Bitmap  bitmap= BitmapFactory.decodeByteArray(data, 0, data.length);
     87                 FileOutputStream fos ;
     88                 try {
     89                     fos = new FileOutputStream(new File("storage/sdcard1/photo1.jpeg"));
     90                     boolean success=bitmap.compress(CompressFormat.JPEG, 100, fos);
     91                     if(success)
     92                         Toast.makeText(TakePhoto.this, "保存成功", 1).show();
     93                     else {
     94                         Toast.makeText(TakePhoto.this, "保存失败", 1).show();
     95                     }
     96                 } catch (FileNotFoundException e) {
     97                     // TODO Auto-generated catch block
     98                     e.printStackTrace();
     99                 }
    100 
    101                  ////系统相机拍完照之后,会自动停止预览 ,启动预览
    102                  camera.startPreview();
    103                 
    104             }
    105         });
    106     }
    107 }
      1 package com.example.day19_04simplecamera;
      2 
      3 import java.io.IOException;
      4 
      5 import android.app.Activity;
      6 import android.hardware.Camera;
      7 import android.media.AudioManager;
      8 import android.media.CamcorderProfile;
      9 import android.media.MediaRecorder;
     10 import android.media.MediaRecorder.AudioSource;
     11 import android.media.MediaRecorder.VideoSource;
     12 import android.os.Bundle;
     13 import android.view.SurfaceHolder;
     14 import android.view.SurfaceView;
     15 import android.view.View;
     16 import android.view.SurfaceHolder.Callback;
     17 
     18 public class TakeVideo extends Activity {
     19     private Camera camera;
     20     private SurfaceHolder holder;
     21     private MediaRecorder mediaRecorder;
     22 
     23      @Override
     24     protected void onCreate(Bundle savedInstanceState) {
     25         // TODO Auto-generated method stub
     26         super.onCreate(savedInstanceState);
     27         setContentView(R.layout.takevideo);
     28         
     29        SurfaceView surfaceView = (SurfaceView) findViewById(R.id.sf_photo);
     30        holder = surfaceView.getHolder();
     31        
     32        holder.addCallback(new Callback() {
     33 
     34         @Override
     35         public void surfaceCreated(SurfaceHolder holder) {
     36             System.out
     37                     .println("TakePhoto.onCreate(...).new Callback() {...}.surfaceCreated()");
     38             camera = Camera.open();
     39                try {
     40                 camera.setPreviewDisplay(holder);
     41                 camera.startPreview();
     42             } catch (IOException e) {
     43                 // TODO Auto-generated catch block
     44                 e.printStackTrace();
     45             }
     46         }
     47         
     48         @Override
     49         public void surfaceChanged(SurfaceHolder holder, int format, int width,
     50                 int height) {
     51             // TODO Auto-generated method stub            
     52         }
     53         
     54         @Override
     55         public void surfaceDestroyed(SurfaceHolder holder) {
     56             // TODO Auto-generated method stub
     57             System.out
     58                     .println("TakePhoto.onCreate(...).new Callback() {...}.surfaceDestroyed()");
     59             camera.stopPreview();
     60             camera.release();
     61         }
     62         
     63        });
     64         
     65     }
     66      
     67      
     68      public void start(View v){
     69          
     70          //停止preview
     71          camera.stopPreview();
     72          //解锁camera
     73          camera.unlock();
     74          
     75          mediaRecorder = new MediaRecorder();
     76          //关联摄像头
     77          mediaRecorder.setCamera(camera);
     78          //设置音频源和视频源
     79          mediaRecorder.setAudioSource( AudioSource.CAMCORDER);
     80          mediaRecorder.setVideoSource(VideoSource.CAMERA);
     81 
     82          //设置录视频的配置参数         
     83          CamcorderProfile profile  = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW);
     84          mediaRecorder.setProfile(profile);
     85          
     86          //设置输出到哪里
     87          mediaRecorder.setOutputFile("storage/sdcard1/video.mp4");
     88          mediaRecorder.setPreviewDisplay(holder.getSurface());
     89          
     90          //开始录制视频
     91          try {
     92             mediaRecorder.prepare();
     93          } catch (IllegalStateException e) {
     94             // TODO Auto-generated catch block
     95             e.printStackTrace();
     96          } catch (IOException e) {
     97             // TODO Auto-generated catch block
     98             e.printStackTrace();
     99          }
    100          mediaRecorder.start();
    101          
    102      }
    103      
    104      public void stop(View v){
    105          
    106          if (mediaRecorder!=null) {
    107              mediaRecorder.stop();
    108              mediaRecorder.release();
    109         }
    110          //注:此时画面中已经没有预览了,需要重新锁定摄像头,开启预览才会有画面!
    111         // 14. 锁定摄像头
    112          camera.lock();
    113          // 15. 再打开摄像头的预览
    114          camera.startPreview();
    115 
    116         
    117          
    118      }
    119 }
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     3     package="com.example.day19_04simplecamera"
     4     android:versionCode="1"
     5     android:versionName="1.0" >
     6 
     7     <uses-sdk
     8         android:minSdkVersion="14"
     9         android:targetSdkVersion="21" />
    10     <uses-permission android:name="android.permission.CAMERA"/>
    11     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    12     <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    13 
    14     <application
    15         android:allowBackup="true"
    16         android:icon="@drawable/ic_launcher"
    17         android:label="@string/app_name"
    18         android:theme="@style/AppTheme" >
    19         <activity
    20             android:name=".MainActivity"
    21             android:label="@string/app_name" >
    22             <intent-filter>
    23                 <action android:name="android.intent.action.MAIN" />
    24 
    25                 <category android:name="android.intent.category.LAUNCHER" />
    26             </intent-filter>
    27         </activity>
    28         <activity android:name=".TakePhoto"
    29             android:screenOrientation="landscape"></activity>
    30         <activity android:name=".TakeVideo"
    31             android:screenOrientation="landscape"></activity>
    32     </application>
    33 
    34 </manifest>
    物随心转,境由心造,一切烦恼皆由心生。
  • 相关阅读:
    video 安卓ios系统 浏览器 全屏播放以及自动播放的问题
    echarts 雷达图的个性化设置
    AtCoder Grand Contest 015 题解
    AtCoder Grand Contest 014 题解
    bzoj 3242: [Noi2013]快餐店
    bzoj 2794: Cloakroom dp
    bzoj 4261: 建设游乐场 费用流
    uoj problem 31 猪猪侠再战括号序列
    APIO2017 游记
    CTSC2017 游记
  • 原文地址:https://www.cnblogs.com/woodrow2015/p/4544078.html
Copyright © 2011-2022 走看看