实现调用Android手机的拍照功能

很简单,直接上示例吧

1 xml

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".MainActivity" >
10
11     <Button
12         android:id="@+id/btnTakePic"
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:text="拍照" />
16
17     <ImageView
18         android:id="@+id/imgview"
19         android:layout_width="100dp"
20         android:layout_height="100dp"
21         android:layout_alignLeft="@+id/btnTakePic"
22         android:layout_below="@+id/btnTakePic"
23         android:layout_marginTop="38dp" />
24
25 </RelativeLayout>

2 java代码

  1 package com.example.takepictrures;
  2
  3 import java.io.ByteArrayOutputStream;
  4 import java.io.File;
  5 import java.io.IOException;
  6 import java.text.SimpleDateFormat;
  7 import java.util.Date;
  8 import com.example.util.saveToSdCard;
  9 import android.net.Uri;
 10 import android.os.Bundle;
 11 import android.os.Environment;
 12 import android.provider.MediaStore;
 13 import android.provider.MediaStore.Audio.Media;
 14 import android.app.Activity;
 15 import android.content.ContentValues;
 16 import android.content.Intent;
 17 import android.graphics.Bitmap;
 18 import android.graphics.BitmapFactory;
 19 import android.view.Menu;
 20 import android.view.View;
 21 import android.view.View.OnClickListener;
 22 import android.widget.Button;
 23 import android.widget.ImageView;
 24
 25 public class MainActivity extends Activity implements OnClickListener {
 26
 27     public Button button;
 28     private static final int PHOTO_GRAPH = 1;// ????
 29     public ImageView imageView;
 30
 31     @Override
 32     protected void onCreate(Bundle savedInstanceState) {
 33         super.onCreate(savedInstanceState);
 34         setContentView(R.layout.activity_main);
 35         imageView = (ImageView) this.findViewById(R.id.imgview);
 36         button = (Button) this.findViewById(R.id.btnTakePic);
 37         button.setOnClickListener(this);
 38
 39     }
 40
 41     @Override
 42     public boolean onCreateOptionsMenu(Menu menu) {
 43         // Inflate the menu; this adds items to the action bar if it is present.
 44         getMenuInflater().inflate(R.menu.main, menu);
 45         return true;
 46     }
 47
 48     @Override
 49     public void onClick(View view) {
 50         switch (view.getId()) {
 51         case R.id.btnTakePic:
 52             Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
 53             startActivityForResult(intent, PHOTO_GRAPH);
 54             break;
 55
 56         default:
 57             break;
 58         }
 59     }
 60
 61     @Override
 62     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 63         if (resultCode == NONE)
 64             return;
 65
 66         if (requestCode == PHOTO_GRAPH) {
 67
 68             File picture = new File(Environment.getExternalStorageDirectory()
 69                     + "/temp.jpg");
 70             // startPhotoZoom(Uri.fromFile(picture));
 71         }
 72
 73         if (data == null)
 74             return;
 75
 76         // if (requestCode == PHOTO_ZOOM) {
 77         // startPhotoZoom(data.getData());
 78         // }
 79
 80         String fileName = "";
 81         if (requestCode == 1) {
 82             Bundle extras = data.getExtras();
 83             if (extras != null) {
 84                 Bitmap photo = extras.getParcelable("data");
 85                 ByteArrayOutputStream stream = new ByteArrayOutputStream();
 86                 photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0-100)??????
 87                                       ///这儿保存到sd卡就Ok了
 88                 try {
 89                     fileName = saveToSdCard.getFileName();
 90                     saveToSdCard.saveMyBitmap(photo, fileName);
 91                 } catch (IOException e) {
 92                     // TODO Auto-generated catch block
 93                     e.printStackTrace();
 94                 }
 95                 imageView.setImageBitmap(photo);
 96             }
 97         }
 98         super.onActivityResult(requestCode, resultCode, data);
 99     }
