最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android相機(jī)Camera基礎(chǔ)知識(shí)

 更新時(shí)間:2017年01月23日 16:00:31   作者:chenzheng8975  
這篇文章主要為大家詳細(xì)介紹了Android相機(jī)Camera基礎(chǔ)知識(shí),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、概述
本章節(jié)主要講述的Android相機(jī)Camera的相關(guān)知識(shí)點(diǎn),主要包含三個(gè)方面,Android啟動(dòng)系統(tǒng)相機(jī)生成縮略圖、Android啟動(dòng)系統(tǒng)相機(jī)生成原圖以及Android自定義相機(jī)等。

二、Android啟動(dòng)系統(tǒng)相機(jī)

核心代碼:

package com.czhappy.camerademo.activity;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;

import com.czhappy.camerademo.R;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

  private static int REQ_1 = 1;
  private static int REQ_2 = 2;
  private ImageView image_iv;

  private String mFilePath;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    image_iv = (ImageView) findViewById(R.id.image_iv);

    mFilePath = Environment.getExternalStorageDirectory().getPath();
    mFilePath = mFilePath +"/" + System.currentTimeMillis()+".jpg";
  }

  public void startCamera1(View view){
    //隱式Intent調(diào)用
    Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(it, REQ_1);
  }

  public void startCamera2(View view){
    //隱式Intent調(diào)用
    Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    Uri photoUri = Uri.fromFile(new File(mFilePath));
    it.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
    startActivityForResult(it, REQ_2);
  }

  public void customCamera(View view){
    Intent it = new Intent(MainActivity.this, CustomCameraActivity.class);
    startActivity(it);
  }


  /**
   *
   * @param requestCode
   * @param resultCode
   * @param data //縮略圖
   */
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == RESULT_OK){
      if(requestCode == REQ_1){//縮略圖
        Bundle bundle = data.getExtras();
        Bitmap bmp = (Bitmap) bundle.get("data");
        image_iv.setImageBitmap(bmp);
      }else if(requestCode == REQ_2){//原圖
        FileInputStream fis = null;
        try {
          fis = new FileInputStream(mFilePath);
          Bitmap bitmap = BitmapFactory.decodeStream(fis);
          image_iv.setImageBitmap(bitmap);
        } catch (FileNotFoundException e) {
          e.printStackTrace();
        }finally {
          try {
            fis.close();
          } catch (IOException e) {
            e.printStackTrace();
          }
        }
      }

    }
  }
}

三、Android自定義相機(jī)

1.自定義相機(jī)步驟:

創(chuàng)建相機(jī)
創(chuàng)建SurfaceView
關(guān)聯(lián)相機(jī)與SurfaceView
調(diào)整相機(jī)顯示效果
自定義相機(jī)預(yù)覽界面

2.核心代碼:
自定義相機(jī)CustomCameraActivity.java

package com.czhappy.camerademo.activity;

import android.content.Intent;
import android.graphics.ImageFormat;
import android.hardware.Camera;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;

import com.czhappy.camerademo.R;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * Description:
 * User: chenzheng
 * Date: 2016/12/27 0027
 * Time: 13:43
 */
public class CustomCameraActivity extends AppCompatActivity implements SurfaceHolder.Callback{

  private SurfaceView mPreview;
  private Camera mCamera;
  private SurfaceHolder mHolder;
  private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
      File tempFile = new File("/sdcard/temp.png");
      try {
        FileOutputStream fos = new FileOutputStream(tempFile);
        fos.write(data);
        fos.close();
        Intent it = new Intent(CustomCameraActivity.this, CaptureResultActivity.class);
        it.putExtra("picPath", tempFile.getAbsolutePath());
        startActivity(it);
        finish();
      } catch (FileNotFoundException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }

    }
  };


  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_custom_camera);

    mPreview = (SurfaceView) this.findViewById(R.id.preview);
    mHolder = mPreview.getHolder();
    mHolder.addCallback(this);
    //點(diǎn)擊自動(dòng)對(duì)焦
    mPreview.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        mCamera.autoFocus(null);;

      }
    });
  }

  /**
   * 拍照
   * @param view
   */
  public void capture(View view){
    Camera.Parameters parameters = mCamera.getParameters();
    parameters.setPictureFormat(ImageFormat.JPEG);
    parameters.setPictureSize(800,400);
    parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);//自動(dòng)對(duì)焦
    mCamera.autoFocus(new Camera.AutoFocusCallback() {
      @Override
      public void onAutoFocus(boolean success, Camera camera) {
        //對(duì)焦準(zhǔn)確拍攝照片
        if(success){
          mCamera.takePicture(null, null, mPictureCallback);

        }
      }
    });


  }

  /**
   * 獲取相機(jī)對(duì)象
   * @return
   */
  private Camera getCamera(){
    mCamera = Camera.open();
    return mCamera;

  }

  /**
   * 開始預(yù)覽相機(jī)內(nèi)容
   */
  private void setStartPreview(Camera camera, SurfaceHolder holder){
    try {
      camera.setPreviewDisplay(holder);
      camera.setDisplayOrientation(90);//設(shè)置相機(jī)預(yù)覽為豎屏90度
      camera.startPreview();
    } catch (IOException e) {
      e.printStackTrace();
    }

  }

  /**
   * 釋放相機(jī)資源
   */
  private void releaseCamera(){
    if(mCamera!=null){
      mCamera.setPreviewCallback(null);
      mCamera.stopPreview();
      mCamera.release();
      mCamera = null;

    }


  }

  @Override
  protected void onResume() {
    super.onResume();
    if (mCamera==null){
      mCamera = getCamera();
      if(mHolder!=null){
        setStartPreview(mCamera, mHolder);
      }
    }
  }

  @Override
  protected void onPause() {
    super.onPause();
    releaseCamera();
  }

  @Override
  public void surfaceCreated(SurfaceHolder holder) {
    setStartPreview(mCamera, mHolder);
  }

  @Override
  public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    mCamera.stopPreview();
    setStartPreview(mCamera, mHolder);
  }

  @Override
  public void surfaceDestroyed(SurfaceHolder holder) {
    releaseCamera();
  }
}

