如何以編程方式禁用相機快門聲,當我拍照時總是發出聲音,我正在調用發出聲音的MediaCapture的Dispose方法。有什麼方法可以禁用該聲音嗎?如何在不播放快門聲的情況下丟棄MediaCapture
下面是初始化代碼:
private async Task InitializeQrCode(CaptureElement captureElement)
{
string error = null;
try
{
if (mediaCapture == null)
{
mediaCapture = new MediaCapture();
var _deviceInformation = await GetCameraDeviceInfoAsync(Windows.Devices.Enumeration.Panel.Back);
var settings = new MediaCaptureInitializationSettings();
settings.StreamingCaptureMode = StreamingCaptureMode.Video;
settings.PhotoCaptureSource = PhotoCaptureSource.VideoPreview;
settings.AudioDeviceId = "";
if (_deviceInformation != null)
settings.VideoDeviceId = _deviceInformation.Id;
await mediaCapture.InitializeAsync(settings);
var maxResolution = mediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.Photo).Aggregate((i1, i2) => (i1 as VideoEncodingProperties).Width > (i2 as VideoEncodingProperties).Width ? i1 : i2);
await mediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.Photo, maxResolution);
if (mediaCapture.VideoDeviceController.FocusControl.FocusChangedSupported)
{
var focusSettings = new FocusSettings();
focusSettings.AutoFocusRange = AutoFocusRange.FullRange;
focusSettings.Mode = FocusMode.Auto;
focusSettings.WaitForFocus = true;
focusSettings.DisableDriverFallback = false;
mediaCapture.VideoDeviceController.FocusControl.Configure(focusSettings);
}
await mediaCapture.VideoDeviceController.ExposureControl.SetAutoAsync(true);
mediaCapture.SetPreviewRotation(VideoRotation.Clockwise90Degrees);
mediaCapture.SetRecordRotation(VideoRotation.Clockwise90Degrees);
}
captureElement.Source = mediaCapture;
await mediaCapture.StartPreviewAsync();
}
catch (Exception ex)
{
DialogBox.ShowOkMessage(this, "Error:" + ex.Message);
}
}
而這裏的是越來越效力於捕捉圖像,在CapturePhotoToStreamAsync快門聲代碼:
var stream = new InMemoryRandomAccessStream();
await mediaCapture.CapturePhotoToStreamAsync(imgProp, stream);
stream.Seek(0);
var wbm = new WriteableBitmap(WPAppConstants.Dimension.ImageEncodingWidth, WPAppConstants.Dimension.ImageEncodingHeight);
await wbm.SetSourceAsync(stream);
var result = bcReader.Decode(wbm);
if (result != null)
{
var torch = mediaCapture.VideoDeviceController.TorchControl;
if (torch.Supported) torch.Enabled = false;
await StopQrCodeScan();
var resultEvent = Result;
if (resultEvent != null)
{
resultEvent(null, new CameraClickedEventArgs { EncodedData = result.Text });
}
}
演示項目Onedrive Link
調用在MediaCapture上Dispose不會在正常情況下觸發快門聲。您應該發佈可能顯示這些症狀的最小代碼,並且我們將能夠幫助您更好。 – Mike