|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
CoreAnimation---制作动画很强大很喜欢的框架可以用少量的代码写出漂亮的动画CQuartz2D---强大的2D绘图库COpenGL---不用介绍了超级强大的3D库CCoreImage---申明:这篇文章次要先容了怎样在安卓Fragment中利用摄像头摄影并保留图象和缩略图。
这篇文章是我的“AndroidStudio下用Fragment举行摄像头开辟系列文章五篇”的第一篇,假如你还没做好筹办,能够先看看我的代码,GitHub:UltimateAndroidCameraGuide。这篇教程中也会具体对代码举行申明,次要参考这个文件:SimpleCameraIntentFragment.java。
在入手下手之前,先花点工夫申明一动手机设备的功效和公布App时必要思索的设备功效检测成绩。
你的设备有摄像头吗?
为了确保市场上的年夜多半设备都能运转你的程序,必需在项目中做一些检测,包管利用的设备能够实行你的代码。
我们能够这么做:
- 在程序的设置清单文件中标明请求利用摄像头;
- 在代码顶用PackageManager举行设备功效检测;
在项目标androidManifest文件中请求利用摄像头,代码以下:
1
<uses-featureandroid:name="android.hardware.camera"android:required="true"/>
(在一个Fragment中)用PackageManager在代码中检测设备是不是含有摄像头,代码以下:
1
2
3
4
5
6
7
8
Contextcontext=getActivity();
PackageManagerpackageManager=context.getPackageManager();
if(packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA)==false){
Toast.makeText(getActivity(),
"Thisdevicedoesnothaveacamera.",
Toast.LENGTH_SHORT).show();
return;
}
假如有一个大概多个摄像头怎样办?
在一些安卓设备上会有前置摄像头和后置摄像头,我们能够用PackageManager来对摄像头举行功效检测,比方:
1
context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)
一般我们必要检测的是摄像头的这些功效:
- FEATURE_CAMERA_FRONT(检测是不是含有前置摄像头)
- FEATURE_CAMERA(检测是不是含有后置摄像头)
- FEATURE_CAMERA_ANY(检测是不是含有恣意一个摄像头)
Fragment和摄像头Intent组件
用AndroidStudio翻开我们的示例代码,然后在navigationdrawer当选择“SimpleCameraIntent”,你会看到以下画面:
<br>
当你选择”TakePhoto“,内部的摄影程序就会弹出来,然后我们就能够摄影了。摄影的了局会被显现在主界面上,缩略图也会显现在一个小地区里。翻开SimpleCameraIntentFragment.java,能够看到上面这个办法(摘录自Google’sSimpleCameradocumentation):
<p>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
/***Startthecamerabydispatchingacameraintent.*/
protectedvoiddispatchTakePictureIntent(){
//Checkifthereisacamera.
Contextcontext=getActivity();
PackageManagerpackageManager=context.getPackageManager();
if(packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA)==false){
Toast.makeText(getActivity(),"Thisdevicedoesnothaveacamera.",Toast.LENGTH_SHORT).show();return;
}//Cameraexists?Thenproceed...
IntenttakePictureIntent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
//EnsurethattheresacameraactivitytohandletheintentCameraActivityactivity=(CameraActivity)getActivity();
if(takePictureIntent.resolveActivity(activity.getPackageManager())!=null){
//CreatetheFilewherethephotoshouldgo.
//Ifyoudontdothis,youmaygetacrashinsomedevices.
FilephotoFile=null;
try{
photoFile=createImageFile();
}catch(IOExceptionex){
//ErroroccurredwhilecreatingtheFile
Toasttoast=Toast.makeText(activity,"Therewasaproblemsavingthephoto...",Toast.LENGTH_SHORT);
toast.show();
}//ContinueonlyiftheFilewassuccessfullycreated
if(photoFile!=null){
<p>UrifileUri=Uri.fromFile(photoFile);activity.setCapturedImageURI(fileUri);activity.setCurrentPhotoPath(fileUri.getPath());t
一个人负责协调他们的工作并且如果有新增加的衣服或者要移除之前的衣服通知他俩(NSManagedObjectContext)NSManagedObject |
|