100
101
102     // public void startPhotoZoom(Uri uri) {
103     // Intent intent = new Intent("com.android.camera.action.CROP");
104     // intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
105     // intent.putExtra("crop", "true");
106     // // aspectX aspectY
107     // intent.putExtra("aspectX", 1);
108     // intent.putExtra("aspectY", 1);
109     // // outputX outputY
110     // intent.putExtra("outputX", 300);
111     // intent.putExtra("outputY", 500);
112     // intent.putExtra("return-data", true);
113     // startActivityForResult(intent, PHOTO_RESOULT);
114     // }
115
116 }
时间: 2024-10-13 05:01:56

实现调用Android手机的拍照功能的相关文章

调用android系统相机拍照并保存图片

android调用系统相机拍照并保存图片 调用系统相机: //在某个事件中添加如下代码即可,不是说单击事件都不会写啊startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE),1); 解释:其中参数MediaStore.ACTION_IMAGE_CAPTURE是调用系统相机用的,而后面的1则是请求的Activity的标志,用来处理返回结果的 可以理解为:给系统相机的Activity添加一个请求标志,在用onActivity

Android手机多媒体——拍照和相册

一 拍照功能 1.布局文件:在线性布局中设置一个按钮,用来启动拍照功能,设置一个ImageView用来展示图像 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 android:orie

调用Android自带日历功能

Android手机配备有一个内置的日历应用程序.第三方应用程序可以利用日历内容提供商接口读取用户的日历信息和安排在日历新的事件.这个日历可以直接同步用户的谷歌日历. 不幸的是,没有文档和Android手机的日历应用集成,因为有另外一个联系人应用程序.相反,本文所提供的所有信息,将会通过逆向工程的谷歌日历内容提供商.该接口是受变化的,将会支持有限的功能.然而,日历一体化可以成为一些类型的应用强大的功能. 本文的代码测试之到Android 2.0 SDK版本.我们将发布一个更新如果有一个很大的转变.

Android开发之拍照功能实现(附源码)

大家好,这是一个简单的拍照功能,很简单的界面,一个显示图像区域SurfaceView一个“拍照”按钮.直接上代码! 1.CameraDemoActivity.java(主界面) package org.winplus.camera; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import android.app.Activity;

用NDK调用Android手机自带的openssl库函数

目标: 目前很多Android手机已经自带了openssl库, 即libssl.so, libcrypto.so, 以下示例实现了APK通过NDK调用openssl库函数PKCS5_PBKDF2_HMAC(密钥生成算法) 1) 在android工程中创建 jni目录 2) 编辑AbcJni.java package com.example; public class AbcJni { public native byte[] hashKey(byte[] key, byte[] salt, in

调用android系统相机拍照并保存

[java] view plaincopyprint? <span style="font-size:18px;">package com.demo; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import

Android手机的上网功能需要用到APN(网络接入点)的设置 电信

手机apn出问题了,上不网 电信天翼: 我们经常使用的APN有三个,分别是NET网络设置.WAP网络设置和彩信网络设置. 1.NET网络设置 名称:CTNET APN:#777 用户名:[email protected] 密码:  vnet.mobi 或 evdo MCC:460 MNC:03 身份验证类型:PAP或CHAP Apn 类型:default 其他的都不变 2.WAP网络设置 名称:CTWap APN:#777 代理:10.0.0.200 端口:80 用户名:[email prote

拍照-----------android系统 至关重要的功能

一 在Android 中,拍照对应的Action 是android.provider.MediaStore.ACTION_IMAGE_CAPTURE. 用于拍照的Activity 需要返回照片图像数据, 摄像对应的Action 是android.provider.MediaStore.ACTION_VIDEO_CAPTURE 因此需要使用startActivityForResult()来启动 Activity .代码如下: Intent intent = new Intent(MediaStor

cocos2d-x3.2中添加Android手机震动

本人宣布从此博文发出后,我的cocos2dx的引擎从cocos2dx3.1.1跳到cocos2dx3.2,哈哈,其实变化不大的,不碍事~~~ 下面来说说在cocos中添加Android手机震动的功能,亲身体验,网上的教程都是渣渣啊,坑比的很,还要看了原帖http://www.cocos2d-x.org/boards/6/topics/8179,全英文的,蛋疼恼火了许久,才解决~~ 下面进入正题.相信看完本文,什么问题都ok了!!!! 1.在proj.android这个目录下 AndroidMan