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);
	}

  效果如下:

 

主要參考資料:http://developer.android.com/guide/topics/media/camera.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM