All Products
Search
Document Center

ApsaraVideo Live:Pengujian perangkat sebelum panggilan

Last Updated:Mar 26, 2026

Topik ini menjelaskan cara menguji perangkat Anda sebelum melakukan panggilan.

Ikhtisar

SDK Alibaba Real-Time Communication (ARTC) menyediakan fitur pendeteksian perangkat sebelum panggilan yang memungkinkan Anda menguji perangkat audio dan video lokal, termasuk microphone, speaker, dan Kamera. Melakukan pengujian perangkat keras terlebih dahulu membantu mencegah kegagalan perangkat yang tidak terduga serta memastikan pengalaman komunikasi yang lancar.

Kode contoh

Android: Android/ARTCExample/AdvancedUsage/src/main/java/com/aliyun/artc/api/advancedusage/PreJoinChannelTest/PreJoinChannelTestActivity.java.

iOS: iOS/ARTCExample/AdvancedUsage/PreJoinChannelTest/PreJoinChannelTestVC.swift.

Harmony: Harmony/ARTCExample/entry/src/main/ets/pages/advancedusage/PreJoinChannelTestPage.ets.

Implementasi

1. Pengujian microphone

Mulai microphone. Jika tidak ada exception yang dilaporkan dan volume audio yang ditangkap normal, maka microphone berfungsi dengan baik.

1. Mulai pengujian microphone

Panggil metode startAudioCaptureTest untuk mulai menangkap audio dari microphone.

Android
/**
 * @brief Memulai pengujian perangkat tangkapan audio sebelum panggilan.
 * @details Metode ini memulai pengujian tangkapan audio.
 * - Gunakan callback {@link AliRtcAudioVolumeObserver::onTestAudioVolumeCallback} untuk memeriksa apakah tangkapan audio berfungsi dengan baik.
 * @return 
 * - 0: Sukses.
 * - Nilai bukan nol: Kode kesalahan.
 * @note Metode ini harus dipanggil sebelum bergabung ke channel dengan {@link joinChannel}.
 */
public abstract int startAudioCaptureTest();
iOS
/**
 * @brief Memulai pengujian perangkat tangkapan audio sebelum panggilan.
 * @details Metode ini memulai tangkapan audio.
 * - Gunakan callback {@link onTestAudioVolumeCallback} untuk memeriksa apakah tangkapan audio berfungsi dengan baik.
 * @note Metode ini harus dipanggil sebelum bergabung ke channel dengan {@link joinChannel}.
 */
- (void)startAudioCaptureTest;
Windows
/**
 * @brief Memulai pengujian tangkapan audio sebelum panggilan.
 * @details Metode ini memulai pengujian tangkapan audio.
 * - Gunakan callback {@link AliEngineEventListener::OnTestAudioVolumeCallback} untuk memeriksa apakah tangkapan audio berfungsi dengan baik.
 * @return
 * - 0: Sukses.
 * - Nilai bukan nol: Kode kesalahan.
 * @note Metode ini harus dipanggil sebelum bergabung ke channel dengan {@link JoinChannel}.
 */
virtual int StartAudioCaptureTest() = 0;

2. Periksa pengecualian mikrofon

Dengarkan callback berikut untuk mendeteksi exception perangkat. Jika tidak ada exception yang dilaporkan dan volume microphone normal, perangkat siap digunakan.

Android
/**
 * @brief Callback untuk exception perangkat lokal.
 * @param deviceType Jenis perangkat. Untuk informasi lebih lanjut, lihat {@link AliRtcEngine.AliRtcEngineLocalDeviceType}.
 * @param exceptionType Jenis exception. Untuk informasi lebih lanjut, lihat {@link AliRtcEngine.AliRtcEngineLocalDeviceExceptionType}.
 * @param msg Pesan exception.
 * @note Callback ini dipicu ketika terjadi exception perangkat internal yang tidak dapat dipulihkan. Saat callback ini dipicu, periksa apakah perangkat tersedia.
 */
