- 浏览: 243450 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
你的样子越来越美:
楼主是来炫耀的。
java图片处理解决方案 -
di1984HIT:
关注一下。
hypertable安装 -
di1984HIT:
katta好久不更新了。
Katta源码分析(1)--显示节点 -
tracyitbird:
谢谢博主,很好说的很明白。不过一般bin的环境变量已经配置好了 ...
解决Hadoop报Name node is in safe mode 错误 -
凌寒_微雨:
总结的很好
android 笔记——listView应用
现在的手机几乎都实现照相机功能了,而且在硬件的支持下像素也越来越高,在现实生活中的用途也越来越广,而在Android中专门 提供了Camera来处理相机相关的事件,Camera 是一个专门用来连接和断开相机服务的类,Camera 下面包括如下几个事件:
Camera.AutoFocusCallback: 自动调焦功能;
Camera.ErrorCallback:错误信息捕捉;
Camera.Parameters :相机的属性参数
Camera.PictureCallback:拍照、产生图片时触发;
Camera.PreviewCallback:相机预览设置;
Camera.ShutterCallback:快门设置;
Camera.Size:图片尺寸;
要在Android中使用相机服务很简单,Camera没有构造方法,我们要使用它直接通过open()方法来打开相机设备,然后通过 Camera.Parameters 对相机的一些属性进行设置,比如输出图片的格式、大小等等。下面是Camera类一些常用的方法介绍。
Camera类的方法
方法 说明
autoFocus 设置自动对焦
getParameters 得到相机的参数
open 启动相机服务
release 释放Camera服务
setPreviewDisplay 设置预览
setParameters 设置预览参数
startPreview 开始预览
stopPreview 停止预览
takePicture 拍照
这里重点说明一下拍照的方法和使用, takePicture 方法要实现3个回调函数,分别是: Camera.ShutterCallback (快门) 和 两个Camera.PictureCallback(图像数据)。这里我们在拍照之后要取得图像数据就需要实现Camera.PictureCallback 的 onPictureTaken 方法。onPictureTaken 中第一个参数就是图像数据, 第二个参数则是相机。
下面是一个相机拍照的例子。相机需要一个界面来预览当前拍摄的效果,这里可以使用SurfaceView类。 我们先来看看在模拟器上的运行效果吧。
下面我们来看具体如何使用相机服务预览效果,最后按导航键中键来拍照,将照片保存到SD卡中(当然首先要确认有SD卡插入)。 代码如下
最后大家不要忘记了加上权限声明
Android Camera照相机
Camera.AutoFocusCallback: 自动调焦功能;
Camera.ErrorCallback:错误信息捕捉;
Camera.Parameters :相机的属性参数
Camera.PictureCallback:拍照、产生图片时触发;
Camera.PreviewCallback:相机预览设置;
Camera.ShutterCallback:快门设置;
Camera.Size:图片尺寸;
要在Android中使用相机服务很简单,Camera没有构造方法,我们要使用它直接通过open()方法来打开相机设备,然后通过 Camera.Parameters 对相机的一些属性进行设置,比如输出图片的格式、大小等等。下面是Camera类一些常用的方法介绍。
Camera类的方法
方法 说明
autoFocus 设置自动对焦
getParameters 得到相机的参数
open 启动相机服务
release 释放Camera服务
setPreviewDisplay 设置预览
setParameters 设置预览参数
startPreview 开始预览
stopPreview 停止预览
takePicture 拍照
这里重点说明一下拍照的方法和使用, takePicture 方法要实现3个回调函数,分别是: Camera.ShutterCallback (快门) 和 两个Camera.PictureCallback(图像数据)。这里我们在拍照之后要取得图像数据就需要实现Camera.PictureCallback 的 onPictureTaken 方法。onPictureTaken 中第一个参数就是图像数据, 第二个参数则是相机。
下面是一个相机拍照的例子。相机需要一个界面来预览当前拍摄的效果,这里可以使用SurfaceView类。 我们先来看看在模拟器上的运行效果吧。
下面我们来看具体如何使用相机服务预览效果,最后按导航键中键来拍照,将照片保存到SD卡中(当然首先要确认有SD卡插入)。 代码如下
package xiaohang.zhimeng; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.PixelFormat; import android.hardware.Camera; import android.hardware.Camera.PictureCallback; import android.os.Bundle; import android.view.KeyEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.Window; public class Activity01 extends Activity { private Preview mPreview; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); //Create our Preview view and set it as the content of our activity. mPreview = new Preview(this); setContentView(mPreview); } public boolean onKeyUp(int keyCode, KeyEvent event){ switch (keyCode) { case KeyEvent.KEYCODE_DPAD_CENTER: mPreview.takePicture(); break; } return true; } } /*Preview-显示Preview*/ class Preview extends SurfaceView implements SurfaceHolder.Callback{ SurfaceHolder mHolder; Camera mCamera; Bitmap cameraBitmap; public Preview(Context context) { super(context); //得到SurfaceHolder对象 mHolder = getHolder(); //添加回调函数 mHolder.addCallback(this); //设置SurfaceHolder 的类型 mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } //在Surface的大小发生改变时激发 @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { /*构建Camera.Parameters对相机的参数进行设置*/ Camera.Parameters parameters = mCamera.getParameters(); /*设置拍照的图片格式*/ parameters.setPictureFormat(PixelFormat.JPEG); /*设置Preview(预览)的尺寸*/ parameters.setPreviewSize(320, 480); mCamera.setParameters(parameters); /*开始预览*/ mCamera.startPreview(); } /*拍照片*/ public void takePicture(){ if (mCamera != null) { mCamera.takePicture(null, null, jpegCallback); } } /*拍照后输出图片*/ private PictureCallback jpegCallback = new PictureCallback(){ @Override public void onPictureTaken(byte[] data, Camera camera) { // TODO Handle JPEG image data //解码一个不可变的位图 从指定的字节数组 cameraBitmap = BitmapFactory.decodeByteArray(data, 0, data.length); File myCaptureFile = new File("/sdcard/camera1.jpg"); try { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile)); //压缩位图到指定的OutputStream cameraBitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos); //刷新此缓冲区的输出流 bos.flush(); //关闭此输出流并释放与此流有关的所有系统资源 bos.close(); /*将拍到的图片绘制出来*/ //锁定画布 Canvas canvas = mHolder.lockCanvas(); canvas.drawBitmap(cameraBitmap, 0, 0, null); //绘制后解锁,绘制后必须解锁才能显示 mHolder.unlockCanvasAndPost(canvas); } catch (Exception e) { e.getMessage(); } } }; //在创建Surface时激发 @Override public void surfaceCreated(SurfaceHolder holder) { /*启动Camera*/ mCamera = Camera.open(); try { mCamera.setPreviewDisplay(holder); } catch (Exception e) { /*释放mCamera*/ mCamera.release(); mCamera = null; } } //在销毁Surface时激发 @Override public void surfaceDestroyed(SurfaceHolder holder) { /*停止预览*/ mCamera.stopPreview(); mCamera = null; } }
最后大家不要忘记了加上权限声明
<uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" />
Android Camera照相机
package com.Aina.Android; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.PixelFormat; import android.hardware.Camera; import android.util.Log; import android.view.KeyEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; /** * com.Aina.Android Pro_Camera * * @author Aina.huang E-mail: 674023920@qq.com * @version 创建时间:2010 Jul 7, 2010 2:50:15 PM 类说明 */ public class PreView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder holder = null; private Camera mCamera = null; private Bitmap mBitmap = null; public PreView(Context context) { super(context); Log.i("TAG", "PreView()"); // TODO Auto-generated constructor stub holder = this.getHolder(); holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { Log.i("TAG", "surfaceChanged"); // TODO Auto-generated method stub Camera.Parameters parameters = mCamera.getParameters(); parameters.setPictureFormat(PixelFormat.JPEG);//设置图片格式 parameters.setPreviewSize(320, 480);//设置尺寸 // parameters.setPictureSize(320, 480);//设置分辨率 mCamera.setParameters(parameters); mCamera.startPreview();//开始预览 } public void surfaceCreated(SurfaceHolder holder) { Log.i("TAG", "surfaceCreated"); // TODO Auto-generated method stub mCamera = Camera.open();//启动服务 try { mCamera.setPreviewDisplay(holder);//设置预览 } catch (IOException e) { mCamera.release();//释放 mCamera = null; } } public void surfaceDestroyed(SurfaceHolder holder) { Log.i("TAG", "surfaceDestroyed"); // TODO Auto-generated method stub mCamera.stopPreview();//停止预览 mCamera = null; } public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_DPAD_CENTER){ if(mCamera !=null){ mCamera.takePicture(null, null,pic); } } return super.onKeyDown(keyCode, event); } //拍照后输出图片 public Camera.PictureCallback pic = new Camera.PictureCallback(){ public void onPictureTaken(byte[] data, Camera camera) { // TODO Auto-generated method stub mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length); File f = new File(android.os.Environment.getExternalStorageDirectory()+"/camera1.jpg"); try { BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(f)); mBitmap.compress(Bitmap.CompressFormat.JPEG, 80, os); os.flush(); os.close(); Canvas canvas = holder.lockCanvas(); canvas.drawBitmap(mBitmap, 0, 0, null); holder.unlockCanvasAndPost(canvas); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; }
package com.Aina.Android; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.Window; public class Test extends Activity { /** Called when the activity is first created. */ private PreView pv = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); pv = new PreView(this); setContentView(pv); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub return pv.onKeyDown(keyCode, event); } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.Aina.Android" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Test" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> </manifest>
发表评论
-
android -- 笔记
2011-08-26 14:32 0System.out.println(tm.getDevice ... -
android 笔记 --- android:paddingLeft与android:layout_marginLeft的区别
2011-05-31 15:47 3385当按钮分别设置以上两个属性时,得到的效果是不一样的。 and ... -
android 笔记 --- ImageView的属性android:scaleType
2011-05-27 18:40 6404ImageView的属性android:scaleType,即 ... -
android 笔记 --- 位图和矢量图区别
2011-05-27 11:29 5001位图和矢量图是计算机 ... -
android 笔记 --- 适配不同分辨率的Android手机
2011-05-27 11:25 3191一:不同的layout Android手机屏幕大小不一,有4 ... -
android 笔记 --- Android系统中SD卡各文件夹功能详解
2011-05-24 14:46 2711对于初次使用Android系统 ... -
android 笔记 --- Android的PackageManager和ActivityManager的功能简介
2011-05-24 14:40 1864Android系统为应用管理功能提供了大量的API。根据功能的 ... -
android 笔记 --- InputFilter实现EditText文本输入过滤器
2011-05-23 16:19 10200EditText是Android的文本输入框控件,这地球人应该 ... -
android 笔记 --- 让Android的输入框与文本框带滚动条ScrollView
2011-05-23 16:18 3626我们都知道EditText与TextView是Android的 ... -
android 笔记 --- Android自动判断输入是电话,网址或者Email的方法—-Linkify的应用
2011-05-23 16:16 3921本节要讲的是,当我们在一个EditText输入电话或者网址还是 ... -
android 笔记 --- Android SimpleAdapter
2011-05-23 16:12 1978列表(ListView)、表格(GridView),这在手机应 ... -
android 笔记 --- Android安全机制之设备管理
2011-05-23 16:08 1915Andoid安全机制包括两个层次:系统层和应用层。应用层的安全 ... -
android 笔记 --- Android-图片透明度处理代码
2011-05-23 16:07 2283/** * 图片透明度处理 * * @pa ... -
android 笔记 --- Android大TXT文本文档读取
2011-05-23 16:03 8005由于现在TXT文本很多,特别是好多小说也是以这个文件格式出现, ... -
android 笔记 --- 自定义Android主题风格theme.xml方法
2011-05-23 15:51 3014在Android中可以通过自定义主题风格方式来实现个性化以及复 ... -
android 笔记 --- Android中Menu应用
2011-05-23 15:48 1197Android menu是Android开发中经常使用的,下面 ... -
android 笔记 --- Android中Handler,Looper,HandlerThread
2011-05-23 15:46 1875Handler提供了一种消息机制用于线程间的通信。 默认情况下 ... -
android 笔记 --- Android Shadow 阴影制作
2011-05-23 15:41 5670在Android View 中, 要制作阴影, 可以利用 P ... -
android 笔记 --- 分辨率大全
2011-05-23 15:40 1496对于Android游戏开发我们 ... -
android 笔记 --- Android Bitmap 建立或取得的方法
2011-05-23 15:12 2156Android 要建立或取得Bitmap 的方式, 目前, ...
相关推荐
这是一个示例,展示了如何在Android平台上使用Flint协议和WebRTC库来做相机镜像。 如何使用 下载源代码 使用Eclipse编译位于sender目录下的 Android sender 应用程序。 在应该有摄像头(一两个)的 Android 移动...
丰富的开发环境包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse 集成开发环境插件应用程序Android 会同一系列核心应用程序包一起发布,该应用程序包包括email 客户端,SMS 短消息程序,日历,地图,浏览器...
笔记Android 笔记应用程序,仍处于开发初期。 支持文本注释、复选框、音频、照片和(很快)视频。 与 Froyo 和更高版本的设备兼容。 此应用中使用的 Android 功能: 活动碎片列表视图阵列适配器ViewPagers 对话框...
CamScanner扫描全能王将手机变成便携随身扫描器,方便快捷地记录管理您的各种文档,收据,笔记和白板讨论等.并通过智慧精准的图像裁剪和图像增强演算法,保证您扫描的内容清晰可读。 -图像处理演算法自动裁剪图片、...
它包含各种简单的演示应用程序,例如笔记,项目和相机应用程序。 该项目利用RxJava允许异步加密和解密数据。 它还利用简单的MVP设计模式来创建可重用和可测试的软件组件。 该项目还使我可以了解有关Java的新版本的...
-运行应用程序-在可见光良好的情况下,将100卢比的钞票放在平坦的表面上-将相机(应用程序的相机)保持在笔记上-使用控制器导航角色-按下便笺上可见的按钮(不是在手机上,而是按一下便笺上可见的按钮),它将旋转...
5.Android 界面刷新 16 6.Cursor 17 7.Activity透明 20 9.发送短信 20 10.发送彩信 20 11.注册一个BroadcastReceiver 21 12.定义ContentObserver,监听某个数据表 21 13.获得手机UA 21 14.清空手机cookies ...
煎茶-触摸描述网络应用程序,包括视频播放器和相机控制帮助由 sencha touch 移动应用程序框架创建 这是 WebRTC 示例的存储库 示例代码可能仅适用于笔记本或 Android 手机上的内置网络摄像头的 Chrome 浏览器图片演示...
Android手机最强大的远程网络桌面,AppBrain中十大最热门软件之一。 它是基于Web,提供通过PC或笔记本电脑访问你的手机服务。它可以通过WiFi,USB或3G连接。 软件特点: - 网络短信:提供一个Outlook类似的接口来...
CameraX 是一个Jetpack的支持库,旨在帮助您简化相机应用的开发工作。它提供一致且易于使用的 API 界面,适用于大多数 Android 设备,并可向后兼容至 Android 5.0(API 级别 21)。 虽然它利用的是 camera2 的功能,
在笔记编辑活动中,按相机按钮拍照。 照片会被压缩上传到github,可能需要很长时间,请稍等... 关闭笔记时不要忘记单击上传按钮。 如果浏览器上的相同笔记打开,请立即刷新浏览器。 下载 图书馆: 宣称: 这是一个很...
经过测试真实设备-Android 4.4, 真实Devie-Android 6 Genymotion-Cutom phone 7.0.0及更高版本4.4->但不知何故相机出现问题:(->无法继续快速笔记解决方案将视频存储在内部存储中,以使其特定于应用程序将视频信息...
#ionic学习笔记 (ionic中文版教程) ##ionic 概述 ionic是一个强大的混合式/hybrid app移动开发框架。可以帮助您使用 Web 技术,比如 HTML、 CSS 和Javascript 构建接近原生体验的移动应用程序。目前已发布正式版本。...
3.可以从相机、图库调取图片 4.可以将笔记分享为长图 5.长按ListView多选删除 6.必要的提醒:例如按两次退出程序 本程序的技术关键点 1.采用了多线程技术以提升程序的性能:主要在MainActivity中的onResume()方法 ...
•使用相机扫描页面,或打开现有图像以创建新的 PDF(tif,jpeg,gif,png) •创建新的空白PDF并使用 Xodo 记笔记 Dropbox 和 Google Drive Sync •将注释自动同步到 Dropbox 或 Google Drive •对于 Dropbox,仅...
tinyCam Monitor最好的Android应用程序,用于远程监视,控制和视频记录您的专用/公用网络或IP摄像机,带有CCTV摄像机的IP编码器和DVR,下载次数超过5百万次。远程安全地监视您的婴儿,宠物,家庭,企业,交通和天气...
最新的OfficeSuite是我们有史以来最快的,整个应用...幻灯片笔记将显示在屏幕上。 Chromecast双屏支持 最新消息 •UI增强功能 - 刷新的编辑工具栏和其他UI改进。 •改进的文档共享 - 通过更简单的UI共享和发送文档。
跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...
->好用户可以从Android画廊中选择图片以及拍照通过相机。 ->确定(但不支持旋转图像) 对于照片列表屏幕,使用RecyclerView显示所有在Flickr上垂直上传照片。 ->好当用户在照片列表屏幕中点击照片时,请打开照片...
机器人应该能够提供其所在区域的实时视频供稿,并将传感器数据提供给与机器人相连的android应用。还将有一架无人驾驶飞机可以俯瞰整个位置,它应该能够使用跟踪算法自己跟随地面机器人,并且应该能够降落并与地面...