生成圖片結(jié)果頁(yè)面CaptureResultActivity.java

package com.czhappy.camerademo.activity;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;

import com.czhappy.camerademo.R;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
 * Description:
 * User: chenzheng
 * Date: 2016/12/30 0030
 * Time: 13:27
 */
public class CaptureResultActivity extends AppCompatActivity {

  private String picPath;
  private ImageView result_iv;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_capture_result);

    picPath = getIntent().getStringExtra("picPath");
    result_iv = (ImageView) findViewById(R.id.result_iv);
    try {
      FileInputStream fis = new FileInputStream(picPath);
      Bitmap bitmap = BitmapFactory.decodeStream(fis);
      Matrix matrix = new Matrix();
      matrix.setRotate(90);//旋轉(zhuǎn)90度矩陣
      bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
      result_iv.setImageBitmap(bitmap);
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }

  }
}


四、項(xiàng)目源代碼下載

http://xiazai.jb51.net/201701/yuanma/AndroidCamera(jb51.net).rar

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • android圖片壓縮工具類分享

    android圖片壓縮工具類分享

    這篇文章主要為大家分享了android圖片壓縮工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android提高之ListView實(shí)現(xiàn)自適應(yīng)表格的方法

    Android提高之ListView實(shí)現(xiàn)自適應(yīng)表格的方法

    這篇文章主要介紹了Android采用ListView實(shí)現(xiàn)自適應(yīng)表格的方法,比較實(shí)用的功能,需要的朋友可以參考下
    2014-08-08
  • Android?webView加載數(shù)據(jù)時(shí)內(nèi)存溢出問(wèn)題及解決

    Android?webView加載數(shù)據(jù)時(shí)內(nèi)存溢出問(wèn)題及解決

    這篇文章主要介紹了Android?webView加載數(shù)據(jù)時(shí)內(nèi)存溢出問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Android學(xué)習(xí)小結(jié)之獲取被啟動(dòng)的Activity傳回的數(shù)據(jù)

    Android學(xué)習(xí)小結(jié)之獲取被啟動(dòng)的Activity傳回的數(shù)據(jù)

    這篇文章主要介紹了獲取被啟動(dòng)的Activity傳回的數(shù)據(jù),非常不錯(cuò),介紹的非常詳細(xì),需要的朋友可以參考下
    2016-08-08
  • Android中NavigationView的使用與相關(guān)問(wèn)題解決

    Android中NavigationView的使用與相關(guān)問(wèn)題解決

    大家都知道NavigationView的引入讓 Android側(cè)邊欄實(shí)現(xiàn)起來(lái)相當(dāng)方便,最近公司項(xiàng)目中也使用這個(gè)新的控件完成了側(cè)邊欄的改版。在使用過(guò)程中遇到一些問(wèn)題所以記錄一下。本文分為兩個(gè)部分,一是基本使用,二是相關(guān)問(wèn)題的解決,感興趣的朋友們下面來(lái)一起看看吧。
    2016-10-10
  • Android開發(fā)之自動(dòng)朗讀TTS用法分析

    Android開發(fā)之自動(dòng)朗讀TTS用法分析

    這篇文章主要介紹了Android開發(fā)之自動(dòng)朗讀TTS用法,較為詳細(xì)的分析了TTS的概念、功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-06-06
  • Android物理鍵盤事件解析

    Android物理鍵盤事件解析

    這篇文章主要為大家詳細(xì)介紹了Android物理鍵盤事件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Android Studio簽名打包的兩種方式(圖文教程)

    Android Studio簽名打包的兩種方式(圖文教程)

    這篇文章主要介紹了Android Studio簽名打包的兩種方式(圖文教程),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Android 創(chuàng)建依賴庫(kù)的方法(保姆級(jí)教程)

    Android 創(chuàng)建依賴庫(kù)的方法(保姆級(jí)教程)

    這篇文章主要介紹了Android 創(chuàng)建依賴庫(kù)的方法(保姆級(jí)教程),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Android仿微信聯(lián)系人按字母排序

    Android仿微信聯(lián)系人按字母排序

    但凡涉及到聯(lián)系人界面,幾乎都是按照字母排序的,那么聯(lián)系人按字母排序是怎么實(shí)現(xiàn)的呢,下面小編就給大家詳解Android仿微信聯(lián)系人按字母排序,需要的朋友可以參考下
    2015-08-08

最新評(píng)論

长顺县| 宁津县| 思茅市| 天等县| 九龙坡区| 永安市| 南和县| 孙吴县| 新竹市| 湘西| 金乡县| 长乐市| 霸州市| 浦北县| 江安县| 泰兴市| 兴义市| 高陵县| 唐河县| 娄烦县| 梅河口市| 南通市| 石河子市| 阳山县| 古交市| 揭东县| 潢川县| 泸溪县| 黔江区| 柳江县| 如皋市| 正镶白旗| 黄平县| 呼图壁县| 东海县| 永靖县| 云梦县| 郧西县| 顺昌县| 乌兰察布市| 梁平县|