基于安卓平台的照片拍摄于裁剪
Android移动应用开发技术中的相机与图像处理方法(一)

Android移动应用开发技术中的相机与图像处理方法随着智能手机的普及,移动应用开发成为了一个蓬勃发展的行业。
在这个行业中,相机和图像处理技术占据了重要的地位。
本文将探讨在Android移动应用开发中相机和图像处理方法的应用。
1. 相机的应用相机是手机最常用的功能之一,随时随地都可以记录下美好的瞬间。
在Android开发中,可以使用系统默认提供的相机应用,也可以自定义相机功能。
自定义相机可以为应用程序带来更多的功能和自由度。
例如,可以添加实时滤镜、调整曝光度、对焦方式等。
为了实现这些功能,需要了解Android相机API和图像处理技术。
2. 图像数据处理在Android移动应用开发中,我们需要对相机拍摄的图像数据进行处理。
有两种处理图像数据的方法:使用Bitmap类和使用OpenCV 库。
Bitmap类是Android提供的图像处理工具之一。
它可以用于图像的压缩、裁剪、缩放等基本操作。
同时,它还可以进行像素级的操作,如亮度调整、颜色滤镜应用等。
使用OpenCV库可以进行更为复杂的图像处理操作。
OpenCV是一个开源的计算机视觉库,提供了很多强大的图像处理算法和函数。
使用OpenCV可以实现人脸识别、图像分割、特征提取等高级图像处理任务。
3. 相机功能的扩展除了基本的拍照功能,相机还可以实现更多的功能扩展。
例如,人脸识别、拍摄连拍、HDR模式等等。
这些功能的实现需要深入了解Android相机API和图像处理算法。
人脸识别是一种常见的相机应用扩展功能。
通过分析图像中的人脸特征,可以实现面部表情检测、人脸识别等功能。
实现人脸识别需要使用OpenCV库中的人脸分类器和特征提取技术。
拍摄连拍是另一个常见的相机应用扩展功能。
通过一次性连续拍摄多张照片,可以捕捉到更多美丽瞬间。
实现拍摄连拍功能需要使用Android相机API中的连续拍摄模式。
HDR模式是拍摄高动态范围图像的一种技术。
通过在不同曝光条件下拍摄多张照片,然后将这些照片合成一张高质量的图像,实现更丰富的画面细节。
Android图形图像处理实践

Android图形图像处理实践随着智能手机的普及以及人们对图像的需求日益增加,图形图像处理技术这一领域也愈发重要。
Android作为目前最流行的移动操作系统之一,其开放性和易用性吸引了越来越多的开发者和用户。
在Android开发中,图形图像处理是一项非常重要的任务。
本文将介绍在Android平台上进行图形图像处理的实践。
一、Bitmap类在Android平台上,Bitmap类是进行图像处理的主要工具。
它提供了大量的方法来进行图像处理,例如压缩和缩放等等。
Bitmap类是Android平台上非常重要的类之一,它在内存中保存图像数据,我们可以对它进行许多操作,例如绘制、裁剪、旋转和色彩处理等等。
二、图像压缩由于手机中的内存和存储容量受限,所以我们需要对图片进行压缩处理。
常见的压缩方法是通过设置Bitmap类中的options参数来实现。
options 中有一个inSampleSize参数,用于指定采样率,即裁剪图片时选取的点数。
我们可以通过设置inSampleSize的值来实现压缩,这也是Android平台上最常用的压缩方法之一。
三、图像缩放在Android平台上,图像缩放也是需要用到Bitmap类的。
由于实际应用中需要缩放的图片大小和比例各不相同,所以我们需要提供不同的缩放方法。
其中最常用的方法是通过设置Bitmap类的options参数来实现缩放。
四、图像裁剪在进行图像处理时,图像裁剪也是非常常见的操作。
在Android平台上,我们可以通过设置Bitmap类的裁剪区域来实现裁剪,进而实现对图片的处理。
五、图像色彩处理当我们在进行图像处理时,有时候需要修改图片的色彩。
在Android平台上,我们可以通过设置Bitmap类的色彩矩阵来实现色彩处理。
色彩矩阵是一个4x5的矩阵,它定义了一个变换矩阵,可以通过变换矩阵来改变图片的颜色和透明度等属性。
六、图像旋转进行图像旋转也是非常常见的操作之一。
在Android平台上,我们可以通过设置Bitmap类的旋转角度来实现图像旋转。
Android拍照剪裁功能实现步骤详解

