На самом деле это свойство в 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");
}
Как можно заметить, звук щелчка запускается без вашего взаимодействия.
Эта служба используется в исходном коде Gingerbread.
Причина, по которой они НЕ допускают это, заключается в том, что в некоторых странах она запрещена.Единственный способ добиться того, чего вы хотите - это иметь пользовательское ПЗУ.
Обновление
Если сказанное здесь: http://androidforums.com/t-mobile-g1/6371-camera-shutter-sound-effect-off.html
все еще применяетсязатем вы можете написать таймер, который отключает звук (бесшумный режим) на пару секунд, а затем снова включать его каждый раз, когда вы делаете снимок.