public void OnLocalDeviceException(AliRtcEngine.AliRtcEngineLocalDeviceType deviceType, AliRtcEngine.AliRtcEngineLocalDeviceExceptionType exceptionType, String msg){}
iOS
/**
 * @brief Callback untuk exception perangkat lokal.
 * @param deviceType Jenis perangkat. Untuk informasi lebih lanjut, lihat {@link AliRtcLocalDeviceType}.
 * @param exceptionType Jenis exception. Untuk informasi lebih lanjut, lihat {@link AliRtcLocalDeviceExceptionType}.
 * @param msg Pesan exception.
 * @note Callback ini dipicu ketika terjadi exception perangkat internal yang tidak dapat dipulihkan. Saat callback ini dipicu, periksa apakah perangkat tersedia.
 */
- (void)onLocalDeviceException:(AliRtcLocalDeviceType)deviceType exceptionType:(AliRtcLocalDeviceExceptionType)exceptionType message:(NSString *_Nullable)msg;
Windows
/**
 * @brief Callback untuk exception perangkat lokal.
 * @param deviceType Jenis perangkat. Untuk informasi lebih lanjut, lihat {@link AliEngineLocalDeviceType}.
 * @param exceptionType Jenis exception. Untuk informasi lebih lanjut, lihat {@link AliEngineLocalDeviceExceptionType}.
 * @param msg Pesan exception.
 * @note Callback ini dipicu ketika terjadi exception perangkat internal yang tidak dapat dipulihkan. Saat callback ini dipicu, periksa apakah perangkat tersedia.
 */
virtual void OnLocalDeviceException(AliEngineLocalDeviceType deviceType, AliEngineLocalDeviceExceptionType exceptionType, const char* msg){};

3. Periksa volume microphone

Dengarkan callback berikut untuk mendapatkan volume audio yang ditangkap. Jika data volumenya normal, microphone berfungsi dengan baik dan dapat digunakan dalam panggilan.

Android
/**
 * @brief Callback untuk volume audio selama pengujian sebelum panggilan.
 * @param volume Volume audio.
 */
public void OnTestAudioVolume(int volume) {}
iOS
/**
 * @brief Callback untuk volume audio yang ditangkap selama pengujian sebelum panggilan.
 * @param volume Volume audio.
 */
- (void)onTestAudioVolumeCallback:(int)volume;
Windows
/**
 * @brief Callback untuk volume audio yang ditangkap selama pengujian sebelum panggilan.
 * @param volume Volume audio.
 */
virtual void OnTestAudioVolumeCallback(int volume) {}

4. Hentikan pengujian microphone

Setelah memastikan microphone berfungsi dengan baik, panggil stopAudioCaptureTest untuk menghentikan pengujian.

Android
/**
 * @brief Menghentikan pengujian tangkapan audio.
 * @return 
 * - 0: Sukses.
 * - Nilai bukan nol: Kode kesalahan.
 * @note Metode ini harus dipanggil sebelum bergabung ke channel dengan {@link joinChannel}.
 */
public abstract int stopAudioCaptureTest();
iOS
/**
 * @brief Menghentikan pengujian tangkapan audio.
 * @note Metode ini harus dipanggil sebelum bergabung ke channel dengan {@link joinChannel}.
 */
- (void)stopAudioCaptureTest;
Windows
/**
 * @brief Menghentikan pengujian tangkapan audio.
 * @return
 * - 0: Sukses.
 * - Nilai bukan nol: Kode kesalahan.
 * @note Metode ini harus dipanggil sebelum bergabung ke channel dengan {@link JoinChannel}.
 */
virtual int StopAudioCaptureTest() = 0;

2. Pengujian speaker

Putar file audio. Jika Anda dapat mendengar suaranya, speaker berfungsi dengan baik.

1. Mainkan file audio

Panggil metode playAudioFileTest untuk memutar file audio uji. Jika Anda dapat mendengar suaranya, speaker berfungsi dengan baik.

Android
/**
 * @brief Memainkan file audio untuk pengujian.
 * @param filePath Path ke file audio.
 * @return Mengembalikan 0 jika sukses, atau nilai negatif jika gagal.
 * @note Metode ini harus dipanggil sebelum bergabung ke channel dengan {@link joinChannel}.
 */
