Codeunit 1908 Camera Page Impl. in 25
- App
- System Application
- Namespace
- System.Device
Versions171819202122232425262728latest
Source in 25
src/System Application/App/Camera and Media Interaction/src/CameraPageImpl.Codeunit.al122 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace System.Device;
using System.Utilities;
codeunit 1908 "Camera Page Impl."
{
Access = Internal;
InherentEntitlements = X;
InherentPermissions = X;
var
FileHelper: Codeunit "File Helper";
FileTempBlob: Codeunit "Temp Blob";
CameraOptions: DotNet CameraOptions;
AreCameraOptionsInitialized: Boolean;
QualityOutOfRangeErr: Label 'The picture quality must be in the range from 0 to 100.';
NoPictureWasTakenErr: Label 'No picture was taken.';
procedure CameraInteractionOnOpenPage(var CameraProvider: DotNet CameraProvider; var CameraAvailable: Boolean)
var
HandledByTest: Boolean;
PictureFilePath: Text;
begin
OnBeforeCameraInitialize(HandledByTest, PictureFilePath);
if HandledByTest then begin
CameraInteractionOnPictureAvailable(PictureFilePath);
exit;
end;
CameraAvailable := IsAvailable(CameraProvider);
if not CameraAvailable then
exit;
InitializeCameraOptions();
CameraProvider := CameraProvider.Create();
CameraProvider.RequestPictureAsync(CameraOptions);
end;
local procedure InitializeCameraOptions()
begin
if AreCameraOptionsInitialized then
exit;
CameraOptions := CameraOptions.CameraOptions();
AreCameraOptionsInitialized := true;
end;
procedure IsAvailable(CameraProvider: DotNet CameraProvider): Boolean
var
IsCameraAvailable: Boolean;
begin
IsCameraAvailable := CameraProvider.IsAvailable();
OnIsCameraAvailable(IsCameraAvailable);
exit(IsCameraAvailable);
end;
procedure SetAllowEdit(AllowEdit: Boolean)
begin
InitializeCameraOptions();
CameraOptions.AllowEdit := AllowEdit;
end;
procedure SetEncodingType(EncodingType: Enum "Image Encoding")
begin
InitializeCameraOptions();
case EncodingType of
Enum::"Image Encoding"::JPEG:
CameraOptions.EncodingType := 'JPEG';
Enum::"Image Encoding"::PNG:
CameraOptions.EncodingType := 'PNG';
end;
end;
procedure SetQuality(Quality: Integer)
begin
if (Quality < 0) or (Quality > 100) then
Error(QualityOutOfRangeErr);
InitializeCameraOptions();
CameraOptions.Quality := Quality;
end;
procedure GetPicture(var TempBlob: Codeunit "Temp Blob")
begin
if not FileHelper.GetFile(TempBlob) then
Error(NoPictureWasTakenErr);
end;
procedure HasPicture(): Boolean
begin
exit(FileHelper.FileExists());
end;
procedure GetPicture(InStream: InStream)
begin
GetPicture(FileTempBlob);
FileTempBlob.CreateInStream(InStream);
end;
procedure CameraInteractionOnPictureAvailable(FilePath: Text)
begin
FileHelper.SetPath(FilePath);
end;
[InternalEvent(false)]
procedure OnBeforeCameraInitialize(var Handled: Boolean; var PictureFilePath: Text)
begin
// Used for testing
end;
[InternalEvent(false)]
procedure OnIsCameraAvailable(var IsAvailable: Boolean)
begin
// Used for testing
end;
}
Procedures, 9
| Name | Parameters | Returns | Access | Obsolete |
|---|---|---|---|---|
| CameraInteractionOnOpenPage | (var DotNet CameraProvider, var Boolean) | public | - | |
| IsAvailable | (DotNet CameraProvider) | Boolean | public | - |
| SetAllowEdit | (Boolean) | public | - | |
| SetEncodingType | (Enum Image Encoding) | public | - | |
| SetQuality | (Integer) | public | - | |
| GetPicture | (var Codeunit Temp Blob) | public | - | |
| HasPicture | () | Boolean | public | - |
| GetPicture | (InStream) | public | - | |
| CameraInteractionOnPictureAvailable | (Text) | public | - |
Events, 2
| Kind | Name | Parameters | Obsolete |
|---|---|---|---|
| Internal event | OnBeforeCameraInitialize | (var Boolean, var Text) | - |
| Internal event | OnIsCameraAvailable | (var Boolean) | - |