zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题
    Google开源软负载seesaw
    Commit can not be set while enrolled in a transaction
    del_cursor 批量删除游标
    java api 批量数据库操作
    eclipse invalid zip archive lib
    less,more,view一个文件时中文可以正常显示,可是VI却显示乱码呢?
    10-13 Zuul面试点之Cookie和特殊头信息处理
    10-12 Zuul面试点之Hystrix降级处理
    10-11 Zuul面试点之Hystrix整合
  • 原文地址:https://www.cnblogs.com/xiaofeixiang/p/4086004.html
Copyright © 2011-2022 走看看