public abstract int playAudioFileTest(String filePath) ;
iOS
/**
 * @brief Memainkan file audio untuk pengujian.
 * @param filePath Path ke file audio.
 * @return Mengembalikan 0 jika sukses, atau nilai negatif jika gagal.
 * @note Metode ini harus dipanggil sebelum bergabung ke channel dengan {@link joinChannel}.
 */
- (int)playAudioFileTest:(NSString *_Nonnull)filePath;
Windows
/**
 * @brief Memainkan file audio untuk pengujian.
 * @param filePath Path ke file audio.
 * @return Mengembalikan 0 jika sukses, atau nilai negatif jika gagal.
 * @note Metode ini harus dipanggil sebelum bergabung ke channel dengan {@link JoinChannel}.
 */
virtual int PlayAudioFileTest(const char* filePath) = 0;

2. Periksa exception speaker

Dengarkan callback berikut untuk mendeteksi exception perangkat. Jika tidak ada exception yang dilaporkan dan Anda dapat mendengar suaranya, speaker berfungsi dengan baik.

Android
/**
 * @brief Callback untuk exception perangkat lokal.
 * @param deviceType Jenis perangkat. Untuk informasi lebih lanjut, lihat {@link AliRtcEngine.AliRtcEngineLocalDeviceType}.
 * @param exceptionType Jenis exception. Untuk informasi lebih lanjut, lihat {@link AliRtcEngine.AliRtcEngineLocalDeviceExceptionType}.
 * @param msg Pesan exception.
 * @note Callback ini dipicu ketika terjadi exception perangkat internal yang tidak dapat dipulihkan. Saat callback ini dipicu, periksa apakah perangkat tersedia.
 */
public void OnLocalDeviceException(AliRtcEngine.AliRtcEngineLocalDeviceType deviceType, AliRtcEngine.AliRtcEngineLocalDeviceExceptionType exceptionType, String msg){}
iOS
/**
 * @brief Callback untuk exception perangkat lokal.
 * @param deviceType Jenis perangkat. Untuk informasi lebih lanjut, lihat {@link AliRtcLocalDeviceType}.
 * @param exceptionType Jenis exception. Untuk informasi lebih lanjut, lihat {@link AliRtcLocalDeviceExceptionType}.
 * @param msg Pesan exception.
 * @note Callback ini dipicu ketika terjadi exception perangkat internal yang tidak dapat dipulihkan. Saat callback ini dipicu, periksa apakah perangkat tersedia.
 */
- (void)onLocalDeviceException:(AliRtcLocalDeviceType)deviceType exceptionType:(AliRtcLocalDeviceExceptionType)exceptionType message:(NSString *_Nullable)msg;
Windows
/**
 * @brief Callback untuk exception perangkat lokal.
 * @param deviceType Jenis perangkat. Untuk informasi lebih lanjut, lihat {@link AliEngineLocalDeviceType}.
 * @param exceptionType Jenis exception. Untuk informasi lebih lanjut, lihat {@link AliEngineLocalDeviceExceptionType}.
 * @param msg Pesan exception.
 * @note Callback ini dipicu ketika terjadi exception perangkat internal yang tidak dapat dipulihkan. Saat callback ini dipicu, periksa apakah perangkat tersedia.
 */
virtual void OnLocalDeviceException(AliEngineLocalDeviceType deviceType, AliEngineLocalDeviceExceptionType exceptionType, const char* msg){};

3. Hentikan pemutaran file audio

Setelah memastikan speaker berfungsi dengan baik, panggil stopAudioFileTest untuk menghentikan pemutaran.

Android
/**
 * @brief Menghentikan pemutaran file audio uji.
 * @return Mengembalikan 0 jika sukses, atau nilai negatif jika gagal.
 * @note Metode ini harus dipanggil sebelum bergabung ke channel dengan {@link joinChannel}.
 */
public abstract int stopAudioFileTest();
iOS
/**
 * @brief Menghentikan pemutaran file audio uji.
 * @return Mengembalikan 0 jika sukses, atau nilai negatif jika gagal.
 * @note Metode ini harus dipanggil sebelum bergabung ke channel dengan {@link joinChannel}.
 */
