Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Camera.takePicture-是否可以禁用快门声音并预览曲面?_Android_Android Camera - Fatal编程技术网

Android Camera.takePicture-是否可以禁用快门声音并预览曲面?

Android Camera.takePicture-是否可以禁用快门声音并预览曲面?,android,android-camera,Android,Android Camera,我正在开发一款允许用户快速点击并忘记快照的应用程序。大部分的应用程序都完成了,除了相机的工作方式,我想。现在我有相机工作,但我似乎找不到一种方法来禁用快门声音,我也找不到一种方法来禁用显示预览。我可以用一个控件覆盖预览,但如果可能的话,我宁愿不显示它 总而言之,这些是我想在使用内置摄像头控件时禁用的项目 快门声 摄像机屏幕显示 PictureTaken上的图像预览 如果有人知道有什么资源可以为我指明正确的方向,我将不胜感激。我一直在密切关注Commonware的例子 谢谢。这实际上是手机buil

我正在开发一款允许用户快速点击并忘记快照的应用程序。大部分的应用程序都完成了,除了相机的工作方式,我想。现在我有相机工作,但我似乎找不到一种方法来禁用快门声音,我也找不到一种方法来禁用显示预览。我可以用一个控件覆盖预览,但如果可能的话,我宁愿不显示它

总而言之,这些是我想在使用内置摄像头控件时禁用的项目

  • 快门声
  • 摄像机屏幕显示
  • PictureTaken上的图像预览
  • 如果有人知道有什么资源可以为我指明正确的方向,我将不胜感激。我一直在密切关注Commonware的例子


    谢谢。

    这实际上是手机build.prop中的一个属性。我不确定是否有可能改变这一点。除非您完全覆盖它并使用自己的相机代码。使用SDK中提供的所有功能

    看看这个:

    CameraService.cpp . . .

    CameraService::Client::Client(const sp<CameraService>& cameraService,
            const sp<ICameraClient>& cameraClient,
            const sp<CameraHardwareInterface>& hardware,
            int cameraId, int cameraFacing, int clientPid) {
            mPreviewCallbackFlag = FRAME_CALLBACK_FLAG_NOOP;
                mOrientation = getOrientation(0, mCameraFacing == CAMERA_FACING_FRONT);
                mOrientationChanged = false;
                cameraService->setCameraBusy(cameraId);
                cameraService->loadSound();
                LOG1("Client::Client X (pid %d)", callingPid)
        }
    
        void CameraService::loadSound() {
            Mutex::Autolock lock(mSoundLock);
            LOG1("CameraService::loadSound ref=%d", mSoundRef);
            if (mSoundRef++) return;
    
            mSoundPlayer[SOUND_SHUTTER] = newMediaPlayer("/system/media/audio/ui/camera_click.ogg");
            mSoundPlayer[SOUND_RECORDING] = newMediaPlayer("/system/media/audio/ui/VideoRecord.ogg");
        }
    
    CameraService::Client::Client(const sp&CameraService,
    const sp和cameraClient,
    const sp和硬件,
    int cameraId、int cameraFacing、int clientPid){
    mPreviewCallbackFlag=帧\回调\标志\无操作;
    mOrientation=getOrientation(0,mCameraFacing==面向前方的摄像头);
    MorentationChanged=false;
    cameraService->setCameraBusy(cameraId);
    摄像服务->加载声音();
    LOG1(“客户端::客户端X(pid%d)”,调用pid)
    }
    void CameraService::loadSound(){
    互斥锁::自动锁定锁(mSoundLock);
    LOG1(“CameraService::loadSound ref=%d”,mSoundRef);
    if(mSoundRef++)返回;
    mSoundPlayer[SOUND_SHUTTER]=newMediaPlayer(“/system/media/audio/ui/camera_click.ogg”);
    mSoundPlayer[SOUND_RECORDING]=newMediaPlayer(“/system/media/audio/ui/VideoRecord.ogg”);
    }
    
    可以注意到,单击声音是在没有交互的情况下启动的

    这是姜饼源代码中使用的服务

    他们之所以不允许这样做,是因为在某些国家这样做是非法的。实现您想要的唯一方法是拥有一个自定义ROM

    更新

    如果这里说的是:


    仍然适用,然后您可以编写一个计时器,关闭声音(静音模式)几秒钟,然后在每次拍照时将其重新打开。

    您可以使用函数将预览回调中的数据保存在某种类型的触发器(如按钮)上的图片上,使用onclick listener。您可以将图像压缩为jpeg或png格式。这样,就不需要实现任何回调。因此,您可以在拍照时播放任何想要的声音,也可以不播放任何声音。

    您可以通过在xml文件中为预览曲面指定1p的尺寸来有效隐藏它(我发现了一个示例,上面提到的0p,但由于某种原因导致了错误)

    在某些地方使用静音快门可能是违法的,但美国似乎不是这样一个地方,因为我的HTC One给了我一个静音选项,事实上,由于Android 4.2,您可以这样做:

    Camera.CameraInfo info=new Camera.CameraInfo();
    if (info.canDisableShutterSound) {
        camera.enableShutterSound(false);
    }
    

    嗯。好吧,我想可以先将手机切换到静音模式,然后再切换回常规模式,但这似乎并不适用于所有设备。你认为可以告诉相机快门上播放什么声音吗?也许我可以用一个自定义的声音文件来替换快门的默认声音(例如,只有空空的声音)…除非手机是根目录,否则这是不可能的。用户/系统甚至都不能更改文件夹/文件的内容,只有root用户可以。顺便说一句,我说的是文件权限。谢谢你JoxTraex,我想我已经决定放弃沉默图片的想法,这样就不会违反任何法律。你知道有没有可能录制一段无声的视频片段?假设我把它设置为录制一个1秒的视频剪辑,我想知道快门/录制声音是否需要播放,我猜是这样。“这样就不会违反任何法律了?”???世界跆拳道联盟?在世界各地,几乎每个国家都安装了数百万台摄像机来监视人们和建筑物。你们这些人是从哪里想出这些可笑的主意的?这不是可笑的主意。。这是对手机的限制。阅读