ArcGIS AppStudio fournit un composant d'enregistrement de haut niveau pour gérer l'audio, y compris des fonctions permettant de contrôler et surveiller l'enregistrement. Ceci permet de créer de puissants outils pour collecter des données dont la qualité et la taille peuvent être configurées selon les besoins de votre application.
Contrôles de l'enregistreur
Le composant AudioRecorder fournit des fonctions permettant de contrôler le processus d'enregistrement audio. Les méthodes d'enregistrement, de mise en pause et d'arrêt fournissent des outils de base pouvant être enrichis par d'autres méthodes.
L'exemple de code suivant fournit un panneau de configuration général permettant de gérer le processus d'enregistrement audio :
//Creates both audio recorder and audio playback objects
AudioRecorder {
id: audioRecorder
onStatusChanged: {
console.log("audioRecorder status:", status);
}
onErrorChanged: {
console.log("audioRecorder error:", error, "errorString:", errorString);
}
}
Audio {
id: audio
onStatusChanged: {
console.log("audio status:", status);
}
onError: {
console.log("audio error:", error, "errorString:", errorString);
}
}
Flow {
//Button to start recording, disabled if recording is unavailable or already underway
Button {
text: "Record"
enabled: audioRecorder.available
onClicked: audioRecorder.record();
}
//Stops recording currently underway or paused, disabled if neither is true
Button {
text: "Stop"
enabled: audioRecorder.state == AudioRecorder.RecordingState || audioRecorder.state == AudioRecorder.PausedState
onClicked: audioRecorder.stop();
}
//Opens file dialog to select where to create the audio file
Button {
text: "Location"
enabled: audioRecorder.state == AudioRecorder.StoppedState
onClicked: outputDialog.open();
}
FileDialog {
id: outputDialog
title: "Output Location"
selectExisting: false
selectMultiple: false
nameFilters: [ "All files (*)" ]
folder: AppFramework.standardPaths.standardLocations(StandardPaths.MusicLocation)[0]
onAccepted: {
audioRecorder.outputLocation = fileUrl;
}
}
//Plays back recorded audio file
Button {
text: "Play"
enabled: audioRecorder.state == AudioRecorder.StoppedState && audioRecorder.actualLocation > "" && audioRecorder.duration > 0
onClicked: {
audio.source = audioRecorder.actualLocation;
audio.play();
}
}
}
Propriétés d'enregistrement
Les méthodes AudioRecorder fournissent les outils permettant d'enregistrer l'audio, tandis que le composant fournit des propriétés qui informent le processus, ce qui vous permet de configurer une expérience offrant plus d'informations selon vos besoins. Les exemples de code suivants fournissent des moyens de contrôler des propriétés potentiellement utiles.
La propriété input décrit le périphérique allant capturer l'audio. Ce périphérique démarre par défaut mais peut être remplacé par n'importe quel périphérique d'entrée disponible.
RowLayout {
Layout.fillWidth: true
Text {
text: "Default input"
color: "black"
}
Text {
text: audioRecorder.defaultInput
color: "blue"
font.bold: true
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
}
}
RowLayout {
Layout.fillWidth: true
Text {
text: "Input device"
color: "black"
}
Text {
text: audioRecorder.input
color: "blue"
font.bold: true
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
}
ComboBox {
model: audioRecorder.availableInputs
textRole: "description"
Layout.fillWidth: true
onActivated: {
audioRecorder.input = model[index].name;
}
}
}
La propriété containerFormat décrit le type de fichier vers lequel le composant AudioRecorder génère les données résultantes.
RowLayout {
Layout.fillWidth: true
Text {
text: "Container format"
color: "black"
}
Text {
text: audioRecorder.containerFormat
color: "blue"
font.bold: true
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
}
ComboBox {
model: audioRecorder.availableContainerFormats
textRole: "description"
Layout.fillWidth: true
onActivated: {
audioRecorder.containerFormat = model[index].name;
}
}
}
A ne pas confondre avec la propriété containerFormat, la propriété codec définit la méthode dans laquelle l'enregistrement audio sera codé et traité. Le codec, plutôt que le type de fichier, détermine généralement la taille ou le degré de compression d'un fichier. La propriété codec peut être manipulée de la même manière que la propriété containerFormat ci-dessus.
Le volume auquel l'audio sera enregistré est déterminé par la propriété volume sous la forme d'un nombre entier. Le volume auquel votre périphérique devrait normalement enregistrer est défini comme égal à 1. Ainsi, par exemple, 0,5 enregistrera à la moitié du volume. Cet exemple de code contrôle cette propriété à l'aide d'un curseur allant de 0 à 1, avec des paliers d'incrémentation à chaque dixième.
RowLayout {
Layout.fillWidth: true
Text {
text: "Volume"
color: "black"
}
Text {
text: audioRecorder.volume
color: "blue"
font.bold: true
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
}
Slider {
Layout.fillWidth: true
minimumValue: 0
maximumValue: 1
stepSize: 0.1
value: audioRecorder.volume
onValueChanged: {
audioRecorder.volume = value;
}
}
}
La propriété outputLocation, définie via la boîte de dialogue de fichier dans l'exemple de code de panneau de configuration situé en haut de cette page, détermine l'emplacement voulu auquel enregistrer le fichier. Une fois l'enregistrement commencé, la propriété actualLocation est définie en fonction de ceci, et indique le chemin d'accès du fichier ayant été effectivement créé. Dans la plupart des cas, ces deux propriétés sont les mêmes, mais il existe des exceptions.
Vous avez un commentaire à formuler concernant cette rubrique ?