ArcGIS AppStudio يوفر مكون تسجيل عالي المستوى لمعالجة الصوت، بما في ذلك وظائف التحكم في التسجيل ومراقبته. ويمكن استخدامه لإنشاء أدوات فعالة لتجميع البيانات في الكفاءات والأحجام التي يمكن تكوينها لاحتياجات التطبيق.
عناصر التحكم في المُسجِّل
يوفر مكون AudioRecorder وظائف للتحكم في عملية تسجيل الصوت. توفر طرق التسجيل والإيقاف المؤقت والإيقاف أدوات بمستوى أساسي يمكن توفيرها بطرق أخرى لاحقًا.
توفر عينة المود لوحة تحكم عامة لإدارة عملية تسجيل الصوت:
//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();
}
}
}
خصائص التسجيل
في حين أن طرق AudioRecorder توفر الأدوات لتسجيل الصوت، إلا أن المكون يوفر عددًا من الخصائص التي تدرس العملية، وهو ما يسمح لتجربة مدروسة بشكل أكبر يمكنك تكوينها احتياجاتك. توفر عينات الكود التالية بعض طرق التحكم في الخصائص التي يُحتَمَل أن تكون مفيدة وعملية.
تصف خاصية input الجهاز الذي سيسجل الصوت. وسيبدأ ذلك على أنه النظام الافتراضي، إلا أنه يمكن تغييره إلى أي جهاز مدخل مُتاح.
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;
}
}
}
تصف خاصية containerFormat نوع الملف الذي سيقوم مكون AudioRecorder بالإخراج فيه.
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;
}
}
}
لتجنُّب الحيرة بشأن خاصية containerFormat فإن خاصية codec تُعرّف طريقة تكويد تسجيل الصوت ومعالجته بها. عادةً ما يتحكم برنامج الترميز، بدلاً من filetype، في حجم أو ضغط الملف. يمكن معالجة خاصية codec بنفس طريقة معالجة خاصية containerFormat أعلاه.
يتم التحكم في حجم تسجيل الصوت من خلال خاصية volume في شكل عدد صحيح. يتم تحديد مستوى الصوت المعتاد للتسجيل في جهازك على أنه 1، لذا، على سبيل المثال، سيسجل 0.5 عند نصف المستوى. تتحكم عينة الكود في هذه الخاصية بشريط تمرير من 0 إلى 1 يتزايد كل عاشر.
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;
}
}
}
تحدد خاصية outputLocation التي تم تعيينها خلال مربع حوار الملف في عينة كود لوحة التحكم أعلى الصفحة الموقع المستهدف لحفظ الملف. بمجرد بدء التسجيل، يتم تعيين خاصية actualLocation بناءً على ذلك، مما يصف مسار الملف الذي تم إنشاؤه بالفعل. في بعض الحالات، ستكون هاتين الخاصيتين متشابهتين، ولكن توجد استثناءات.