系统使用详解之拍照

在Android中调用摄像头进行拍照有两种方式,一种是使用系统的拍照Activity,另一种是使用Camera对象自己实现拍照功能。
 
 

  
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class Main extends Activity implements OnClickListener
{
	public ImageView imageView;
	private ImageView ivFocus;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Button btnTakePicture = (Button) findViewById(R.id.btnTakePicture);
		btnTakePicture.setOnClickListener(this);
		imageView = (ImageView) findViewById(R.id.imageview);
		ivFocus = new ImageView(this);
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data)
	{
		if (requestCode == 1)
		{
			if (resultCode == Activity.RESULT_OK)
			{
				Bitmap cameraBitmap = (Bitmap) data.getExtras().get("data");
				imageView.setImageBitmap(cameraBitmap);				
				//  存成320*240和50*50  如果是垂直方向,需要对cameraBitmap旋转90度
				MediaStore.Images.Media.insertImage(getContentResolver(), cameraBitmap, null, null);

			}
 
		}
		super.onActivityResult(requestCode, resultCode, data);
	}

	@Override
	public void onClick(View view)
	{

		Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
		//Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
		intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File("/sdcard/test.jpg")));
		ListView a;
		
		startActivityForResult(intent, 1);
		
	}

}
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
public class CameraPreview extends Activity
{

	private Preview preview;
	private ImageView ivFocus;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		preview = new Preview(this);
		setContentView(preview);

