`

Android 之照相机的使用

阅读更多
package com.cloay.camera;
002  
003 import java.io.FileNotFoundException;
004  
005 import android.app.Activity;
006 import android.app.AlertDialog;
007 import android.content.ContentResolver;
008 import android.content.Intent;
009 import android.graphics.Bitmap;
010 import android.graphics.BitmapFactory;
011 import android.net.Uri;
012 import android.os.Bundle;
013 import android.view.MotionEvent;
014 import android.view.View;
015 import android.view.View.OnClickListener;
016 import android.view.View.OnTouchListener;
017 import android.widget.ImageButton;
018 import android.widget.ImageView;
019 /**
020  * 打开照相机或者图库添加图片
021  * CameraTestActivity.java
022  * @author Cloay
023  * 2011-11-30
024  */
025 public class CameraTestActivity extends Activity {
026     private ImageButton camera;
027     private ImageView image;
028     @Override
029     public void onCreate(Bundle savedInstanceState) {
030         super.onCreate(savedInstanceState);
031         setContentView(R.layout.main);
032          
033         image = (ImageView) findViewById(R.id.image);
034         camera = (ImageButton) findViewById(R.id.camera);
035         camera.setOnTouchListener(new OnTouchListener() {
036              
037             @Override
038             public boolean onTouch(View v, MotionEvent event) {
039                 if(event.getAction() == MotionEvent.ACTION_DOWN){
040                     v.setBackgroundResource(R.drawable.camera_bg_pressed);
041                 }
042                 if(event.getAction() == MotionEvent.ACTION_UP){
043                     showMenuDialog();
044                     v.setBackgroundResource(R.drawable.camera_bg_normal);
045                 }
046                 return false;
047             }
048         });
049     }
050      
051     private void showMenuDialog() {
052         View menuView = View.inflate(CameraTestActivity.this, R.layout.menu, null);
053         final AlertDialog menuDialog = new AlertDialog.Builder(CameraTestActivity.this)
054         .setView(menuView)
055         .setTitle("选择操作")
056 //      .setIcon(R.drawable.camera)
057         .create();
058         menuDialog.show();
059         menuView.findViewById(R.id.camera).setOnClickListener(new OnClickListener() {
060              
061             @Override
062             public void onClick(View v) {
063                 menuDialog.dismiss();
064                 Intent intentCamera = newIntent("android.media.action.IMAGE_CAPTURE");//使用照相机
065                 startActivityForResult(intentCamera, Activity.DEFAULT_KEYS_DIALER);
066             }
067         });
068         menuView.findViewById(R.id.picture).setOnClickListener(new OnClickListener() {
069              
070             @Override
071             public void onClick(View v) {
072                 menuDialog.dismiss();
073 //              Intent intentPhoto = new Intent(Intent.ACTION_GET_CONTENT, null); 
074 //              intentPhoto.setType("image/*");    //这个参数是确定要选择的内容为图片
075 //              intentPhoto.putExtra("crop", "circle");   //这个参数 不太懂,唯一知道的是:设置了参数,就会调用裁剪,如果不设置,就会跳过裁剪的过程。
076 //                  intentPhoto.putExtra("aspectX", 33);  //这个是裁剪时候的 裁剪框的 X 方向的比例。
077 //                  intentPhoto.putExtra("aspectY",43);  //同上Y 方向的比例. (注意: aspectX, aspectY ,两个值都需要为 整数,如果有一个为浮点数,就会导致比例失效。)
078                 //设置aspectX 与 aspectY 后,裁剪框会按照所指定的比例出现,放大缩小都不会更改。如果不指定,那么 裁剪框就可以随意调整了。
079 //                  intentPhoto.putExtra("outputX", 50);  //返回数据的时候的 X 像素大小。
080 //                  intentPhoto.putExtra("outputY", 100);  //返回的时候 Y 的像素大小。
081                 //以上两个值,设置之后会按照两个值生成一个Bitmap, 两个值就是这个bitmap的横向和纵向的像素值,如果裁剪的图像和这个像素值不符合,那么空白部分以黑色填充。
082  
083 //              intentPhoto.putExtra("noFaceDetection", true); // 是否去除面部检测, 如果你需要特定的比例去裁剪图片,那么这个一定要去掉,因为它会破坏掉特定的比例。
084 //
085 //              intentPhoto.putExtra("return-data", true);  //是否要返回值。 一般都要。
086 //              startActivityForResult(intentPhoto, 1);
087                  
088                  Intent intent = new Intent(); 
089                     /* 开启Pictures画面Type设定为image */ 
090                     intent.setType("image/*"); 
091                     /* 使用Intent.ACTION_GET_CONTENT这个Action */ 
092                     intent.setAction(Intent.ACTION_GET_CONTENT);  
093                     /* 取得相片后返回本画面 */ 
094                     startActivityForResult(intent, 2);
095             }
096         });
097     }
098  
099     @Override
100     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
101         if(requestCode == 2){
102             if (resultCode == RESULT_OK) { 
103                 Uri uri = data.getData(); 
104                 ContentResolver cr = this.getContentResolver(); 
105                 try 
106                     Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri)); 
107                     /* 将Bitmap设定到ImageView */ 
108                     image.setImageBitmap(bitmap); 
109                 catch (FileNotFoundException e) { 
110                     image.setImageResource(R.drawable.empty);
111                 
112             
113         }
114         if(requestCode == Activity.DEFAULT_KEYS_DIALER){
115             if(data != null){
116                 Bundle extras = data.getExtras();
117                 Bitmap bitmap = (Bitmap) extras.get("data");
118                 image.setImageBitmap(bitmap);
119             }
120             else{
121                 image.setImageResource(R.drawable.empty);
122             }
123         }
124         super.onActivityResult(requestCode, resultCode, data);
125     }
126      
127      
128 }
分享到:
评论

相关推荐

    Android4.0.3照相机源码

    在Android 4.0.3(Ice Cream Sandwich)版本中,照相机功能是系统的核心组件之一,对于开发者来说,理解其源码可以帮助我们深入学习Android系统以及如何构建高性能、功能丰富的相机应用。以下是对Android 4.0.3照相机...

    android照相机应用源码

    本资源"android照相机应用源码"提供了一个可以直接运行的Android相机应用示例,这对于初学者和有经验的开发者来说都是一个宝贵的参考资料。 首先,我们需要了解Android相机API的基础知识。在Android 3.0(API级别11...

    Android自定义照相机实现只拍摄矩形区域(重传)

    裁剪可以通过修改预览数据或者在绘制时使用`Canvas`的`clipRect`方法实现。 对于旋转问题,Android设备有多种屏幕方向,而相机传感器可能也有不同的方向,因此我们需要在`setDisplayOrientation`方法中处理旋转。...

    delphi xe5 android 调用照相机获取拍的照片

    在本篇文章中,我们将探讨如何在 Delphi XE5 中使用 Android 平台的照相机组件,获取拍摄的照片。 使用 Delphi XE5 调用 Android 照相机的步骤 ----------------------------------- 要使用 Delphi XE5 调用 ...

    android 照相机 demo

    android 照相机 demo android 照相机 demo android 照相机 demo android 照相机 demo android 照相机 demo android 照相机 demo

    delphi xe6 android 调用照相机摄像头拍照片

    在使用Delphi XE6开发Android应用程序时,调用照相机功能是常见的需求,这使得用户可以直接通过应用拍摄照片。本教程将详细讲解如何在Delphi XE6中实现这一功能,无需额外的组件,只需利用系统自带的功能,确保代码...

    Android应用源码之基于Android2.2照相机Demo,可以直接放到项目里使用.zip

    这个压缩包"Android应用源码之基于Android2.2照相机Demo,可以直接放到项目里使用.zip"提供了一个适用于Android 2.2版本的照相机应用示例,非常适合开发者进行学习和参考。下面将详细解析这个Demo中涉及的主要知识点...

    android本地图片获取和照相机使用

    在Android开发中,图片的获取和照相机的使用是两个重要的功能模块,广泛应用于各种应用程序,如社交网络、相册应用等。以下是对这两个知识点的详细讲解。 首先,我们来看如何在Android中获取本地图片: 1. **...

    基于Android2.2照相机Demo,可以直接放到项目里使用.zip

    【标题】"基于Android2.2照相机Demo,可以直接放到项目里使用.zip"是一个提供给开发者参考的Android应用示例,特别关注于Android系统中照相机功能的实现。这个Demo适用于那些想要在自己的应用程序中集成照相机功能的...

    Android应用源码之基于Android2.2照相机Demo,可以直接放到项目里使用-IT计算机-毕业设计.zip

    在Android应用中,使用照相机功能需要在`AndroidManifest.xml`中添加相应的权限。这个Demo可能包含了`<uses-feature>`标签声明使用照相机硬件,以及`<uses-permission>`标签请求`CAMERA`权限。例如: ```xml ...

    android调用照相机拍照与选择本地照片功能

    - 使用Intent:在Android中,我们可以通过Intent来启动系统照相机应用,让用户进行拍照。通过创建一个Intent,设置其类型为`ACTION_IMAGE_CAPTURE`,然后使用`startActivityForResult()`方法启动。当用户完成拍照后...

    Android自定义照相机的实例

    在Android平台上,开发自定义照相机应用是一项常见的任务,它允许开发者根据特定需求定制相机功能和用户界面。...通过理解并实践这些步骤,开发者可以构建出功能丰富的自定义Android照相机应用,满足各种定制化需求。

    Android 录像照相机录像录音

    在本文中,我们将探讨如何在Android应用程序中实现录像和录音功能,以及与之相关的技术点。 首先,Android系统提供了一个名为`MediaRecorder`的类,它是实现录像和录音的核心组件。`MediaRecorder`可以设置多种参数...

    Android自定义照相机实现.docx编程资料

    在移动应用开发领域,尤其是Android平台,实现自定义功能是提升用户体验的关键之一。本文档将详细讲解如何通过自定义方式在Android应用程序中集成照相机功能,包括拍摄照片、保存到SD卡以及利用`Bundle`在不同活动...

    delphi xe5 android 调用照相机摄像头拍照片camera

    至此,一个简单的使用Delphi XE5调用Android照相机功能的应用程序已经完成。当你运行此程序并点击"拍照"按钮,设备的相机应用会被启动,拍摄的照片会自动保存到外部存储,并显示在界面上。 需要注意的是,Android...

    android wifi照相机

    标题中的“android wifi照相机”指的是一个基于Android平台开发的照相机应用,它具有通过WiFi进行实时传输照片的功能。这个项目对于理解Android系统的相机API、网络编程以及如何整合这两者来实现无线数据传输非常有...

    Android应用源码之基于Android2.2照相机Demo,可以直接放到项目里使用.zip项目安卓应用源码下载

    Android应用源码之基于Android2.2照相机Demo,可以直接放到项目里使用.zip项目安卓应用源码下载Android应用源码之基于Android2.2照相机Demo,可以直接放到项目里使用.zip项目安卓应用源码下载 1.适合学生毕业设计研究...

    android调用照相机

    android调用照相机,非常好用,可以实现调用手机自带德相机进行操作

    android4.0 照相机源代码

    3. 应用程序接口(Application Interface):开发者可以使用Android SDK提供的Camera类和相关API来访问和控制相机。 二、Camera服务 相机服务是Android系统中一个重要的服务,它通过Binder机制为上层应用提供服务...

    android 调用照相机拍照

    在Android平台上,调用照相机拍照是常见的功能之一,它涉及到多媒体处理、用户交互以及硬件接口的使用。本文将深入探讨如何在Android应用中实现这一功能,并特别关注对焦优化。 首先,调用照相机拍照的基本流程是...

Global site tag (gtag.js) - Google Analytics