`
yezhiqiu-love
  • 浏览: 169158 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 调用系统的照相,浏览图片,转存并裁剪!

阅读更多

public class AddCardActivity extends Activity {


private  Button add;

private  Button take_p;

private Button app_ol;

private File sdCard;

private File sdPhoto;

   private AlphaAnimation anim_alpha; 

     private int menu = -1;

     private final int LOCAL = 0;

     private final int TAKE = 1;

     private final int APP = 2;

    

     public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

       //全屏显示

            ActivityUtil.noNotificationBar(this);

            ActivityUtil.noTitleBar(this);


    setContentView(R.layout.addcard);

         //转存出的路径

            sdPhoto = new File("/sdcard/card_xx/photo_xx");

         if(!sdPhoto.exists()){

         sdPhoto.mkdirs();

        }

//转存出的文件

        sdCard = new File("/sdcard/card_xx/aa.png");

        

        add = (Button)findViewById(R.id.add);

        take_p = (Button)findViewById(R.id.take_p);

        app_ol = (Button)findViewById(R.id.app_ol);

        

        /* 事件处理 */

        setListener();

        

        anim_alpha = new AlphaAnimation(0.5f, 0.5f);

anim_alpha.setDuration(80);

anim_alpha.setRepeatCount(1);

anim_alpha.setAnimationListener(new AnimationListener() {

public void onAnimationStart(Animation animation) {

}

public void onAnimationRepeat(Animation animation) {

}

public void onAnimationEnd(Animation animation) {

switch (menu) {

case LOCAL:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 

intent.setType("image/*");

startActivityForResult(intent, 1);

break;

case TAKE:

   intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

   File out = new File(Environment.getExternalStorageDirectory(),"camera.png");

   Uri uri = Uri.fromFile(out);

   intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);


   startActivityForResult(intent, 3); 

break;

case APP:

intent = new Intent();

intent.setClass(AddCardActivity.this, TemplateListActivity.class);

startActivityForResult(intent, 9);

break;

}

}

});

    }

    

    private void setListener()

    {

     /* 本地导入按钮事件处理 */

        add.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

menu = LOCAL;

add.setAnimation(anim_alpha);

         anim_alpha.startNow();

         add.invalidate();

}

});

        

        /* 拍照 按钮事件处理 */

        take_p.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

menu = TAKE;

take_p.setAnimation(anim_alpha);

         anim_alpha.startNow();

         take_p.invalidate();

});

        

        /* 在线申请事件处理 */

        app_ol.setOnClickListener(new OnClickListener()

        {

         public void onClick(View v)

         {

         menu = APP;

         app_ol.setAnimation(anim_alpha);

         anim_alpha.startNow();

         app_ol.invalidate();

         }

        }

        );

        

    }

        /* 返回值处理 */

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (resultCode == RESULT_OK){

    switch (requestCode) {

    /* 裁剪功能 ,裁剪后跳到2保存*/

case 1:

Intent cj = new Intent("com.android.camera.action.CROP");

cj.setData( data.getData());

cj.putExtra("crop", "true");

cj.putExtra("aspectX", 3);  

cj.putExtra("aspectY", 2);   

cj.putExtra("outputX",384 );

cj.putExtra("outputY", 256);

cj.putExtra("noFaceDetection", true);  

cj.putExtra("return-data", true); 

startActivityForResult(Intent.createChooser(cj, "裁剪") , 2);

break;

/* 保存并跳转 */

case 2:

Intent intent = new Intent();

Bundle extras = data.getExtras();

if(extras != null ) {  

   Bitmap photo = extras.getParcelable("data");  

   try {

FileOutputStream outStreamz = new FileOutputStream(sdCard);

photo.compress(Bitmap.CompressFormat.PNG, 50, outStreamz);

outStreamz.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

}

catch (IOException e) {

e.printStackTrace();

}

   intent.setClass(AddCardActivity.this,ChooseABActivity.class);

startActivity(intent);

finish();

}

break;

/* 拍照后保存图片,并跳到裁剪功能  */

case 3:

Intent cj1 = new Intent("com.android.camera.action.CROP");

try {

cj1.setData(Uri.parse(android.provider.MediaStore.Images.Media.

insertImage(getContentResolver(),"/sdcard/camera.png", null, null)));

} catch (FileNotFoundException e) {

e.printStackTrace();

}                

cj1.putExtra("crop", "true");

cj1.putExtra("aspectX", 3);  

cj1.putExtra("aspectY", 2);   

cj1.putExtra("outputX",384 );

cj1.putExtra("outputY", 256);

cj1.putExtra("return-data", true); 

startActivityForResult(cj1, 2);

File camera = new File("/sdcard/camera.png");

if(camera.exists())

 camera.delete();

break;

}

    }

     

    if (requestCode == 9) {

    Intent i=new Intent(this,MainMenuActivity.class);

    startActivity(i);

    finish();

    }

   }

    

    @Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

     

    if(keyCode==KeyEvent.KEYCODE_BACK)

    {

    Intent i=new Intent(this,MainMenuActivity.class);

    startActivity(i);

    finish();

    }

return super.onKeyDown(keyCode, event);

    

}


/**************************************************************************************************************************************************/

如果照相之后要添加裁剪:

 class TakePicture implements OnClickListener{

  public void onClick(View v) {
   takePic(); 

   File picture = new File("/sdcard/picture.jpg");
   Intent intent = new Intent("com.android.camera.action.CROP");     

/**************如果不加这句话,会报错,找不到裁剪的Activity******/
 intent.setDataAndType( Uri.fromFile(file),"image/*);

/********************************************************************************/

   intent.putExtra("crop", "true");
   intent.putExtra("aspectX", 3); 
   intent.putExtra("aspectY", 2);  
   intent.putExtra("outputX",384 );
   intent.putExtra("outputY", 256); 
   intent.putExtra("return-data", true);
   startActivityForResult(intent, OVER);
   finish();
  }
  }

/***********************************************************************************************************************************************/

分享到:
评论
1 楼 yyj007 2011-09-18  
您能给我提供一下这个例子的源代码吗?
我的邮箱是yyj.tom@gmail.com

相关推荐

    Android调用系统相机/相册并裁剪源码

    本文将详细讲解如何在Android中调用系统相机和相册,并实现图片的裁剪功能。我们将通过一个简单的示例项目——`testDemo02`来深入理解这个过程。 首先,我们需要在AndroidManifest.xml文件中添加必要的权限,以便...

    Android7.0调用系统相册、拍照裁剪及压缩

    总结,Android 7.0调用系统相册、拍照、裁剪及压缩涉及到的主要知识点有:权限管理、Intent的使用、相机API、图片选择API、图片裁剪API和图片压缩技术。在实现过程中,要注意处理兼容性和权限问题,确保应用在各种...

    android调用系统相机并裁剪图片

    在Android开发中,调用系统相机并裁剪图片是一个常见的需求,主要应用于用户头像设置、上传照片等场景。下面将详细介绍如何实现这一功能。 首先,我们需要创建一个Intent来启动系统相机。Intent是Android中用来在...

    android调用系统拍照

    拍照或者从相册中选择图片后,我们都可以直接或间接的得到Uri或源文件。 通过`imageView.setImageUri(uri)`不会引发图片方向不正确的问题。 但是通过`BitmapFactory.decodeFile();`将源文件解析成Bitmap后再...

    Android调用系统图片裁剪限定尺寸及7.0照相问题的解决方法

    Android调用系统图片裁剪限定尺寸及7.0照相问题的解决方法 Android调用系统图片裁剪限定尺寸是指在Android系统中,使用系统自带的图片裁剪功能对图片进行裁剪处理,以满足不同的需求,例如裁剪图片的尺寸,调整图片...

    Android系统下选择图片及裁剪

    在Android系统中,选择图片和进行裁剪是常见的功能,特别是在用户需要上传个人头像或者进行个性化设置的应用场景。这个话题涉及到多个Android开发的关键知识点,包括Intent机制、多媒体文件访问权限、相机API以及...

    android 调用系统分享图片,文本和视频

    可以调用系统的分享功能,分享视频,图片到第三方软件。

    Android 调用系统照相机,相册,上传图片

    在Android开发中,调用系统照相机、相册以及上传图片是常见的功能需求,尤其在社交应用、生活服务类应用中十分常见。本教程将详细讲解如何实现这些功能。 一、调用系统照相机 1. 添加权限:首先在AndroidManifest....

    Android 实例讲解添加本地图片和调用系统拍照图片

    在项目的开发过程我们离不开图片 而有时候需要调用本地的图片 有时候需要调用拍照图片 同时实现拍照的方法有两种 一种是调用系统拍照功能 另一种是自定义拍照功能 而本博文目前只讲解第一种方法 第二种方法后期在...

    android相机拍照,存储 调用相册, 图片旋转,裁剪

    Android提供了Intent.ACTION_IMAGE_CROP来调用系统裁剪工具,但这个Intent并非所有设备都支持。因此,开发者可能需要自定义裁剪界面,如使用NineOldAndroids和 Glide 库来兼容老版本的Android,使用CropImage库(如...

    android 调用系统照相机功能

    在Android应用开发中,调用系统照相机功能是常见的需求,允许用户拍摄照片或录制视频。下面我们将深入探讨如何实现这一功能。 首先,我们需要在AndroidManifest.xml文件中添加权限,以便应用可以访问摄像头: ```...

    Android调用系统的相机,图库,以及裁剪图片功能。

    Android调用系统的相机,图库,以及裁剪图片功能。

    Android 调用系统相机拍摄获取照片的两种方法实现实例

    在我们Android开发中经常需要做这个一个功能,调用系统相机拍照,然后获取拍摄的照片。下面是我总结的两种方法获取拍摄之后的照片,一种是通过Bundle来获取压缩过的照片,一种是通过SD卡获取的原图。 下面是演示代码...

    creator实现调用android相机相册,并实现裁剪后图片的上传和下载

    在Android应用开发中,涉及到用户交互时,常常需要调用系统相机或相册来获取图片,然后进行裁剪处理,并最终上传至服务器。这个过程涵盖了多个关键知识点,包括权限管理、Intent启动相机与相册、图片裁剪、文件操作...

    Android高级应用源码-android 调用系统相机图库裁剪-图片上传-客服端(测试可用).zip

    在Android开发中,调用系统相机、图库以及图片裁剪和上传是常见的功能需求,尤其是在构建具有多媒体交互的应用时。这份"Android高级应用源码-android 调用系统相机图库裁剪-图片上传-客服端(测试可用).zip"的资源...

    Android 调用相机拍照 添加照片水印

    在Android应用开发中,调用相机拍照并添加照片水印是一项常见的需求,这涉及到与系统相机的交互、图片处理以及用户界面设计等多个方面。本文将详细介绍如何实现这一功能。 首先,调用系统相机进行拍照。Android提供...

    android 调用系统裁剪框 裁剪头像.zip

    在Android开发中,有时我们需要实现让用户选择图片并进行裁剪以适合作为头像的功能。这个"android 调用系统裁剪框 裁剪头像.zip"压缩包提供了一个简单的示例项目,名为UpLoadAvatarDemo,用于演示如何在Android应用...

    Qt for Android 调用原生系统摄像头进行录像并保存输出

    本文将详细介绍如何使用Qt for Android调用原生系统的摄像头进行录像,并保存录制的视频输出。 首先,我们需要理解Qt中的多媒体模块,即`Q Multimedia`框架。这个模块提供了与多媒体内容交互的能力,包括音频、视频...

    Android 调用系统相机拍照、以及相册

    在Android应用开发中,调用系统相机拍照和访问相册是常见的功能,用户可以通过这些功能获取并处理图像。本文将详细讲解如何实现这两个功能,并提供一个名为`TakePhotoDemo`的示例项目作为参考。 首先,调用系统相机...

    Android图片裁剪----移动、缩放图片进行裁剪

    总之,Android图片裁剪涉及多个方面,包括图像处理、手势识别和UI交互。通过掌握这些技术,开发者能够创建功能丰富的图片编辑应用,提升用户体验。在实际开发中,还需要考虑性能优化和兼容性问题,以确保应用在不同...

Global site tag (gtag.js) - Google Analytics