真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

AndroidSurfaceView拍照錄像實現(xiàn)方法

Surface的拍照實現(xiàn)也是很簡單,一個小demo就可以把流程看懂了。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)、迎澤網(wǎng)絡推廣、小程序制作、迎澤網(wǎng)絡營銷、迎澤企業(yè)策劃、迎澤品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供迎澤建站搭建服務,24小時服務熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

話不多說,直接上代碼

布局文件



  

Activity

public class MainActivity extends AppCompatActivity {

  private SurfaceView sv_main_surface;
  private Camera camera;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sv_main_surface = (SurfaceView) findViewById(R.id.sv_main_surface);

    //添加surface回調(diào)函數(shù)
    sv_main_surface.getHolder().addCallback(new SurfaceHolder.Callback() {


      @Override//控件創(chuàng)建時,打開照相機
      public void surfaceCreated(SurfaceHolder holder) {
        //打開照相機
        camera = Camera.open();
        //設(shè)置參數(shù)
        Camera.Parameters parameters=camera.getParameters();
        parameters.setPictureFormat(PixelFormat.JPEG);
        parameters.set("jpeg-quality",85);
        camera.setParameters(parameters);
        //將畫面展示到SurfaceView
        try {
          camera.setPreviewDisplay(sv_main_surface.getHolder());
        } catch (IOException e) {
          e.printStackTrace();
        }
        //開啟預覽效果
        camera.startPreview();

      }

      @Override//控件改變
      public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

      }

      @Override//控件銷毀
      public void surfaceDestroyed(SurfaceHolder holder) {
        //照相同一時刻只能允許一個軟件打開
        if(camera!=null){
          camera.stopPreview();
          camera.release();//釋放內(nèi)存
          camera=null;
        }
      }
    });




  }


  public void takePhoto(View view){
    camera.takePicture(null, null, new Camera.PictureCallback() {
      @Override
      public void onPictureTaken(byte[] bytes, Camera camera) {
        //技術(shù):圖片壓縮技術(shù)(如果圖片不壓縮,圖片大小會過大,會報一個oom內(nèi)存溢出的錯誤)
        Bitmap bitmap= BitmapFactory.decodeByteArray(bytes,0,bytes.length);
        try {
          FileOutputStream fos = new FileOutputStream("/mnt/sdcard/qq"+System.currentTimeMillis()+".png");//圖片保存路徑
          bitmap.compress(Bitmap.CompressFormat.PNG,85,fos);//壓縮格式,質(zhì)量,壓縮路徑

          camera.stopPreview();
          camera.startPreview();
        } catch (FileNotFoundException e) {
          e.printStackTrace();
        }
      }
    });

  }
}

我們還要添加權(quán)限

   
  
  
  
  
  

就這樣一個小案例就完成了

既然可以拍照,那肯定也是可以錄像的,所以我們再來看看錄像是怎么實現(xiàn)的

布局文件

<?xml version="1.0" encoding="utf-8"?>


  

  

  

Activity

public class MediaRecorderActivity extends AppCompatActivity {

  private SurfaceView sv_media_surface;
  private MediaRecorder mediaRecorder;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_media_recorder);
    sv_media_surface = (SurfaceView) findViewById(R.id.sv_media_surface);

    //實例化媒體錄制器
    mediaRecorder = new MediaRecorder();
  }


  public void start(View view){
    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

    //設(shè)置格式
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

    //設(shè)置保存路徑
    mediaRecorder.setOutputFile("/mnt/sdcard/uu"+System.currentTimeMillis()+".mp4");

    mediaRecorder.setPreviewDisplay(sv_media_surface.getHolder().getSurface());

    try {
      mediaRecorder.prepare();
      mediaRecorder.start();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  public void stop(View view){
    if(mediaRecorder!=null){
      mediaRecorder.stop();
      mediaRecorder.release();
      mediaRecorder=null;
    }

  }
}


添加權(quán)限


  

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


網(wǎng)站標題:AndroidSurfaceView拍照錄像實現(xiàn)方法
文章地址:http://weahome.cn/article/goihhs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部