Android自定义照相机实现.docx

上传人:b****5 文档编号:8380877 上传时间:2023-01-30 格式:DOCX 页数:25 大小:35.12KB
下载 相关 举报
Android自定义照相机实现.docx_第1页
第1页 / 共25页
Android自定义照相机实现.docx_第2页
第2页 / 共25页
Android自定义照相机实现.docx_第3页
第3页 / 共25页
Android自定义照相机实现.docx_第4页
第4页 / 共25页
Android自定义照相机实现.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

Android自定义照相机实现.docx

《Android自定义照相机实现.docx》由会员分享,可在线阅读,更多相关《Android自定义照相机实现.docx(25页珍藏版)》请在冰豆网上搜索。

Android自定义照相机实现.docx

Android自定义照相机实现

Android自定义照相机实现(拍照、保存到SD卡,利用Bundle在Acitivity交换数据)

分类:

【Android多媒体开发系列】【Android开发学习之路】2013-05-1421:

3612172人阅读评论(14)收藏举报

ANDROID

Android自定义照相机实现

近期小巫在学校有一个创新项目,也不是最近,是一个拖了很久的项目,之前一直没有去搞,最近因为要中期检查,搞得我跟小组成员一阵忙活,其实开发一款照相机软件并不太难,下面就是通过自定义的方式来实现手机照相的功能。

创建一个项目:

FingerTakePicture

首先来搞一下界面:

[html]viewplaincopyprint?

1.

android="  

2.    xmlns:

tools="  

3.    android:

id="@+id/FrameLayout1"  

4.    android:

layout_width="match_parent"  

5.    android:

layout_height="match_parent" >  

6.    

-- 显示预览图形 -->  

7.    

8.        android:

id="@+id/surfaceView"  

9.        android:

layout_width="match_parent"  

10.        android:

layout_height="match_parent"  

11.        />  

12.    

-- 相对布局,放置两个按钮 -->  

13.        

14.            android:

id="@+id/buttonLayout"  

15.            android:

layout_width="wrap_content"  

16.            android:

layout_height="wrap_content"  

17.            android:

visibility="gone"  

18.        >  

19.        

-- 拍照按钮 -->  

20.        

21.            android:

id="@+id/takepicture"  

22.            android:

layout_width="wrap_content"  

23.            android:

layout_height="wrap_content"  

24.            android:

layout_alignParentRight="true"  

25.            android:

layout_alignParentBottom="true"  

26.            android:

background="@drawable/btn_tabkepicture_selector"  

27.            android:

onClick="btnOnclick"  

28.            />  

29.        

30.            android:

id="@+id/scalePic"  

31.            android:

layout_width="wrap_content"  

32.            android:

layout_height="wrap_content"  

33.            android:

layout_alignParentLeft="true"  

34.            android:

layout_alignParentBottom="true"  

35.            android:

layout_marginLeft="5dp"  

36.            android:

background="@drawable/img_showpic_selector"  

37.            android:

onClick="imageClick"  

38.            />  

39.      

40.  

android="

xmlns:

tools="

android:

id="@+id/FrameLayout1"

android:

layout_width="match_parent"

android:

layout_height="match_parent">

--显示预览图形-->

android:

id="@+id/surfaceView"

android:

layout_width="match_parent"

android:

layout_height="match_parent"

/>

--相对布局,放置两个按钮-->

android:

id="@+id/buttonLayout"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

visibility="gone"

>

--拍照按钮-->

android:

id="@+id/takepicture"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignParentRight="true"

android:

layout_alignParentBottom="true"

android:

background="@drawable/btn_tabkepicture_selector"

android:

onClick="btnOnclick"

/>

android:

id="@+id/scalePic"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignParentLeft="true"

android:

layout_alignParentBottom="true"

android:

layout_marginLeft="5dp"

android:

background="@drawable/img_showpic_selector"

android:

onClick="imageClick"

/>

界面效果(无法把预览给截屏下来滴):

 

权限设置少不了:

[html]viewplaincopyprint?

1.

android="  

2.    package="com.wwj.finger"  

3.    android:

versionCode="1"  

4.    android:

versionName="1.0" >  

5.  

6.    

7.        android:

minSdkVersion="4"  

8.        android:

targetSdkVersion="15" />  

9.  

10.    

name="android.permission.CAMERA" />  

11.    

-- 在SDCard中创建与删除文件权限 -->  

12.    

name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />  

13.    

-- 往SDCard写入数据权限 -->  

14.    

name="android.permission.WRITE_EXTERNAL_STORAGE" />  

15.

16.        android:

icon="@drawable/ic_launcher"  

17.        android:

label="@string/app_name"  

18.        android:

theme="@style/AppTheme" >  

19.        

20.            android:

name=".MainActivity"  

21.            android:

label="@string/title_activity_main"   

22.            >  

23.              

24.                

name="android.intent.action.MAIN" />  

25.  

26.                

name="android.intent.category.LAUNCHER" />  

27.              

28.          

29.        

30.            android:

name=".ShowPicActivity"  

31.            android:

label="@string/app_name"  

32.            android:

theme="@style/AppTheme"  

33.            android:

configChanges="orientation|keyboardHidden"  

34.            >  

35.      

36.  

37.  

android="

package="com.wwj.finger"

android:

versionCode="1"

android:

versionName="1.0">

android:

minSdkVersion="4"

android:

targetSdkVersion="15"/>

name="android.permission.CAMERA"/>

--在SDCard中创建与删除文件权限-->

name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

--往SDCard写入数据权限-->

name="android.permission.WRITE_EXTERNAL_STORAGE"/>

android:

icon="@drawable/ic_launcher"

android:

label="@string/app_name"

android:

theme="@style/AppTheme">

android:

name=".MainActivity"

android:

label="@string/title_activity_main"

>

name="android.intent.action.MAIN"/>

name="android.intent.category.LAUNCHER"/>

android:

name=".ShowPicActivity"

android:

label="@string/app_name"

android:

theme="@style/AppTheme"

android:

configChanges="orientation|keyboardHidden"

>

主Activity:

[java]viewplaincopyprint?

1.package com.wwj.finger;  

2.  

3.import java.io.File;  

4.import java.io.FileOutputStream;  

5.import java.io.IOException;  

6.import java.text.SimpleDateFormat;  

7.import java.util.Date;  

8.  

9.  

10.import android.app.Activity;  

11.import android.content.Intent;  

12.import android.graphics.PixelFormat;  

13.import android.hardware.Camera;  

14.import android.hardware.Camera.PictureCallback;  

15.import android.os.Bundle;  

16.import android.os.Environment;  

17.import android.view.KeyEvent;  

18.import android.view.MotionEvent;  

19.import android.view.Surface;  

20.import android.view.SurfaceHolder;  

21.import android.view.SurfaceHolder.Callback;  

22.import android.view.SurfaceView;  

23.import android.view.View;  

24.import android.view.ViewGroup;  

25.import android.widget.Toast;  

26.  

27./** 

28. * Android手指拍照 

29. *  

30. * @author wwj 

31. * @date 2013/4/29 

32. */  

33.public class MainActivity extends Activity {  

34.    private View layout;  

35.    private Camera camera;  

36.    private Camera.Parameters parameters = null;  

37.  

38.    Bundle bundle = null; // 声明一个Bundle对象,用来存储数据  

39.  

40.    @Override  

41.    public void onCreate(Bundle savedInstanceState) {  

42.        super.onCreate(savedInstanceState);  

43.        // 显示界面  

44.        setContentView(R.layout.activity_main);  

45.  

46.        layout = this.findViewById(R.id.buttonLayout);  

47.  

48.        SurfaceView surfaceView = (SurfaceView) this  

49.                .findViewById(R.id.surfaceView);  

50.        surfaceView.getHolder()  

51.                .setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  

52.        surfaceView.getHolder().setFixedSize(176, 144); //设置Surface分辨率  

53.        surfaceView.getHolder().setKeepScreenOn(true);// 屏幕常亮  

54.        surfaceView.getHolder().addCallback(new SurfaceCallback());//为SurfaceView的句柄添加一个回调函数  

55.    }  

56.  

57.    /** 

58.     * 按钮被点击触发的事件 

59.     *  

60.     * @param v 

61.     */  

62.    public void btnOnclick(View v) {  

63.        if (camera !

= null) {  

64.            switch (v.getId()) {  

65.            case R.id.takepicture:

  

66.                // 拍照  

67.                camera.takePicture(null, null, new MyPictureCallback());  

68.                break;  

69.            }  

70.        }  

71.    }  

72.  

73.    /** 

74.     * 图片被点击触发的时间 

75.     *  

76.     * @param v 

77.     */  

78.    public void imageClick(View v) {  

79.        if (v.getId() == R.id.scalePic) {  

80.            if (bundle == null) {  

81.                Toast.makeText(getApplicationContext(), R.string.takephoto,  

82.                        Toast.LENGTH_SHORT).show();  

83.            } else {  

84.                Intent intent = new Intent(this, ShowPicActivity.class);  

85.                intent.putExtras(bundle);  

86.                startActivity(intent);  

87.            }  

88.        }  

89.    }  

90.  

91.    private final class MyPictureCallback implements PictureCallback {  

92.  

93.        @Override  

94.        public void onPictureTaken(byte[] data, Camera camera) {  

95.            try {  

96.                bundle = new Bundle();  

97.                bundle.putByteArray("bytes", data); //将图片字节数据保存在bundle当中,实现数据交换  

98.                saveToSDCard(data); // 保存图片到sd卡中  

99.                Toast.makeText(getApplicationContext(), R.string.success,  

100.                        Toast.LENGTH_SHORT).show();  

101.                camera.startPreview(); // 拍完照后,重新开始预览  

102.  

103.            } catch (Exception e) {  

104.                e.printStackTrace();  

105.            }  

106.        }  

107.    }  

108.  

109.    /**

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1