- (int)stopAudioFileTest;
Windows
/**
 * @brief Menghentikan pemutaran file audio uji.
 * @return Mengembalikan 0 jika sukses, atau nilai negatif jika gagal.
 * @note Metode ini harus dipanggil sebelum bergabung ke channel dengan {@link JoinChannel}.
 */
virtual int StopAudioFileTest() = 0;

3. Pengujian Kamera

Siapkan tampilan pratinjau lokal dan mulai Kamera. Jika pratinjau ditampilkan dengan benar dan tidak ada callback exception yang dipicu, berarti Kamera berfungsi dengan baik.

1. Siapkan pratinjau lokal

Sebelum memulai pratinjau Kamera, panggil setLocalViewConfig untuk mengonfigurasi tampilan.

Android
/**
 * @brief Mengonfigurasi tampilan untuk pratinjau lokal.
 * @param viewConfig Properti tampilan untuk video lokal. Untuk informasi lebih lanjut, lihat {@link com.alivc.rtc.AliRtcEngine.AliRtcVideoCanvas}.
 * @param track  Hanya {@link AliRtcVideoTrack#AliRtcVideoTrackCamera} dan {@link AliRtcVideoTrack#AliRtcVideoTrackScreen} yang didukung.
 * @return
 * - 0: Sukses.
 * - < 0: Gagal.
 * @note Anda dapat mengganti tampilan sebelum atau setelah bergabung ke channel. Jika canvas atau {@link AliRtcVideoCanvas#view} bernilai null, rendering dihentikan.
 *       Untuk mengubah {@link AliRtcVideoCanvas#renderMode} atau {@link AliRtcVideoCanvas#mirrorMode}, panggil metode ini lagi dengan nilai baru
 *       sambil mempertahankan semua properti canvas lainnya tetap sama.
 */
public abstract int setLocalViewConfig(AliRtcVideoCanvas viewConfig, AliRtcVideoTrack track);
iOS
/**
 * @brief Mengonfigurasi tampilan untuk pratinjau lokal.
 * @param viewConfig Properti tampilan untuk video lokal. Untuk informasi lebih lanjut, lihat {@link AliVideoCanvas}.
 * @param track  Hanya {@link AliRtcVideoTrackCamera} dan {@link AliRtcVideoTrackScreen} yang didukung.
 * @return
 * - 0: Sukses.
 * - < 0: Gagal.
 * @note Anda dapat mengganti tampilan sebelum atau setelah bergabung ke channel. Jika canvas atau {@link AliVideoCanvas::view} bernilai nil, rendering dihentikan.
 *       Untuk mengubah {@link AliVideoCanvas::renderMode} atau {@link AliVideoCanvas::mirrorMode}, panggil metode ini lagi dengan nilai baru
 *       sambil mempertahankan semua properti canvas lainnya tetap sama.
 */
- (int)setLocalViewConfig:(AliVideoCanvas *_Nullable)viewConfig forTrack:(AliRtcVideoTrack)track;
Windows
/**
 * @brief Mengonfigurasi tampilan untuk pratinjau lokal.
 * @param renderConfig Properti tampilan untuk video lokal. Untuk informasi lebih lanjut, lihat {@link AliEngineVideoCanvas}.
 * @param track  Hanya {@link AliEngineVideoTrackCamera} dan {@link AliEngineVideoTrackScreen} yang didukung.
 * @return
 * - 0: Sukses.
 * - Nilai bukan nol: Gagal.
 * @note Anda dapat mengganti tampilan sebelum atau setelah bergabung ke channel. Jika {@link AliEngineVideoCanvas::displayView} bernilai null, rendering dihentikan.
 *       Untuk mengubah {@link AliEngineVideoCanvas::renderMode} atau {@link AliEngineVideoCanvas::mirrorMode}, panggil metode ini lagi dengan nilai baru
 *       sambil mempertahankan semua properti renderConfig lainnya tetap sama.
 */
virtual int SetLocalViewConfig(AliEngineVideoCanvas renderConfig,
AliEngineVideoTrack track) = 0;

2. Mulai pratinjau Kamera

Panggil metode startPreview untuk memulai pratinjau Kamera.

