كائنات الصوت

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 بناءً على ذلك، مما يصف مسار الملف الذي تم إنشاؤه بالفعل. في بعض الحالات، ستكون هاتين الخاصيتين متشابهتين، ولكن توجد استثناءات.