swift
microphoneaccess.mm
1 // SPDX-FileCopyrightText: Copyright (C) 2019 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
4 #include "microphoneaccess.h"
5 #ifdef Q_OS_MAC
6 #import <AVFoundation/AVFoundation.h>
7 #endif
8 
9 namespace swift::misc
10 {
12  QObject(parent)
13  { }
14 
16  {
17 #ifdef Q_OS_MAC
18  if (@available(macOS 10.14, *))
19  {
20  NSString *mediaType = AVMediaTypeAudio;
21  [AVCaptureDevice requestAccessForMediaType:mediaType completionHandler: ^ (BOOL granted)
22  {
23  emit permissionRequestAnswered(granted);
24  }];
25  }
26  else
27  {
28  emit permissionRequestAnswered(true);
29  }
30 #endif
31  }
32 
34  {
35 #ifdef Q_OS_MAC
36  if (@available(macOS 10.14, *))
37  {
38  NSString *mediaType = AVMediaTypeAudio;
39  AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];
40  if (authStatus == AVAuthorizationStatusAuthorized)
41  {
42  return AuthorizationStatus::Authorized;
43  }
44  else if (authStatus == AVAuthorizationStatusNotDetermined)
45  {
46  return AuthorizationStatus::NotDetermined;
47  }
48  return AuthorizationStatus::Denied;
49  }
50  else
51  {
52  return AuthorizationStatus::Authorized;
53  }
54 #else
55  return AuthorizationStatus::NotDetermined;
56 #endif
57  }
58 } // ns
void permissionRequestAnswered(bool granted)
User has answered the permission request popup.
CMacOSMicrophoneAccess(QObject *parent=nullptr)
Constructor.
AuthorizationStatus
Authorization status.
AuthorizationStatus getAuthorizationStatus()
Get current authorization status.
Free functions in swift::misc.