`
Darar
  • 浏览: 87840 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

无声拍照

 
阅读更多
在Android系统中,通过代码控制拍照都会有咔嚓一声,并且这个声音没法通过设置去除或改变,系统没有让拍照无声的接口。

这是由于手机拍照有声音是国际标准,就是为了防止偷pai,正规的Android发布厂商都会有。

换一种思路,相机除了拍照还有录像和预览的功能,拍照和录像都是无可避免有声音的,而通过相机预览是没有声音的。

所以需要研究一下预览模式下,能不能获取当前的图像。通过研究Camera类,发现真的有一个Camera.PreviewCallback的子类。

通过Camera.setPreviewCallback(previewCallback)方法,在相机预览的过程中,

每一帧都会回调到 onPreviewFrame(byte[] data, Camera paramCamera)中,代码如下:
private PreviewCallback previewCallback = new PreviewCallback(){
@Override
public void onPreviewFrame(byte[] data, Camera paramCamera){
    
    Log.i(TAG, "onPreviewFrame");

    try {
    YuvImage yuvimage = new YuvImage(
    data,
    ImageFormat.NV21,
    paramCamera.getParameters().getPreviewSize().width,
    paramCamera.getParameters().getPreviewSize().height,
    null);

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    yuvimage.compressToJpeg(
    new Rect(0,0,paramCamera.getParameters().getPreviewSize().width,
    paramCamera.getParameters().getPreviewSize().height), 80, baos);

    FileOutputStream outStream = new FileOutputStream(String.format("/sdcard/%d.jpg", 11111));
    outStream.write(baos.toByteArray());
    outStream.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
    }
    camera.stopPreview();
    camera.setPreviewCallback(null);    
}
};


当然,每一帧回调,都会有帧数据,这些帧数据就需要自己来编码并存储了。

data字节流默认是YCbCr_420_SP,2.2之前的并没有把这种数据转化的方法,

SDK2.2之后,提供了一个YuvImage的类来转成图片。

这样,在需要拍照的时候,取一帧数据就可以了,并没有真正的调用拍照的API,就实现了无声拍照。
分享到:
评论

相关推荐

    S5830 无声照相 升级包

    【S5830 无声照相 升级包】是一个针对三星Galaxy S5830手机的软件更新,其主要目的是优化或增强设备的照相功能,特别是实现无声拍照这一特性。在这款升级包中,我们关注的焦点是手机的相机应用以及可能涉及到的系统...

    无声拍照 自定义拍照 带前后摄像头切换

    本文将围绕"无声拍照"和"自定义拍照带前后摄像头切换"这两个核心知识点进行深入探讨。 首先,"无声拍照"是指在拍照时消除快门声音的功能。在某些场景下,例如图书馆、会议或安静的公共场所,用户可能希望避免拍照时...

    c5拍照无声补丁

    诺基亚的拍照无声软件,欢迎大家试用!下载记得加分

    i900拍照无声补丁

    综上所述,i900的拍照无声补丁是针对特定场景下的用户需求而设计的,它通过替换系统文件的方式,为用户提供了一个无声拍照的选择,同时保留了原有的声音选项。这种个性化的软件修改,一方面体现了智能手机操作系统的...

    5230/5233/5800照相无声补丁

    所以发一个照相无声补丁,供广大水货机油下载。我的5230是欧水,已经亲测过,没有问题,不过补丁需要签名,但是不必XX手机,安完之后,将情景模式中的警告音关闭,重启手机即可。如果想恢复照相声,直接打开警告声就...

    无声静音拍照

    好了,不要999,不要99,更不要0.9,完全免费的无声静音拍照,帮你搞定,快拿去吧! 1.无声单拍:无声单拍的照片会保存在手机本身的内存中,未导出之前只有本软件的相册功能可以查看。(可以导出到内存卡)。 2.无声...

    android隐藏拍照无卡顿操作

    4. **无声拍照**:在Camera2 API中,可以通过设置`CaptureRequest.CONTROL_AE_MODE`为`CONTROL_AE_MODE_ON`来禁用快门声音。但需要注意的是,这在某些设备上可能不奏效,因为Android系统出于安全考虑可能会强制开启...

    无声WAV文件 PPC专用 替代WAV文件 让快门声音变无声

    通过将默认的快门声音文件替换为无声WAV文件,用户可以实现无声拍照。 替换WAV文件的过程通常涉及以下步骤: 1. 使用文件管理器或类似应用访问PPC设备的文件系统。 2. 找到原快门声音文件的位置,通常位于系统或...

    i900拍照无声教程

    ### i900拍照无声教程 #### 概述 本文档旨在指导用户如何通过特定的设置操作让i900手机在拍照时实现无声模式。这对于需要静音环境下的拍照需求非常有用,例如在图书馆、会议或其他需要保持安静的场合。 #### 步骤...

    诺基亚c7拍照无声补丁

    国行诺基亚C7补丁,需自签后才可使用。安装后在程序管理中可以找到,随时可以删除或再安装。

    拍照无声补丁.sis

    只在诺基亚N5230上实验过,其他还没使用,就是照相的时候没有声音的

    I829 无声相机包

    最后,值得注意的是,无声拍照在某些国家和地区可能是非法的,因为它可能侵犯他人的隐私权。因此,在使用此类补丁时,用户应当了解当地的法律法规,避免不必要的法律风险。 综上所述,"I829 无声相机包"是一个针对...

    黑莓拍照消声软件berryAnnoying

    在某些场合,比如图书馆、会议或秘密拍摄时,这种无声拍照功能非常实用。8900型号的Blackberry手机用户已经验证了该软件的有效性,表明它能够兼容并成功地在这款设备上运行。 首先,我们要理解Blackberry操作系统的...

    诺基亚C500拍照无声补丁及签名专家

    诺基亚C500拍照无声补丁及签名专家 签名的意思就是: 将证书文件"写入"到未签名软件中,这样未签名软件就变成了签名过的软件了,只有签名过的软件才能被安装到手机上. 签名方法: 先将手机的日期调整到当前正确的日期,...

    N97 S60v5手机诺基亚关警告音关闭照相机快门声音的文件补丁亲测可用

    关闭照相机快门声音 诺基亚关警告音关闭照相机快门声音的文件补丁亲测可用

    E71 去掉拍照声音

    在当今智能手机普及的时代,人们越来越重视手机的个性化设置,尤其是诺基亚E71这样的经典智能手机,拥有...对于那些需要在特殊环境下进行无声拍照的用户,如果上述安全措施得当,这无疑是一个方便且实用的解决方案。

    黑莓手机拍照消声软件(8900测试通过)

    8. **法律考虑**:在某些国家和地区,禁止在公共场合无声拍照,以防止侵犯他人隐私。使用此类软件时,用户应了解当地的法律法规,以免触法。 总的来说,“BerryAnnoying”这类软件为黑莓用户提供了更多拍照时的...

    三星i8160无声相机

    无声相机功能允许用户拍照或录制视频时不会发出快门声,避免打扰周围的人。 在"教程.txt"中,可能包含了以下内容: 1. **开启无声相机**:首先,用户需要找到并打开手机上的相机应用,也就是"Camera.apk"。在设置...

Global site tag (gtag.js) - Google Analytics