- 浏览: 185386 次
- 性别:
- 来自: 浙江
文章分类
最新评论
参考连接:http://blog.csdn.net/wwj_748/article/details/8927784
首先手机必须具备前置摄像头。
找到前置摄像头的id:
private int findFrontCamera() {
int cameraCount = 0;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
cameraCount = Camera.getNumberOfCameras(); // get cameras number
for (int camIdx = 0; camIdx < cameraCount; camIdx++) {
Camera.getCameraInfo(camIdx, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
return camIdx;
}
}
return -1;
}
设置回调函数:
private final class SurfaceCallback implements Callback {
// 拍照状态变化时调用该方法
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
parameters = camera.getParameters(); // 获取各项参数
parameters.setPictureFormat(PixelFormat.JPEG); // 设置图片格式
parameters.setPreviewSize(width, height); // 设置预览大小
parameters.setPreviewFrameRate(5); // 设置每秒显示4帧
parameters.setPictureSize(width, height); // 设置保存的图片尺寸
parameters.setJpegQuality(80); // 设置照片质量
}
// 开始拍照时调用该方法
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
if (cameraId != -1) {
camera = Camera.open(cameraId); // 打开摄像头
camera.setPreviewDisplay(holder); // 设置用于显示拍照影像的SurfaceHolder对象
camera.setDisplayOrientation(90);
camera.startPreview(); // 开始预览
}
} catch (Exception e) {
e.printStackTrace();
}
}
// 停止拍照时调用该方法
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (camera != null) {
camera.release(); // 释放照相机
camera = null;
}
}
}
设置参数,开启预览
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mirror);
cameraId = findFrontCamera();
if (cameraId == -1) {
Toast.makeText(this, "对不起,手机没有前置摄像头!", Toast.LENGTH_SHORT).show();
this.finish();
} else {
SurfaceView surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);
surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
// surfaceView.getHolder().setFixedSize(1, 700); // 设置Surface分辨率
surfaceView.getHolder().setSizeFromLayout();
surfaceView.getHolder().setKeepScreenOn(true);// 屏幕常亮
surfaceView.getHolder().addCallback(new SurfaceCallback());// 为SurfaceView的句柄添加一个回调函数
}
}
别忘了设置权限:<uses-permission android:name="android.permission.CAMERA" />
- Mirror.rar (1.3 MB)
- 下载次数: 2
发表评论
-
关于Android的webSocket的简单使用
2017-05-12 14:34 987使用第三方jar: autobahn-0.5.0.jar 连 ... -
Comparator自定义排序的使用
2017-05-11 14:18 749java对于集合的自定义排序方法有: Arrays.sort ... -
查看Android虚拟机文件相关命令
2017-05-02 14:12 608我们在虚拟机下添加文件后,想查看下文件是否正确创建,可在win ... -
android6.0创建文件问题
2017-05-02 12:58 587Android在6.0有了动态权限管理,在文件创建时就需要动态 ... -
xutils的http模块的简单使用
2017-04-28 16:05 527先导入xutils相关依赖: compile 'org.xut ... -
Litepal的简单使用
2017-04-27 17:21 642相关包下载地址:https://github.com/Lite ... -
Android下拉刷新上拉加载控件的使用
2017-04-21 10:46 852参考链接:http://www.jianshu.com/p/6 ... -
图片加载框架
2017-04-19 16:29 402图片加载框架: picasso ImageLoader -
Android的Service总结
2017-04-17 15:46 461参考链接:http://www.cnblogs.com/lwb ... -
解决ViewPager的addOnPageChangeListener不加载第一个的问题
2017-03-18 17:53 2649今天在使用ViewPager的时候发现个问题。 需求如下: ... -
clone方法的使用
2017-01-04 10:14 555由于Java有引用这一说,当两个变量指向同一块内存时,改变 ... -
Fragment无法切换问题
2016-12-16 14:57 2114Android有一个回收机制,当内存不足时,会自动回收相关内存 ... -
关于Material Design的CollapsingToolbarLayout初次使用
2016-12-16 13:38 614最近了解了下CollapsingToolbarLayout的使 ... -
MVP模式的学习
2016-12-10 15:15 676以前我写代码都是使用MVC模式,这种模式使Activity变得 ... -
Material Design:Android Design Support Library 介绍
2016-12-10 14:14 471参考链接 : https://blog.leancloud.c ... -
SpannableString简介
2016-12-10 14:03 424参考链接: http://www.cnblogs.com/ji ... -
getResources().getDrawable方法的废弃
2016-12-10 13:20 1236参考链接:http://www.jianshu.com/p/e ... -
关于AndroidStudio的Unsupported major.minor version 52.0异常
2016-12-10 13:15 2380参考链接:http://blog.csdn.net/fakin ... -
Android记录
2015-06-01 10:54 642http://tools.android-studio.org ... -
android自定义控件相关使用
2015-04-24 16:53 612用代码简单介绍下自定义控件的使用: 先看主activity: ...
相关推荐
镜子是每个爱美的人必备的物品,但是并不是什么时候都带在身边;手机也是每个人必备的物品,...今天我们就来通过调用摄像头实现一款手机镜子,去掉手机照相机界面上多余的设置部分,带给大家一个干干净净的原生的镜子。
手机镜子是一款简单的应用程序,可以将手机屏幕变成镜子。 **关键功能:** - **屏幕镜像:** 将手机屏幕作为镜子使用,便于外出时整理仪容。 - **高清显示:** 保证高清晰度,方便用户查看细节。 #### 六、指纹...
"镜子app"就是这样一款应用,它充分利用了手机的前置摄像头功能,为用户提供了一个随身携带的“镜子”。这款App简洁易用,无论是在日常生活中还是在需要整理仪容的场合,都能提供极大的便利。本文将深入探讨"镜子app...
电子政务-带镜子的手机或掌上电脑.zip
8. **镜子**:虚拟镜子功能则让手机变成一个手持镜子,特别是在没有实物镜子的情况下,如化妆、检查衣着等。 这些工具的实现通常基于iOS设备的硬件传感器,如加速度计、陀螺仪、麦克风等,结合先进的软件算法,为...
在Android平台下开发一款“小镜子”应用,主要目的是利用手机的摄像头来实现一个简易版的镜子功能。本文将深入解析这款应用的部分源码,并从中提取出关键的技术知识点。 #### 1. 基础配置与初始化 ```java package...
硬件部分,树莓派作为控制中心,通过蓝牙和Wi-Fi与用户的手机等设备建立连接,实现信息的交换。软件部分则包含两个关键模块:一是运行在镜子屏幕上的应用程序,它负责用户界面的交互;二是后台数据处理程序,这里...
有的甚至集成到智能家居系统中,可以通过手机应用程序或语音助手进行控制。 在建筑装置领域,吹风功能的镜子不仅提升了功能性,还带来了设计上的创新。它的存在让浴室空间更加现代化,符合了现代人追求高效、舒适的...
3. **数据同步服务**:与用户的手机或电脑同步日程、提醒等个人数据。 4. **语音识别与交互**:集成AI助手,如Google Assistant或Amazon Alexa,用户可以通过语音命令控制镜子。 5. **个性化设置**:用户可以根据...
有了这个功能,用户可以随时查看时间,无需依赖手机或其他设备,从而更加专注于手头的工作。尤其是在会议、讨论或者现场调度时,快速掌握时间可以帮助保持计划的顺利进行。 这款产品的设计考虑了建筑行业的实际需求...
自1987年中国首个移动电话局在广州开通以来,中国手机行业的发展历史几乎可视为中国通信产业崛起和社会变迁的一面镜子。过去的几十年里,从贵重的奢侈品到普及的必需品,手机的变化不仅仅体现在功能的多样化,更记录...
4. **无线通信技术**:Wi-Fi、蓝牙或Zigbee等无线通信技术使得梳妆台能与其他智能设备互动,比如,通过手机控制梳妆台的镜子角度、灯光颜色和亮度。 5. **数据分析与AI**:梳妆台收集的数据,如用户的使用习惯,...
同时,这一过程可以轻松地与手机连接,使顾客可以随时将试穿效果分享给好友,进行互动,获取意见,这不仅为消费者提供了便利,也为商家创造了口碑传播的机会。 在快速消费文化主导的今天,传统的试衣间模式已经不能...
4. **系统配置**:安装完成后,可能需要根据车辆型号和用户需求进行个性化设置,例如连接Wi-Fi、绑定手机、设定安全权限等。 5. **系统更新**:车联网系统需要定期更新,以获取最新的功能和安全补丁。检查并安装...
蓝牙芯片用于实现智能镜子与智能手机、平板电脑等设备的无线连接。KT6905系列芯片可能包含了蓝牙模块,支持蓝牙4.0或更高版本,提供低功耗的数据传输,允许用户通过蓝牙从移动设备无线传输音乐到智能镜子。蓝牙芯片...
资源关键词:手机游戏策划案、《恶魔反光镜》、益智游戏、解迷、镜子、恶魔、游戏元素、游戏机制、挑战性、市场分析、游戏需求、支持平台、适用机型。 资源详细信息: 《恶魔反光镜》游戏是益智游戏类型,游戏的...
《手机的发展史——从...从最初的"大哥大"到现在的智能手机,手机不仅是科技发展的见证,更是社会发展的一面镜子。随着5G、AI等新技术的应用,未来的手机将更加智能化,更加个性化,继续引领我们的生活进入新的纪元。
【小镜子之car-2.7z】是一个与"car"相关的压缩包文件,其中包含了一个名为"2"的子文件。尽管提供的信息有限,但我们可以根据“car”这一标签来探讨与汽车技术、汽车行业或者与汽车相关的软件开发等相关知识点。 在...
充电功能则可能是指装置内嵌了USB接口或其他充电设施,为市民的移动设备如手机、平板电脑等提供应急充电服务,增强了公共设施的实用性。 电子政务在设计这样的设施时,通常会考虑到以下几个方面: 1. 技术整合:...