android:id="@+id/box_pic" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="200dp" android:padding="4dp"> <ImageView
import java.text.SimpleDateFormat; import java.util.Date;
/** * ૡٍᔄ * Created by ਃည on 2016/6/15. */
public class Utils {
/** * ᧣ᦶ௳מᬌڊ * @param context * @param msg
if (requestCode==Cons.SELECT_PIC_BY_TACK_PHOTO && resultCode== RESULT_OK ){// ೌᆙ౮ ۑRESULT_OK= -1 // ᆙᇆᬰᤈۄےૡ startPhotoZoom(Uri.fromFile(tempFile), 150);
}
10 Ⴒےଉᰁᔄ
package spl.example.takepicture;
/** * ଉᰁᔄ * @author ਃည * */
public class Cons {
/** ֵአᆙፘೌᆙ឴ࢶݐᇆ */ public static final int SELECT_PIC_BY_TACK_PHOTO = 1; /** ֵአፘٙӾጱࢶᇆ */ public static final int SELECT_PIC_FROM_ALBUM = 2;
Android移动应用开发技术中的相机与图像处理方法(五)

Android移动应用开发技术中的相机与图像处理方法移动应用开发的爆炸性增长使得我们现在几乎可以在任何地方使用手机进行各种操作。
而在移动应用中,相机和图像处理是非常重要且常见的功能。
本文将介绍Android移动应用开发中的相机和图像处理方法,帮助读者了解如何在Android应用中实现高质量的照片拍摄和图像处理。
一、相机调用与基础设置在Android开发中,调用相机是实现拍摄功能的首要步骤。
通过调用系统相机应用,我们可以让用户进行照片拍摄。
在调用相机之前,我们需要在文件中添加相机权限。
在代码中,我们可以使用Intent来启动相机应用,并指定照片的保存路径和其他一些参数。
同时,我们还可以通过设置相机预览界面的布局来提供更好的用户体验。
二、照片拍摄与后处理照片拍摄是移动应用中最基础也是最常见的功能之一。
在拍摄照片时,我们可以调用相机应用来实现。
然而,有时我们需要对拍摄的照片进行后处理,以提升照片的质量或添加特效。
在Android开发中,我们可以使用一些库来实现图像的处理和编辑,如OpenCV和Glide等。
通过这些库,我们可以实现图像的裁剪、旋转、滤镜等操作。
三、图像处理与滤镜效果图像处理和滤镜效果可以为移动应用增添更多的创意和娱乐性。
在Android开发中,我们可以使用图像处理算法和滤镜库来实现各种有趣的效果。
例如,我们可以使用图像处理算法来实现图像的边缘检测、颜色增强等操作。
而通过滤镜库,我们可以为照片添加黑白、复古、漏光等各种滤镜效果。
这些功能可以帮助我们在移动应用中创建出令人惊艳的图像效果。
四、相机和图像处理的性能优化在移动应用中,性能优化是非常重要的,尤其是在相机和图像处理方面。
由于拍摄和处理照片可能会消耗大量的系统资源,我们需要注意在代码中进行性能优化。
其中一项重要的优化技术是使用异步任务来处理图像,以避免阻塞主线程造成应用的卡顿。
此外,我们还可以使用缓存机制来减少对图像资源的重复加载,从而提升应用响应速度。
Android移动应用开发技术中的相机与图像处理方法(十)

相机和图像处理技术一直是Android移动应用开发中非常重要的一部分。
随着移动设备的普及,用户对于拍照和图像处理的需求也越来越高。
在本篇文章中,我们将探讨Android移动应用开发中的相机和图像处理方法,并了解如何利用这些方法来提升应用的用户体验。
一、相机的基本知识在Android移动应用开发中,相机是一个非常重要的组件。
它可以让我们的应用调用设备的摄像头来进行拍照或者录像。
在调用摄像头之前,我们需要确保设备的摄像头可用,并获取相机的权限。
打开相机在Android中,我们可以使用Camera类来打开相机。
首先,我们需要在文件中添加相机的权限:```<uses-permission android:name="" />```然后,我们可以使用以下代码来打开相机:```Camera camera = ();```拍照与录像打开相机之后,我们就可以使用Camera类的方法来进行拍照和录像。
例如,我们可以使用以下代码来拍照:```(null, null, pictureCallback);```在这段代码中,pictureCallback是一个对象,用于处理拍摄的照片数据。
我们可以在pictureCallback中对拍摄的照片进行处理,比如保存到本地或者上传到服务器。
同样的,我们也可以使用Camera类的方法来进行录像。
例如,我们可以使用以下代码来开始录像:```MediaRecorder recorder = new MediaRecorder();();(camera);();();(_4);();();(());(());();();```在这段代码中,我们首先创建了一个MediaRecorder对象,然后将相机对象(camera)和输出文件(outputFile)设置给它。
最后,我们调用prepare()方法准备录制,然后调用start()方法开始录制。
二、图像处理方法与相机一样,图像处理也是Android移动应用开发中重要的一部分。
【推荐下载】Android实现拍照、选择图片并裁剪图片功能

Android 实现拍照、选择图片并裁剪图片功能2016/10/16 0 一、实现拍照、选择图片并裁剪图片效果按照之前博客的风,首先看下实现效果。
二、uCrop 项目应用想起之前看到的Yalantis/uCrop 效果比较绚,但是研究源码之后发现在定制界面方面还是有一点的限制,于是在它的基础上做了修改Android-Crop,把定制界面独立出来,让用户去自由设置。
下图为使用Android-Crop 实现的模仿微信选择图片并裁剪Demo。
三、实现思路比较简单的选择设备图片裁剪,并将裁剪后的图片保存到指定路径;调用系统拍照,将拍照图片保存在SD 卡,然后裁剪图片并将裁剪后的图片保存在指定路径。
流程图如下所示:四、选择框实现这里通过PopupWindow 来实现,当然也可以根据需求采用其他方式实现。
实现效果如下图所示:1. XML 布局?xml version= 1.0 encoding= utf-8 ? RelativeLayout xmlns:android= schemas.android/apk/res/android android:layout_width= fill_parent android:layout_height= wrap_content android:gravity= center_horizontal android:orientation= vertical LinearLayout android:id= @ id/pop_layout android:layout_width= match_parent android:layout_height= wrap_content android:layout_alignParentBottom= true android:background= #444 android:gravity= center_horizontal android:orientation= vertical Button android:id= @ id/picture_selector_take_photo_btn android:layout_width= match_parent android:layout_height= wrap_content android:layout_marginLeft= 10dip android:layout_marginRight= 10dip android:layout_marginTop= 10dp。
【黑马程序员】安卓中选择本地图片或拍照获取图片并裁剪...
【黑马程序员】安卓中选择本地图片或拍照获取图片并裁剪在开发的时候我们经常遇到一种需求,就是让用户上传一张图片作为头像。
这个图片可能是从相册中选择的,也可能是使用摄像头现拍的。
不过得到的图片都会进行一步裁剪的操作。
下面我们就来实现一下这个需求。
首先我们定义一个Activity ,布局里只放置一个按钮和一个ImageView ,按钮点击的时候让用户选择并裁剪图片,ImageView 作为最终显示结果的View 对象。
布局代码如下: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 <?xml version ="1.0" encoding ="utf-8"?><LinearLayout xmlns :android ="/apk/res/android"android :layout_width ="match_parent"android :layout_height ="match_parent"android :orientation ="vertical"><Buttonandroid :id ="@+id/btn_crop"android :layout_width ="match_parent"android :layout_height ="wrap_content"android :text ="点"/><ImageViewandroid :id ="@+id/iv_img"android :layout_width ="wrap_content"android :layout_height ="wrap_content"/></LinearLayout >接下来在Activity 中设置button 的点击事件,当按钮被点击的时候就弹出一个对话框来让用户选择是从相册还是拍照得到图片。
证件照尺寸如何通过手机剪裁
证件照的尺寸其实有很多,不同的证件照对其尺寸的要求也不同,当我们弄错证件照尺寸的时候,我们还是有方法快速修改的,别着急,下面我就给大家说说手机如何修改证件照尺寸。
第一步,打开手机的应用商店或者手机应用宝,来找到智能证件照相机,并将它安装到手机上。
第二步,打开智能证件照相机选择所要拍摄证件照的尺寸,借助手机后置摄像头来进行拍摄,就可以拍下证件照片。
第三步,当手机拍好之后即可预览证件照,同时还可以对证件照的底色进行修改,修改完成后点击保存,就可以在相册中查看正确尺寸的证件照了。
学会以上的方法之后,我们就可以在手机上快速修改自己需要的证件照尺寸了,不知道大家都学会了吗?。
Android调用系统的照相,浏览图片,转存并裁剪!
Android调用系统的照相,浏览图片,转存并裁剪![java]view plaincopy1.public class AddCardActivity extends Activity {2.3.4.private Button add;5.6.private Button take_p;7.8.private Button app_ol;9.10.private File sdCard;11.12.private File sdPhoto;13.14.private AlphaAnimation anim_alpha;15.16.private int menu = -1;17.18.private final int LOCAL = 0;19.20.private final int TAKE = 1;21.22.private final int APP = 2;23.24.25.26.public void onCreate(Bundle savedInstanceState) {27.28.super.onCreate(savedInstanceState);29.30.//全屏显示31.32.ActivityUtil.noNotificationBar(this);33.34.ActivityUtil.noTitleBar(this);35.36.37.setContentView(yout.addcard);38.39.//转存出的路径40.41.sdPhoto = new File("/sdcard/card_xx/photo_xx");42.43.if(!sdPhoto.exists()){44.45.sdPhoto.mkdirs();46.47.}48.49.//转存出的文件50.51.sdCard = new File("/sdcard/card_xx/aa.png");52.53.54.55.add = (Button)findViewById(R.id.add);56.57.take_p = (Button)findViewById(R.id.take_p);59.app_ol = (Button)findViewById(R.id.app_ol);60.61.62.63./* 事件处理 */64.65.setListener();66.67.68.69.anim_alpha = new AlphaAnimation(0.5f, 0.5f);70.71.anim_alpha.setDuration(80);72.73.anim_alpha.setRepeatCount(1);74.75.anim_alpha.setAnimationListener(new AnimationListe ner() {76.77.public void onAnimationStart(Animation animation) {78.79.}80.81.public void onAnimationRepeat(Animation animation) {82.83.}84.85.public void onAnimationEnd(Animation animation) {87.switch (menu) {88.89.case LOCAL:90.91.Intent intent = new Intent(Intent.ACTION_GET_CONTE NT);92.93.intent.setType("image/*");94.95.startActivityForResult(intent, 1);96.97.break;98.99.case TAKE:100.101.intent=new Intent(MediaStore.ACTION_IMAGE_CAPTU RE);102.103.File out = new File(Environment.getExternalStorageDir ectory(),"camera.png");104.105.Uri uri = Uri.fromFile(out);106.107.intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);108.109.110.startActivityForResult(intent, 3);111.112.break;114.case APP:115.116.intent = new Intent();117.118.intent.setClass(AddCardActivity.this, TemplateListActivi ty.class);119.120.startActivityForResult(intent, 9);121.122.break;123.124.}125.126.}127.128.});129.130.}131.132.133.134.private void setListener()135.136.{137.138./* 本地导入按钮事件处理 */139.140.add.setOnClickListener(new OnClickListener() {141.142.public void onClick(View v) {143.144.menu = LOCAL;145.146.add.setAnimation(anim_alpha);147.148.anim_alpha.startNow();149.150.add.invalidate();151.152.}153.154.});155.156.157.158./* 拍照按钮事件处理 */159.160.take_p.setOnClickListener(new OnClickListener() { 161.162.public void onClick(View v) {163.164.menu = TAKE;165.166.take_p.setAnimation(anim_alpha);167.168.anim_alpha.startNow();169.170.take_p.invalidate();171.172.}173.174.});175.176.177.178./* 在线申请事件处理 */179.180.app_ol.setOnClickListener(new OnClickListener() 181.182.{183.184.public void onClick(View v)185.186.{187.188.menu = APP;189.190.app_ol.setAnimation(anim_alpha);191.192.anim_alpha.startNow();193.194.app_ol.invalidate();195.196.}197.198.}199.200.);201.202.203.204.}205.206./* 返回值处理 */207.208.protected void onActivityResult(int requestCode, int re sultCode, Intent data) {209.210.if (resultCode == RESULT_OK){211.212.switch (requestCode) {213.214./* 裁剪功能 ,裁剪后跳到2保存*/215.216.case 1:217.218.Intent cj = new Intent("com.android.camera.action.CR OP");219.220.cj.setData( data.getData());221.222.cj.putExtra("crop", "true");223.224.cj.putExtra("aspectX", 3);225.226.cj.putExtra("aspectY", 2);227.228.cj.putExtra("outputX",384 );229.230.cj.putExtra("outputY", 256);231.232.cj.putExtra("noFaceDetection", true);233.234.cj.putExtra("return-data", true);235.236.startActivityForResult(Intent.createChooser(cj, "裁剪") , 2);237.238.break;239.240./* 保存并跳转 */241.242.case 2:243.244.Intent intent = new Intent();245.246.Bundle extras = data.getExtras();247.248.if(extras != null ) {249.250.Bitmap photo = extras.getParcelable("data");251.252.try {253.254.FileOutputStream outStreamz = new FileOutputStrea m(sdCard);255.press(pressFormat.PNG, 50, ou tStreamz);257.258.outStreamz.close();259.260.} catch (FileNotFoundException e) {261.262. e.printStackTrace();263.264.}265.266.catch (IOException e) {267.268. e.printStackTrace();269.270.}271.272.intent.setClass(AddCardActivity.this,ChooseABActivity. class);273.274.startActivity(intent);275.276.finish();277.278.}279.280.break;281.282./* 拍照后保存图片,并跳到裁剪功能 */283.284.case 3:285.286.Intent cj1 = new Intent("com.android.camera.action.C ROP");287.288.try {289.290.cj1.setData(Uri.parse(android.provider.MediaStore.Ima ges.Media.291.292.insertImage(getContentResolver(),"/sdcard/camera.pn g", null, null)));293.294.} catch (FileNotFoundException e) {295.296. e.printStackTrace();297.298.}299.300.cj1.putExtra("crop", "true");301.302.cj1.putExtra("aspectX", 3);303.304.cj1.putExtra("aspectY", 2);305.306.cj1.putExtra("outputX",384 );307.308.cj1.putExtra("outputY", 256);309.310.cj1.putExtra("return-data", true);311.312.startActivityForResult(cj1, 2);314.File camera = new File("/sdcard/camera.png"); 315.316.if(camera.exists())317.318.camera.delete();319.320.break;321.322.}323.324.}325.326.327.328.if (requestCode == 9) {329.330.Intent i=new Intent(this,MainMenuActivity.class); 331.332.startActivity(i);333.334.finish();335.336.}337.338.}339.340.341.342.@Override344.public boolean onKeyDown(int keyCode, KeyEvent eve nt) {345.346.347.348.if(keyCode==KeyEvent.KEYCODE_BACK)349.350.{351.352.Intent i=new Intent(this,MainMenuActivity.class);353.354.startActivity(i);355.356.finish();357.358.}359.360.return super.onKeyDown(keyCode, event);361.362.}363.364.365.366.}367.368./******************************************************** ******************************************************************* ***********************/369.370.如果照相之后要添加裁剪:371.372.class TakePicture implements OnClickListener{373.374.public void onClick(View v) {375.takePic();376.377.File picture = new File("/sdcard/picture.jpg");378.Intent intent = new Intent("com.android.camera.action .CROP");379.380./**************如果不加这句话,会报错,找不到裁剪的Activity******/381.intent.setDataAndType( Uri.fromFile(file),"image/*);382.383./******************************************************** ************************/384.385.intent.putExtra("crop", "true");386.intent.putExtra("aspectX", 3);387.intent.putExtra("aspectY", 2);388.intent.putExtra("outputX",384 );389.intent.putExtra("outputY", 256);390.intent.putExtra("return-data", true);391.startActivityForResult(intent, OVER);392.finish();393.}394.}395.396./*************************************************************************************************************************** ********************/。
Android移动应用开发技术中的相机与图像处理方法(四)
Android移动应用开发技术中的相机与图像处理方法背景介绍:随着智能手机的普及和移动应用的快速发展,相机和图像处理在Android移动应用开发中变得越来越重要。
相机和图像处理不仅可以提供更好的用户体验,还为应用程序添加了更多的功能和互动性。
本文将介绍Android移动应用开发技术中的相机与图像处理方法。
一、相机的使用与调用在Android开发中,相机功能是非常广泛使用的,它可以用于拍摄照片、录制视频等。
通过调用相机API,我们可以实现启动相机应用、拍照或录制功能。
在调用相机之前,我们需要进行相机权限的申请,并检查设备是否支持相机功能。
当用户点击拍照按钮时,我们可以使用Intent调用系统相机应用,并接收返回的拍摄结果,如照片的路径或视频的Uri。
此外,还可以使用Camera类直接访问相机,并实现更多自定义的相机功能。
二、图像处理的基础知识图像的处理是指对图像进行各种操作和处理,以达到改变图像质量、增强细节、减少噪声等效果。
在Android开发中,图像处理是一个重要的部分,它可以应用于各种场景,如图像滤镜、图像识别、人脸识别等。
1. 图像的加载和显示在Android中,我们可以使用Bitmap类来加载和显示图像。
Bitmap是一个表示图像的类,它可以从文件、网络、资源等地方加载图像,并在ImageView或其他自定义的视图中进行显示。
2. 图像处理的常见方法图像处理方法有很多,其中一些常见的方法包括:- 调整图像的亮度、对比度和饱和度:通过调整图像的像素值,可以改变图像的亮度、对比度和饱和度。
这可以使用ColorMatrix类来实现,通过设置不同的矩阵值来改变图像的颜色效果。
- 图像的缩放与裁剪:通过缩放和裁剪图像,我们可以改变图像的尺寸和比例。
Bitmap类提供了相关的方法来实现图像的缩放和裁剪操作。
- 图像的旋转和翻转:通过旋转和翻转图像,我们可以改变图像的方向和视角。
Bitmap类也提供了相应的方法来实现图像的旋转和翻转操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计(2013-2014学年第二学期)课程名称:学生姓名:专业班级: 11级计算机2班学院:信电学院学号:学生成绩:拍照裁剪软件1.项目介绍该软件是运行才安卓手机上的一个裁剪图片程序,先拍照,然后截取拍好的照片的一部分存储。
最初是由农电的田老师和软件创新中心的李竹林老师让做的一个手机端的叶片病理识别的程序,我做的是手机显示出来的界面,病理识别的核心部分由另一个研二学生做。
运行流程大概如下:1.点击图标启动程序后,会有一个“裁剪图片”的按钮,点击后会启动相机,由于边缘部分会变形,进入下一步裁剪图片,会出现一个裁剪图片的框,自由截取图片大小。
2.结构流程3.程序代码由于Android的应用程序运行在一个框架中,所以代码分布在几个文件中。
AndroidMainfest.xml部分代码:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="cn.test"android:versionCode="1"android:versionName="1.0" ><uses-sdk android:minSdkVersion="8" /><applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name" ><activityandroid:label="@string/app_name"android:name=".CutActivity" ><intent-filter ><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /> </intent-filter></activity></application></manifest>CutActivity.java部分代码:package cn.test;import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;import android.app.Activity;import android.content.ContentResolver;import android.content.ContentUris;import android.content.Intent;import android.database.Cursor;import android.graphics.Bitmap;import .Uri;import android.os.Bundle;import android.provider.MediaStore;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;public class CutActivity extends Activity {private Button button;private ImageView imageView;private File mCurrentPhotoFile;private Bitmap cameraBitmap;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);button = (Button) findViewById(R.id.button);imageView = (ImageView) findViewById(R.id.imageView);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");mCurrentPhotoFile = new File("mnt/sdcard/DCIM/Camera/",getPhotoFileName());intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(mCurrentPhotoFile));startActivityForResult(intent,Activity.DEFAULT_KEYS_DIALER);}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (requestCode) {case 1:Uri imgUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;ContentResolver cr = CutActivity.this.getContentResolver();Uri fileUri = Uri.fromFile(mCurrentPhotoFile);sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, fileUri));try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}Cursor cursor = cr.query(imgUri, null,MediaStore.Images.Media.DISPLAY_NAME + "='"+ mCurrentPhotoFile.getName() + "'",null, null);Uri uri = null;if (cursor != null && cursor.getCount() > 0) {cursor.moveToLast();long id = cursor.getLong(0);uri = ContentUris.withAppendedId(imgUri, id);}final Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");intent.putExtra("crop", "true");intent.putExtra("outputX", 380);intent.putExtra("outputY", 500);intent.putExtra("return-data", true);CutActivity.this.startActivityForResult(intent, 3);break;case 2:break;case 3:if (data != null) {cameraBitmap = (Bitmap) data.getExtras().get("data");imageView.setImageBitmap(cameraBitmap);}break;default:break;}super.onActivityResult(requestCode, resultCode, data);}private String getPhotoFileName() {Date date = new Date(System.currentTimeMillis());SimpleDateFormat dateFormat = new SimpleDateFormat("'IMG'_yyyyMMdd_HHmmss");return dateFormat.format(date) + ".jpg";}}Mai.xml部分代码:<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="剪辑图片"/><ImageViewandroid:id="@+id/imageView"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>4.运行截图5.总结安卓的程序写起来不是太难,就是稍微复杂了一点,Android 的应用程序运行在一个框架中, Android框架做得比较精妙: 1. 应用的各个功能,都被切割成一个个的Activity对象,2. Activity 都在AndroidManifest.xml这个xml中注册, 并且规定那个Activity 是启动Activity,3. Activity 之间是可以通信的,Android的布局方式很好的,采用了HTML的配置布局方式,非常不错,界面本来就是配的,而不是代码写的,这一点跟C#多少有点像。