		ivFocus = new ImageView(this);
	}

	@Override
	public boolean onTouchEvent(MotionEvent event)
	{
		if (event.getAction() == MotionEvent.ACTION_DOWN)
			preview.takePicture();
		return super.onTouchEvent(event);
	}

	class Preview extends SurfaceView implements SurfaceHolder.Callback
	{
		private SurfaceHolder holder;
		private Camera camera;
		// 创建一个PictureCallback对象,并实现其中的onPictureTaken方法
		private PictureCallback pictureCallback = new PictureCallback()
		{
			// 该方法用于处理拍摄后的照片数据
			public void onPictureTaken(byte[] data, Camera camera)
			{
				
				// data参数值就是照片数据,将这些数据以key-value形式保存,以便其他调用该Activity的程序可
				// 以获得照片数据
				getIntent().putExtra("bytes", data);
				setResult(20, getIntent());
				// 停止照片拍摄
				camera.stopPreview();
				camera = null;
				// 关闭当前的Activity
				finish();
			}
		};

		// Preview类的构造方法
		public Preview(Context context)
		{
			super(context);
			// 获得SurfaceHolder对象
			holder = getHolder();
			// 指定用于捕捉拍照事件的SurfaceHolder.Callback对象
			holder.addCallback(this);
			// 设置SurfaceHolder对象的类型
			holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
	
		}

		// 开厹拍照时调用该方法
		public void surfaceCreated(SurfaceHolder holder)
		{
			// 获得Camera对象
			camera = Camera.open();
			try
			{
				
				// 设置用于显示拍照摄像的SurfaceHolder对象
				camera.setPreviewDisplay(holder);
			}
			catch (IOException exception)
			{
				// 释放手机摄像头
				camera.release();
				camera = null;
			}
		}

		// 停止拍照时调用该方法
		public void surfaceDestroyed(SurfaceHolder holder)
		{
			// 释放手机摄像头
			camera.release();
		}

		// 拍照状态变化时调用该方法
		public void surfaceChanged(final SurfaceHolder holder, int format,
				int w, int h)
		{
			try
			{
				Camera.Parameters parameters = camera.getParameters();
				// 设置照片格式
				parameters.setPictureFormat(PixelFormat.JPEG);
	
			
				// 根据屏幕方向设置预浏尺寸
				if (getWindowManager().getDefaultDisplay().getOrientation() == 0)
					parameters.setPreviewSize(h, w);
				else
					parameters.setPreviewSize(w, h);
				// 设置拍摄照片的实际分辨率,在本例中的分辨率是1024*768
				parameters.setPictureSize(1024, 768);
				// 设置保存的图像大小
				camera.setParameters(parameters);
				// 开始拍照
				camera.startPreview();
				// 准备用于表示对焦状态的图像(类似对焦符号)
				ivFocus.setImageResource(R.drawable.focus1);
				LayoutParams layoutParams = new LayoutParams(
						LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
				ivFocus.setScaleType(ScaleType.CENTER);
				addContentView(ivFocus, layoutParams);
				ivFocus.setVisibility(VISIBLE);
				// 自动对焦
				camera.autoFocus(new AutoFocusCallback()
				{
					public void onAutoFocus(boolean success, Camera camera)
					{
						if (success)
						{
							// success为true表示对焦成功,改变对焦状态图像(一个绿色的png图像)
							ivFocus.setImageResource(R.drawable.focus2);
						}
					}
				});
			}
			catch (Exception e)
			{
			}
		}

		// 停止拍照,并将拍摄的照片传入PictureCallback接口的onPictureTaken方法
		public void takePicture()
		{
			if (camera != null)
			{
				
				camera.takePicture(null, null, pictureCallback);
			}
		}
	}

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

内容概要:本文档为《软件设计师资料净化与分析报告(汇总)》,系统整理了软件设计师考试涉及的核心知识点及历年试题分析,涵盖计算机系统基础、操作系统、数据库、软件工程、网络与信息安全、程序设计语言、知识产权及计算机专业英语等多个模块。文档不仅包含各知识点的理论讲解,如CPU结构、海明码校验、虚拟存储器、PV操作、页式存储管理、关系范式、设计模式等,还结合真题解析强化理解,并提供了大量案例分析与算法实现,如数据流图、E-R图设计、排序算法、策略模式、备忘录模式等,全面覆盖软件设计师考试的上午选择题与下午案例分析题的考核重点。; 适合人群:准备参加全国计算机技术与软件专业技术资格(水平)考试中“软件设计师”科目的考生,尤其适合有一定计算机基础、正在系统复习备考的中级技术人员。; 使用场景及目标:①系统梳理软件设计师考试大纲要求的知识体系;②通过真题解析掌握高频考点与解题思路;③强化对操作系统、数据库、软件工程等核心模块的理解与应用能力;④提升对设计模式、算法设计与程序语言机制的综合运用水平。; 阅读建议:建议结合考试大纲,分模块逐步学习,重点掌握各章节的知识点归纳与真题解析部分,对于案例分析题应动手练习数据流图、E-R图绘制及代码填空,算法部分应理解分治、动态规划等思想,并通过反复练习巩固记忆,全面提升应试能力。
【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
下载前必看:https://pan.quark.cn/s/ac7b3acb6cfd 《模拟人才招聘选拔群体决策支持系统》是一款为人力资源部门量身打造的高级软件应用,它融合了人工智能技术、大数据分析方法以及多方位评估手段,致力于改善招聘流程,增强人才选择的精准度与工作效率。 该系统通过构建逼真的人才招聘情境,引导决策者在繁杂的信息体系中做出更为理性的判断。 在人才选拔阶段,系统借助大数据分析手段对海量的个人简历进行有效甄别,迅速锁定与岗位特征相符的应聘者。 其能够依据事先定义的职位规范,自动对接应聘者的学历层次、职业履历、能力专长等资料,显著降低了人工审查的时间投入。 与此同时,该系统拥有智能评估模块,能够对候选人的个性特征、发展潜能及团队协作素养等非量化指标进行数值化衡量。 经由心理测试、网络面试等途径获取的数据,将运用机器学习模型展开深度解析,从而构建详尽的应聘者能力剖析报告,助力招聘人员全面把握候选人的综合条件。 再者,模拟人才招聘选拔群体决策支持系统支持多方用户协同运作。 在集体决策场景下,各位评审专家可独立对候选人作出评价,系统将汇总所有评审意见,转化为群体抉择的参考蓝本。 此类集体决策架构有助于削减个体主观倾向,提升决策的公平性与可靠性。 系统还配备了卓越的数据报表系统,能够输出多样化的招聘数据统计,例如求职者数量、面试合格率、新员工维系比率等,为企业实时呈现人力资源现状,有利于管理层制定更为得当的招募方针。 在实践操作层面,模拟人才招聘选拔群体决策支持系统不仅有助于提升招聘效能,压缩招聘开销,更能协助企业发掘潜在的高素质人才,为机构的长远进步注入动力。 然而,在运用此类系统时亦需关注应聘者隐私权保护,确保信息安全性,并融合人工评判,防止技术过度依赖,维持人性化招聘的基本...
下载前必看:https://pan.quark.cn/s/246cd895653f 标题所提及的“湖南省娄底市DEM数字高程数据30m(含本市级范围shp文件).zip”文件,属于地理信息系统(GIS)领域的压缩存储单元,其中收纳的是针对湖南省娄底市区域的数字高程模型(Digital Elevation Model, DEM)相关数据。 此数据集采用30米的空间分辨率,具体表现为在每30米乘以30米的网格单元内设定一个数据点来表征该区域的绝对高度,其作为地形特征研究、地表状况解析、城市布局规划、生态状况评价等工作的基础支撑。 “DEM数字高程”这一术语,指的是运用遥感科学与地理信息系统技术,将地球表面实际的地形地貌形态转化为数字化表示,用以体现地表的立体起伏形态。 30米的精确度级别表明此类数据具备较高的精细度,能够精确呈现地形的高度变化特征,尽管对于诸如微小山丘或陡峭悬崖等细微地形要素可能无法进行详细捕捉。 “shp文件”是一种被广泛采纳的GIS数据载体格式,由Esri公司研发,主要功能在于存储地理空间信息,涵盖点、线、面等多种几何形态。 在此具体情境下,shp文件用以界定娄底市的地理轮廓,从而明确数据所覆盖的地理范围。 标签中的“30米地形数据”着重突出了数据的分辨率属性,“娄底市”与“地理信息数据”则清晰界定了数据的应用范畴与领域。 压缩文件内部的文件名称清单揭示了数据的不同构成要素:1. **娄底市范围.dbf**: 此类文件为关联性的数据库文档,负责存储与.shp文件相配套的属性信息,例如地理位置的元数据详情。 2. **娄底市dem.tif.ovr**: 作为TIFF图像的辅助文件,其用途在于储存额外的元数据或重叠数据,有助于优化图像的视觉呈现效能。 3. **娄底...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值