Android Camera.takePicture-是否可以禁用快门声音并预览曲面?
我正在开发一款允许用户快速点击并忘记快照的应用程序。大部分的应用程序都完成了,除了相机的工作方式,我想。现在我有相机工作,但我似乎找不到一种方法来禁用快门声音,我也找不到一种方法来禁用显示预览。我可以用一个控件覆盖预览,但如果可能的话,我宁愿不显示它 总而言之,这些是我想在使用内置摄像头控件时禁用的项目Android Camera.takePicture-是否可以禁用快门声音并预览曲面?,android,android-camera,Android,Android Camera,我正在开发一款允许用户快速点击并忘记快照的应用程序。大部分的应用程序都完成了,除了相机的工作方式,我想。现在我有相机工作,但我似乎找不到一种方法来禁用快门声音,我也找不到一种方法来禁用显示预览。我可以用一个控件覆盖预览,但如果可能的话,我宁愿不显示它 总而言之,这些是我想在使用内置摄像头控件时禁用的项目 快门声 摄像机屏幕显示 PictureTaken上的图像预览 如果有人知道有什么资源可以为我指明正确的方向,我将不胜感激。我一直在密切关注Commonware的例子 谢谢。这实际上是手机buil
谢谢。这实际上是手机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秒的视频剪辑,我想知道快门/录制声音是否需要播放,我猜是这样。“这样就不会违反任何法律了?”???世界跆拳道联盟?在世界各地,几乎每个国家都安装了数百万台摄像机来监视人们和建筑物。你们这些人是从哪里想出这些可笑的主意的?这不是可笑的主意。。这是对手机的限制。阅读