ArcGIS AppStudio fornisce un componente di registrazione di alto livello per la gestione di audio, che include funzioni di controllo e monitoraggio delle registrazione. Può essere utilizzato per creare potenti strumenti di raccolta di dati dalle qualità e dimensioni configurabili in base alle necessità della propria app.
Controlli del registratore
Il componente AudioRecorder fornisce funzioni di controllo del processo di registrazione audio. I metodi di registrazione, pausa e interruzione forniscono degli strumenti di base che possono essere integrati da altri metodi.
Questo esempio di codice fornisce un pannello di controllo generale per gestire il processo di registrazione 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();
}
}
}
Proprietà di registrazione
Mentre i metodi AudioRecorder forniscono gli strumenti per registrare audio, il componente fornisce una serie di proprietà che danno informazioni al processo per consentire un'esperienza più dettagliata configurabile in base alle proprie esigenze. I seguenti esempi di codici forniscono alcuni mezzi per controllare proprietà potenzialmente utili.
La proprietà input descrive il dispositivo che acquisirà l'audio. Tale dispositivo sarà quello predefinito nel sistema, ma potrà essere cambiato a qualunque dispositivo di ingresso disponibile.
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 proprietà containerFormat descrive il tipo di file in cui il componente AudioRecorder effettuerà l'emissione.
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;
}
}
}
Da non confondersi con la proprietà containerFormat; la proprietà codec definisce il metodo con cui la registrazione audio sarà codificata ed elaborata. Normalmente, il formato grande o compresso di un file viene determinato dal codec, non dal tipo di file. È possibile maneggiare la proprietà codec alla stessa stregua della già menzionata proprietà containerFormat.
Il volume di registrazione dell'audio è controllato dalla proprietà volume sotto forma di numero intero. Il volume normale di registrazione del dispositivo è definito come 1; quindi, ad esempio, con 0,5 si registra con il volume a metà. Questo esempio di codice controlla questa proprietà con un cursore da 0 a 1, con un incremento ad ogni decimo.
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 proprietà outputLocation, impostata attraverso la finestra di dialogo del file nell'esempio di codice del pannello di controllo in cima a questa pagina, definisce la destinazione prevista per il salvataggio del file. Una volta avviata la registrazione, la proprietà actualLocation è impostata in base a questo e descrive il percorso del file effettivamente realizzato. Nella maggior parte dei casi, queste due proprietà saranno identiche, ma esistono eccezioni.