Как дать разрешение на использование микрофона для Java-приложения (macOS Mojave и выше)? - PullRequest
0 голосов
/ 06 ноября 2019

Я создал исполняемый файл в xcode (swift 4+). Я добавил разрешение микрофона в проекте (файл .plist) и также попросил разрешения на время выполнения: вот код:

switch AVCaptureDevice.authorizationStatus(for: .audio) {
    case .authorized:
        audioStarter.staticMode()

    case .notDetermined:
        AVCaptureDevice.requestAccess(for: .audio) { granted in
            if granted {
                print("Permission granted")
                audioStarter.staticMode()
            }
        }

    case .denied:
        print("Permission denied")
        exit(0)

    case .restricted:
        print("This user cannot access microphone")
        exit(0)
    }

Этот исполняемый файл работает нормально, если я запускаю его через терминал (онпоказывает всплывающее окно разрешения микрофона и работает абсолютно нормально). Но когда я запускаю этот exec-файл из Java Process, он не показывает разрешения на доступ к микрофону и, следовательно, exec-файл не работает. Вот пример кода в Java:

String cmd = getBinPath() + "./audio_service -r";
        try {
            final Process p = Runtime.getRuntime().exec(cmd);
            Scanner scanner = new Scanner(p.getInputStream());
            while (scanner.hasNextLine()) {
                String response = scanner.nextLine ();
                System.out.println(response);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
...