Android硬件學習-照相機學習Android不能不學習照相機,現在各種美容相機,微信朋友圈發圖,現在升級之後直接下拉就可以照相瞭,

學習Android不能不學習照相機,現在各種美容相機,微信朋友圈發圖,現在升級之後直接下拉就可以照相瞭,各種艷照的的源頭也是照相機,扯遠瞭,有點邪惡瞭,還是簡單學習一下Android中照相機的使用,Android中照相機的使用一般分為兩種使用已有的照相App(可以理解為系統內置的照相機)和單獨創建一個照相App,第一種方式簡單易懂,第二種方式如果做的好的話可以養活一個公司~今天就簡單的描述一下第一種的調用~

 

基礎工作

 

調用照相機需要照相,照相就需要存儲,存在外部存儲中需要設置權限,本次設置的三個權限:一個是調用Camera權限,第二個是要求設備有照相機,第三個是在外部設備寫的權限:

 

<uses-permission android:name="android.permission.CAMERA" />

 

 <uses-feature android:name="android.hardware.camera" />

 

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  簡單的頁面,一個Buttom,一個ImageView:

 

 

 

Demo實現

 

簡單的三部曲,首先創建Intent,然後啟動Intent,最後接收結果,沒有前置攝像頭,就用的是模擬的:

 

 

 

拍照事件:

 

 

public void cameraEvent(View view) {

    intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 創建一個意圖去獲取圖片

    file= getOutputMediaFile(); // 獲取路徑

    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); // 設置文件名

    // 啟動Intent

    startActivityForResult(intent, IMAGE_REQUEST_CODE);

}

獲取文件路徑的方法:

 

 

// 圖片路徑

private static File getOutputMediaFile() {

    File mediaStorageDir = new File(

            Environment

                    .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),

            tag);

 

    if (!mediaStorageDir.exists()) {

        if (!mediaStorageDir.mkdirs()) {

            Log.d(tag, "存儲目錄創建失敗");

            return null;

        }

    }

    // 創建文件名

    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")

            .format(new Date());

    File mediaFile = null;

        mediaFile = new File(mediaStorageDir.getPath() + File.separator

                + "IMG_" + timeStamp + ".jpg");

    Log.d(tag, "存儲目錄:" + mediaFile);

    return mediaFile;

}

 完成之後的接收事件需要重寫Activity中的onActivityResult方法:

 

 

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        // TODO Auto-generated method stub

        if(requestCode == IMAGE_REQUEST_CODE&&resultCode==RESULT_OK) {

            imageView=(ImageView) findViewById(R.id.camera_img);

            //兩種設置方式

            //圖片較大的時候可以使用這種

            Bitmap  bitmap=BitmapFactory.decodeFile(file.toString());

            imageView.setImageBitmap(bitmap);

//          imageView.setImageURI(Uri.fromFile(file));

        }

        super.onActivityResult(requestCode, resultCode, data);

    }

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。