Реагировать нативную запись Exe-Audio не начинаетсяIOS

Программируем под IOS
Ответить
Anonymous
 Реагировать нативную запись Exe-Audio не начинается

Сообщение Anonymous »

Я использую React Native / Expo вместе с Expo-Audio (последняя версия). Я также попробовал ныне устаревшую expe-av и имел те же проблемы. Несмотря на то, что он показывает разрешения, предоставленные для микрофона, он все еще показывает ошибку и не активирует микрофон. Это мой личный телефон, поэтому я знаю, что микрофон работает должным образом. Я также проверил в настройках, что приложение имеет разрешения. < /P>
Код: < /p>
import React, { useState, useEffect } from 'react';
import {
SafeAreaView,
View,
Text,
TouchableOpacity,
Alert
} from 'react-native';
import * as Audio from 'expo-audio';
import { CustomHeader } from '../components/CustomHeader';
import { colors } from '../constants/colors';
import { styles } from '../styles/styles';

export const MicrophoneSpeakerTest = ({ navigation }) => {
const [permissionsGranted, setPermissionsGranted] = useState(false);
const [isRecording, setIsRecording] = useState(false);

// Simple recorder setup
const recorder = Audio.useAudioRecorder({
extension: '.m4a',
audioQuality: Audio.AudioQuality?.HIGH || 'high',
});

useEffect(() => {
setupPermissions();
}, []);

const setupPermissions = async () => {
try {
console.log('Setting audio mode...');
await Audio.setAudioModeAsync({
allowsRecordingIOS: true,
playsInSilentModeIOS: true,
});

console.log('Requesting permissions...');
const permission = await Audio.requestRecordingPermissionsAsync();
console.log('Permission result:', permission);
setPermissionsGranted(permission.granted);

} catch (error) {
console.error('Setup error:', error);
Alert.alert('Setup Error', error.message);
}
};

const testMicrophone = async () => {
if (!permissionsGranted) {
Alert.alert('No Permission', 'Microphone permission not granted');
return;
}

try {
if (isRecording) {
console.log('Stopping recording...');
await recorder.stop();
setIsRecording(false);
Alert.alert('Recording Stopped', 'Did you see the orange light disappear?');
} else {
console.log('Starting recording...');
await recorder.record();
setIsRecording(true);
Alert.alert(
'Recording Started!',
'Is microphone active?'
);
}
} catch (error) {
console.error('Recording error:', error);
Alert.alert('Recording Error', error.message);
setIsRecording(false);
}
};

return (





{/* Permission Status */}


Permission: {permissionsGranted ? '✅ Granted' : '❌ Denied'}



{/* Simple Test Button */}


{isRecording ? '🔴 STOP Recording' : '🎤 START Recording'}




{isRecording
? 'Recording active! Look for orange light at top of screen.'
: 'Press the button to test if microphone activates (orange light appears).'
}


{permissionsGranted && (


Retry Setup


)}



);
};
< /code>
Вывод журнала: < /p>
Setting audio mode...
Requesting permissions...
Permission result: {"canAskAgain": true, "expires": "never", "granted": true, "status": "granted"}
Starting recording...

ERROR Recording error: [Error: FunctionCallException: Calling the 'record' function has failed (at ExpoModulesCore/SyncFunctionDefinition.swift:137)
→ Caused by: RecordingDisabledException: Recording not allowed on iOS. Enable with Audio.setAudioModeAsync (at ExpoAudio/AudioRecorder.swift:104)]
< /code>
Я попробовал несколько разных вариантов для setaudiomodesync, без успеха: < /p>
await Audio.setAudioModeAsync({
allowsRecording: true,
playsInSilentMode: true,
useAudioRecorder: true,
useAudioRecorderState:true,
allowsRecordingIos: true,
playsInSilentModeIos: true, // Optional: Allows playback even when the device is in silent mode
shouldDuckAndroid: true, // Optional: Lowers other audio sources on Android during playback
interruptionModeAndroid: Audio.INTERRUPTION_MODE_ANDROID_DO_NOT_MIX, // Optional: Defines how audio interacts with other audio sources on Android
interruptionModeIos: Audio.INTERRUPTION_MODE_IOS_DO_NOT_MIX, // Optional: Defines how audio interacts with other audio sources on iOS

});
< /code>
Любые мысли об исправлении для этого? На Android не производится ошибки.

Подробнее здесь: https://stackoverflow.com/questions/797 ... s-to-start
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»