首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Android相机开发那些坑

最近我负责开发了一个跟Android相机有关需求,新功能允许用户使用手机摄像头,快速拍摄特定尺寸(1:1或3:4)照片,并支持在拍摄出照片上做贴纸相关操作。...由于之前没有接触过Android相机开发,所以在整个开发过程中踩了不少坑,费了不少时间和精力。...一.Android中开发相机应用两种方式 Android系统提供了两种使用手机相机资源实现拍摄功能方法,一种是直接通过Intent调用系统相机组件,这种方法快速方便,适用于直接获得照片场景,如上传相册...SurfaceHolder:surfaceholder是控制surface一个抽象接口,它能够控制surface尺寸和格式,修改surface像素,监视surface变化等等,surfaceholder...对应到自定义相机代码中,要注意在拍照按钮事件响应中执行camera.autofocus或camera.takepicture前,一定要检验camera有没有设置预览Surfaceview并开启了相机预览

29.3K50

Android开发笔记(一百二十五)自定义视频播放器

其中通过SurfaceView显示视频画面,通过MediaPlayer来设置播放参数、并控制视频播放操作;该方式具体说明参见《Android开发笔记(五十七)录像录音与播放》。...VideoView其实是从SurfaceView扩展而来,并在内部集成了MediaPlayer,从而实现视频画面与视频操作统一管理;而MediaController则是一个简单播放控制条,它实现了基本控制按钮...,这个简单播放器存在若干不足,包括: 1、控制条分上下两行,上面是控制按钮,下面是进度条,高度太宽了; 2、按钮样式无法定制,且不能增加和删除按钮; 3、进度条与播放时间样式也不能定制; 4、...好在我们需求只是更改控制样式,没有增加复杂功能,增添几个指定风格控件想必大家都很熟练了,唯一难点在于如何跟VideoVie对象同步当前播放进度。...如果只是修改代码,其实还不能完全实现自动全屏功能,主要问题如下: 1、屏幕顶部系统状态栏依然留在屏幕顶端; 2、App自身导航栏也仍旧没有隐藏; 3、在视频播放途中,如果手机屏幕发生切换,例如从竖屏变为横屏

2.6K40

使用Android MediaPlayer播放媒体文件

我们平时利用Android手机娱乐最常见方式莫过于听歌和看电影了,当然还有玩游戏,当然,这里我要说是针对Android对于媒体文件播放支持。... 整体是一个竖向布局,最上面是一个EditText用于输入媒体文件路径,接下来是三个按钮控制播放状态,最后是一个SurfaceView组件用于作为视频文件输出控件,...; import android.view.SurfaceView; import android.view.View; import android.view.SurfaceHolder.Callback...(设定媒体文件路径、准备媒体文件、判断是音频还是视频),之后就是控制播放状态和进行相关按钮状态UI更新,逻辑并不复杂。...因为模拟器中没有媒体文件,所以用真机进行测试,单击“开始”按钮: ? 单击“暂停”按钮: ? 单击“停止”按钮之后又变成了第一幅图。

2.6K10

Android 照相机 camera 操作封装

