Я создал исполняемый файл в 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();
}