首页
学习
活动
专区
圈层
工具
发布

android之相机开发

在android中应用相机功能,一般有两种:一种是直接调用系统相机,一种自己写的相机。...第二种: (1)首先我们要自己创建一个照相界面,必须考虑用什么控件显示照相机中的预览效果,显然android已经帮我们做好了选择,那就是SurfaceView 控制SurfaceView需要一个surfaceHolder...,他是系统提供的一个用来设置SurfaceView的一个对象,可以通过surfaceView.getHolder()这个方法来获得....那么这是就需要在那个参数中的jpeg的 方法里面进行处理了,那个方法的data参数,就是相片的数据。...,但是我们在程序上,也可以做一些处理, 向上面的那些,因为我直接把surfaceView当做整体布局,就可能出现屏幕被拉开了,不是很好看,所以这时,就可以不要把 surfaceView弄成整体布局,

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android开发BUG速查: Camera问题分析与解决方案实战日志

    这时候,日志中可能会出现安全异常,比如SecurityException,提示没有CAMERA权限。因此,可以建议在日志中检查权限相关的错误,并确保所有必要的权限都已正确声明。...(),而是搞不懂为什么同样的代码在SurfaceView里能跑通,在按钮点击事件里就报错。...布局层次过深:SurfaceView 嵌套在多层布局中,可能导致在某些设备上初始化延迟或失败。...权限与特性声明的日志验证 在 AndroidManifest.xml 中声明权限和特性后,建议在代码中动态验证权限是否被授予,避免因权限未声明或用户拒绝导致功能异常: // 在Activity的onCreate...我的血泪教训也总结成了几条供大家参考: 永远不要相信“一步到位”:在onCreate里找到SurfaceView的引用就够了,别急着碰它的Holder。

    44710

    【Android FFMPEG 开发】FFMPEG ANativeWindow 原生绘制 ( Java 层获取 Surface | 传递画布到本地 | 创建 ANativeWindow )

    : Surface 画布可以在 SurfaceView 的 SurfaceHolder 中获取 //绘制图像的 SurfaceView SurfaceView surfaceView; //在 SurfaceView...surfaceHolder.getSurface() ; ② 将 Surface 对象传递到 Native 层 : 在 SurfaceHolder.Callback 接口的 surfaceChanged...Surface 画布 : 这里的 Surface 画布从 SurfaceView 中获得 , SurfaceHolder.Callback 的监听方法中获取 SurfaceHolder 及 Surface...实现 Surface 传递方法 : 在 Native 层实现 Java 中定义的方法 ; extern "C" JNIEXPORT void JNICALL Java_kim_hsl_ffmpeg_Player_native...ANativeWindow 创建 : 在 Native 层实现 Java 中定义的本地方法 native_set_surface ( ) , 在该方法中传入了 Surface 对象作为参数 ; 在该 Native

    1.3K10

    Android多媒体录制--MediaRecorder视频录制

    surfaceView.getHolder().setKeepScreenOn(true); 3、现在看“开始录制”监听事件 ----3.1 创建MediaRecorder对象...这样图像就是正常显示了,这里设置的是观看保存后的视频的角度 recorder.setOrientationHint(90); ----3.4 设置文件存储路径,这里简陋了,实际开发中需要判断是否有外部存储...android.media.MediaRecorder; 5 import android.os.Bundle; 6 import android.os.Environment; 7 import android.view.SurfaceHolder...isRunning){ 57 try { 58 //创建MediaRecorder对象 59 recorder...,用于给刚接触MediaRecorder音频录制的coder学习,存在一些Bug和不足,各位coder可以继续拓展 不足: 1、只有当点击“开始录制”的时候SurfaceView组件才可以看到摄像头拍摄的预览

    3.7K70

    Android开发笔记(五十六)摄像头拍照

    图像数据可以在接口中的onPictureTaken方法中获得,通常我们只关心最后一个的JPG图像数据,所以前面的接口参数可以直接传null。...预览视图SurfaceView/预览持有者SurfaceHolder SurfaceView是Android中的一种特殊视图,它拥有独立的绘图表面,即它不与其宿主页面共享同一个绘图表面。...由于拥有独立的绘图表面,因此SurfaceView的界面就可以在一个独立的线程中进行绘制,我们称之为渲染线程。因为它不占用主线程资源,所以一方面可以实现复杂而高效的UI,另一方面也会及时响应用户输入。...: 获取预览视图的对象。...该方法用于关联SurfaceView和SurfaceHolder,它与Camera.setPreviewDisplay最终联合完成SurfaceView与Camera的关联,即摄像头的画面展示在预览界面上

    2.3K20

    使用Android MediaPlayer播放媒体文件

    这个方法有多个重载版本,适应于不同的情况,既可以对使用文件路径作为参数,也可以使用描述文件位置的Uri作为参数 prepare() 在开始播放之前调用这个方法完成媒体文件的准备工作 start() 开始播放媒体文件文件...* setDisplay方法接收的是一个SurfaceHolder * 对象所以先要得到我们布局文件中的...* SurfaceView的SurfaceHolder对象,之后 * 设置长和宽,最后设置视频输出源 */...因为模拟器中没有媒体文件,所以用的真机进行的测试,单击“开始”按钮: ? 单击“暂停”按钮: ? 单击“停止”按钮之后又变成了第一幅图。...接下来在媒体文件路径输入控件EditText中输入一个视频的绝对路径: ? 成功的播放出来了视频!

    3.1K10

    android画图之贝塞尔曲线讲解

    ,在Android中极其的简单,因为它是Android封装的一个方法,这个能不简单么。。。。。。...只不过它隐藏的比较深,它隐藏于Path类中,方法如下: android.graphics.Path.quadTo(float x1, float y1, float x2, float y2) Since...; 熟悉方法后,下面就来实现: SurfaceView框架不多讲,看过我博客的都应该知道的; 直接看MySurfaceView类,此类继承SurfaceView ,是游戏的主视图 这里为了更清晰的讲解:...这里部分代码先不贴出来了,最后会整体贴出,当然源码也是免费在最后提供~ 首先是定义相关的成员变量: // 贝赛尔曲线成员变量(起始点,控制(操作点),终止点,3点坐标) private int startX...这里我简单的统一的讲操作点设置成用户触屏点的x,y的一半,呵呵偷懒了~嘻嘻~ 我把贝赛尔的操作点写在了逻辑logic()函数中,不断的执行,并且每次利用nextInt函数得到随机的操作点,主要为了让其曲线不断的变化从而形成一个震动的曲线运动轨迹

    1.4K70

    安卓基础干货(十):安卓多媒体编程的学习

    RGB ARGB 32 应用程序在启动时系统为它创建一个进程,系统为每个进程创建dalvik虚拟机(模拟器设置的VM Heap),当图片的大小大于虚拟机的堆内存空间时,就内存溢出(内存泄露);...解决办法:缩放图片加载到内存 步骤: 1、获得设备屏幕的分辨率; 2、得到原图的分辨率; 3、通过比较得到一个合适的比例值; 4、按照比例值缩放图片 5、把图片显示在imageview 缩放图片并加载到内存中...iv.setImageBitmap(bm); } } 在内存中创建原图的副本(重点) 步骤: 1、得到原图; 2、创建一个空白的纸张,参考原图; 3、创建一个画板,参考空白纸张...(重点) surfaceview表面视图 双缓冲区:使用两个线程协调工作; surfaceview 重量级空间,当画面可见时,双缓冲器被创建,占用较高的cpu和内存资源。...1 引入vitamio框架 以library形式引入 2 在布局中定义VideoView <io.vov.vitamio.widget.VideoView android:id="@+id

    2.2K10

    【Android 多媒体开发】 MediaPlayer 网络视频播放器

    , SurfaceView 相当与 Surface 的窗口, 只有在 SurfaceView 窗口区域内的才是可见的, 其它没有在窗口正下方的内容不可见; -- Surface 与 SurfaceView...SurfaceView 使用流程 (1) 在布局文件中使用 SurfaceView 组件  布局文件 : 在布局文件中使用 SurfaceView /> 组件; -- 示例 :  SurfaceView...获取 SurfaceView : 使用 findViewById() 方法从布局文件中获取 SurfaceView 组件对象; surface_view = (SurfaceView) findViewById...从 SurfaceView 组件对象中获取 SurfaceHolder : 调用 SurfaceView 对象的 getHolder() 即可获取 SurfaceHolder 对象; surface_holder...AutoCompleteTextView 组件 组件特性 : 可以设置一个适配器, 适配器中维护一组字符串, 当输入一部份字符后, 能 自动将符合条件的提示出来; -- 示例 :  (1) 在布局文件中定义组件

    3.6K20

    Android利用SurfaceView显示Camera图像爬坑记(四)

    前言 通过前面几篇,利用SurfaceView显示Camera的图像已经没什么问题了,接下来我们就要打磨一下细节,主要就是手机旋转的问题,考虑到我们会用横屏和竖屏的不同的情况。...原来的代码中我们也只是解决了默认竖屏的问题 在StartCamera中,设置了直接旋转90度(不过我们改为SurfaceTexture这样显示后,这个没什么用了) ?...然后在构造函数中获取到当前windowmanager。 ?...Camera,在surfaceDestoryed中加入了关闭Camera,而surfaceChanged中什么也没写,这次这个方法就被我们用到了。...生成的图像后加入角度旋转 最后在我们nv21ToBitmap中的旋转角度改为我们已经定义的retatedegree ?

    3.2K40
    领券