Android
/**
 * @brief Memulai pratinjau video lokal.
 * @details Metode ini memulai pratinjau video lokal dan secara otomatis mengaktifkan Kamera.
 * @return
 * - 0: Sukses.
 * - < 0: Gagal.
 * @note Pratinjau tidak ditampilkan jika tampilan belum dikonfigurasi dengan {@link #setLocalViewConfig}, tetapi hal ini tidak memengaruhi pengambilan aliran.
 * Anda dapat memanggil metode ini sebelum {@link #joinChannel} untuk memulai pratinjau, yang secara otomatis mengaktifkan Kamera.
 */
public abstract int startPreview();
iOS
/**
 * @brief Memulai pratinjau video lokal.
 * @return
 * - 0: Sukses.
 * - <0: Gagal.
 * @note Pratinjau tidak ditampilkan jika tampilan belum dikonfigurasi menggunakan {@link setLocalViewConfig:forTrack:}.
 * Anda dapat memanggil metode ini sebelum {@link joinChannel:name:onResultWithUserId:} untuk memulai pratinjau, yang secara otomatis mengaktifkan Kamera.
 */
- (int)startPreview;
Windows
/**
 * @brief Memulai pratinjau video lokal.
 * @return
 * - 0: Sukses.
 * - Nilai bukan nol: Gagal.
 * @note Pratinjau tidak ditampilkan jika tampilan belum dikonfigurasi menggunakan {@link SetLocalViewConfig}.
 *       Anda dapat memanggil metode ini sebelum {@link JoinChannel} untuk memulai pratinjau, yang secara otomatis mengaktifkan Kamera.
 */
virtual int StartPreview(int width = 0, int height = 0) = 0;

3. Periksa pengecualian Kamera

Dengarkan callback berikut untuk mendeteksi exception perangkat. Jika tidak ada exception yang dilaporkan dan pratinjau ditampilkan dengan benar, berarti Kamera berfungsi dengan baik.

Android
/**
 * @brief Callback untuk exception perangkat lokal.
 * @param deviceType Jenis perangkat. Untuk informasi lebih lanjut, lihat {@link AliRtcEngine.AliRtcEngineLocalDeviceType}.
 * @param exceptionType Jenis exception. Untuk informasi lebih lanjut, lihat {@link AliRtcEngine.AliRtcEngineLocalDeviceExceptionType}.
 * @param msg Pesan exception.
 * @note Callback ini dipicu ketika terjadi exception perangkat internal yang tidak dapat dipulihkan. Saat callback ini dipicu, periksa apakah perangkat tersedia.
 */
public void OnLocalDeviceException(AliRtcEngine.AliRtcEngineLocalDeviceType deviceType, AliRtcEngine.AliRtcEngineLocalDeviceExceptionType exceptionType, String msg){}
iOS
/**
 * @brief Callback untuk exception perangkat lokal.
 * @param deviceType Jenis perangkat. Untuk informasi lebih lanjut, lihat {@link AliRtcLocalDeviceType}.
 * @param exceptionType Jenis exception. Untuk informasi lebih lanjut, lihat {@link AliRtcLocalDeviceExceptionType}.
 * @param msg Pesan exception.
 * @note Callback ini dipicu ketika terjadi exception perangkat internal yang tidak dapat dipulihkan. Saat callback ini dipicu, periksa apakah perangkat tersedia.
 */
- (void)onLocalDeviceException:(AliRtcLocalDeviceType)deviceType exceptionType:(AliRtcLocalDeviceExceptionType)exceptionType message:(NSString *_Nullable)msg;
Windows
/**
 * @brief Callback untuk exception perangkat lokal.
 * @param deviceType Jenis perangkat. Untuk informasi lebih lanjut, lihat {@link AliEngineLocalDeviceType}.
 * @param exceptionType Jenis exception. Untuk informasi lebih lanjut, lihat {@link AliEngineLocalDeviceExceptionType}.
 * @param msg Pesan exception.
 * @note Callback ini dipicu ketika terjadi exception perangkat internal yang tidak dapat dipulihkan. Saat callback ini dipicu, periksa apakah perangkat tersedia.
 */
virtual void OnLocalDeviceException(AliEngineLocalDeviceType deviceType, AliEngineLocalDeviceExceptionType exceptionType, const char* msg){};