项目中经常用到Android自带camera拍照功能。于是做了个封装,CameraUtil.java类。 再次用到就简单啦,可以最大限度复用提高效率。...我最喜欢对常用功能模块进行封装,因为优秀代码思想就是要追求最大化复用和高效率。推荐《重构》和《程序员修炼之道》书籍。不要觉得这类书籍有些理论比较空洞,不如看某某实战之类书籍。...第一个就是预览界面surfaceView,第二个参数相机ID,默认为0.第三个参数图像旋转角度。第四个参数拍照按钮。onPictureListener为拍完照片回调处理。...; import android.util.Log; import android.view.Surface; import android.view.SurfaceHolder; import android.view.SurfaceView...= null) { mCamera.stopPreview(); } } }; /* * 控制图像正确显示方向

1.2K10

Android 图形架构

SurfaceFlinger收到VSYNC信号后,会遍历它所有visible layers:如果该layer有新buffer,获取它;如果没有,继续使用旧buffer;如果该layer没有任何buffer...点击右上角”OPEN FILE“按钮,选择要打开pb文件,如图: Analyzing a trace in WinScope 这个trace里面有下面几个部分: Timeline — 事件时间轴...SurfaceHolder:提供可以编辑和控制Surface接口。大部分和view交互组件都关联一个SurfaceHolder来操作Surface,如SurfaceView。...在 API 24 及更高版本中,建议使用SurfaceView而不是TextureView。 两者功能类似并且都是 view hierarchy 中一员。但是,它们实现方法不一样。...但TextureView在某些功能实现上比SurfaceView要简单,比如缩放功能实现:缩放SurfaceView需要FrameLayout自定义实现,WindowManager需要告诉SurfaceFlinger

1.7K21

Android实现通话最小化悬浮框效果

关于音视频通话过程中最小化成悬浮框这个功能实现,网络上类似的文章很多,但是好像还没看到解释较为清晰,这里因为项目需要实现了这样一个功能,今天我把它记录下来,一方面为了以后用到便于自己查阅,一方面也给有需要的人提供一个思路...二、实现思路 关于这个功能实现其实不难,这里我把实现思路拆分为了两步:1、视频通话Activity最小化。...2、视频通话悬浮框开启 具体思路是这样:当用户点击最小化按钮时候,最小化我们视频通话Activity(这时Activity处于后台状态),移除原先在Activity视频画布(因为我用是网易云信...这里我把悬浮框实现方法写在一个服务Service里面,将悬浮框开启关闭与服务Service绑定解绑所关联起来,开启服务即相当于开启我们悬浮框,解绑服务则相当于关闭关闭悬浮框,以此来达到更好控制效果...Android开发又一功能实现方式,希望我们整理能够帮助到你。

2.5K50

Android基础--SurfaceView, Surface, SurfaceHolder

即Surface是保存原始缓存区句柄,也就是显示像素数据 SurfaceView SurfaceView是视图(View)继承类,这个视图里内嵌了一个专门用于绘制Surface。...你可以控制这个Surface格式和尺寸。Surfaceview控制这个Surface绘制位置。 surface是纵深排序(Z-ordered),这表明它总在自己所在窗口后面。...这意味者 surface内容会被它兄弟视图遮挡,这一特性可以用来放置遮盖物(overlays)(例如,文本和按钮等控件)。...SurfaceHolder是用来操作surface接口,通过SurfaceViewgetHolder来获取 Surface、SurfaceView和SurfaceHolder关系类似MVC。...Model为Surface;View为SurfaceView, Control为SurfaceHolder。 参考https://www.android-doc.com/reference/

2K30

Android面试常问基础知识点(附详细解答)

如,将屏幕左上角按钮 通过补间动画 移动到屏幕右下角 点击当前按钮位置(屏幕右下角)是没有效果,因为实际上按钮还是停留在屏幕左上角,补间动画只是将这个按钮绘制到屏幕右下角,改变了视觉效果而已。...接口中成员: 成员变量:只能是常量 默认修饰符 public static final(不能被修改) 构造方法:没有,因为接口主要是扩展功能,而没有具体存在 成员方法:只能是抽象方法 默认修饰符...从API中可以看出SurfaceView属于View子类 它是专门为制作游戏而产生,它功能非常强大,最重要是它支持OpenGL ES库,2D和3D效果都可以实现。...Android系统提供了View进行绘图处理,我们通过自定义View可以满足大部分绘图需求,但是这有个问题就是我们通常自定义View是用于主动更新情况,用户无法控制其绘制速度,由于View是通过...SurfaceView在绘图时使用l了双缓冲机制,而View没有

2.3K31

android之相机开发

android中应用相机功能,一般有两种:一种是直接调用系统相机,一种自己写相机。...第二种: (1)首先我们要自己创建一个照相界面,必须考虑用什么控件显示照相机中预览效果,显然android已经帮我们做好了选择,那就是SurfaceView 控制SurfaceView需要一个surfaceHolder...Camera提供一个setPreviewDisplay(SurfaceHolder)方法来连接surfaceHolder,并通过他来控制surfaceView....很奇怪是,这个方法,不能随便放,如放在构造方法或者onCreate()方法中,都会照成没有预览效果. (3) SurfaceHolder.Callback,这是个holder用来显示surfaceView...*288,480*360,640*480) myCamera.setParameters(parames); 还有自动对焦,当然有些手机没有这个功能,自动对焦是通过autoFocus()这个方法调用一个自动对焦接口

76210
领券