相機
ArctosLinks.Media 提供了一套 API 來管理和控制相機鏡頭的各種操作。 這些功能包括啟用和關閉鏡頭、切換前後鏡頭、設定解析度、啟用和關閉鏡頭自動旋轉等。
設定解析度
功能:設定相機的解析度。
參數:
- resolution: 欲設定的解析度,類型為Resolution。
返回值:設定後的解析度,如果設備無法使用欲設定的解析度,將會使用最接近的解析度,並顯示警告。若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
    
func setCameraResolution(to resolution: ArctosLinks.Media.Resolution = .FHD) {
    ArctosLinks.Media.setCameraResolution(to: resolution) { result in
        switch result {
        case .success(let resolution, let warning):
            dump(resolution, name: "CameraResolution")
            if let warning { 
                print(warning)
            }
        case .failure(let error):
            print(error.localizedDescription)
        }
    }
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun setCameraResolution(cameraResolution: CameraResolution) {
    lifecycleScope.launch {
        runCatching {
            ArctosLinks.getInstance(Context).mediaManager.setCameraResolution(
                cameraResolution
            ).getOrThrow()
        }.onSuccess {
            Log.d(TAG, "set camera resolution : $it")                
        }.onFailure {
            Log.d(TAG, "set camera resolution: Failed ${it.message}")
        }
    }
}
c++
#include arctos_qt.h
void setCameraResolution(arctos::Resolution resolution) {
    auto& arctos_app = arctos::ArctosQt::getInstance();
    const auto result = arctos_app.media()->setCameraResolution(resolution);
    if (!result) {
        LOG(ERROR) << result.error();
    }
}
獲取解析度
功能:獲取當前相機解析度。
返回值:當前解析度。若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
    
func getCameraResolution() {
    ArctosLinks.Media.getCameraResolution { result in
        switch result {
        case .success(let resolution):
            dump(resolution)
        case .failure(let error):
            print(error.localizedDescription)
        }
    }
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun getCameraResolution() {
    runCatching {
        ArctosLinks.getInstance(Context).mediaManager.getCameraResolution()
            .getOrThrow()
    }.onSuccess {
        Log.d(TAG, "getCameraResolution: $it")
    }.onFailure {
        Log.d(TAG, "getCameraResolution: Failed ${it.message}")
    }
}
c++
#include "arctos_qt.h"
arctos::Resolution getCameraResolution() {
    auto& arctos_app = arctos::ArctosQt::getInstance();
    const auto result = arctos_app.media()->cameraResolution();
    if (!result) {
        LOG(ERROR) << result.error();
    }
    return *result;
}
啟用相機
功能:啟用相機,顯示在畫面上。
返回值:如果成功啟用則完成,若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
import AVFoundation
func enableCamera() {
    guard AVCaptureDevice.authorizationStatus(for: .video) == .authorized else { return }
    do {
        try ArctosLinks.Media.enableCamera { result in
            switch result {
            case .success():
                print("Successfully enabled the camera.")
            case .failure(let error):
                print("Failed to enable the camera: \(error.localizedDescription).")
            }
        }
    } catch {
        print(error.localizedDescription)
    }
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun enableCamera() {
    runCatching {
        ArctosLinks.getInstance(Context).mediaManager.enableCamera().getOrThrow()
    }.onFailure {
        Log.d(TAG, "enableCamera: Failed ${it.message}")
    }
}
c++
#include "arctos_qt.h"
void enableCamera() {
    auto& arctos_app = arctos::ArctosQt::getInstance();
    const auto result = arctos_app.media()->enableCamera();
    if (!result) {
        LOG(ERROR) << result.error();
    }
}
停用相機
功能:停用相機,畫面顯示黑色。
返回值:如果成功停用則完成,若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
    
func disableCamera() {
    ArctosLinks.Media.disableCamera()
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun disableCamera() {
    runCatching {
        ArctosLinks.getInstance(Context).mediaManager.disableCamera().getOrThrow()
    }.onFailure {
        Log.d(TAG, "disableCamera: Failed ${it.message}")
    }
}
c++
#include "arctos_qt.h"
void disableCamera() {
    auto& arctos_app = arctos::ArctosQt::getInstance();
    const auto result = arctos_app.media()->disableCamera();
    if (!result) {
        LOG(ERROR) << result.error();
    }
}
切換前後鏡頭
功能:在前後鏡頭之間進行切換。
返回值:如果成功切換則完成,若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
    
func switchLens() {
    do {
        try ArctosLinks.Media.switchLens()
    } catch {
        print(error.localizedDescription)
    }
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun switchLens() {
    runCatching {
        ArctosLinks.getInstance(Context).mediaManager.switchLens().getOrThrow()
    }.onFailure {
        Log.d(TAG, "switchLens: Failed ${it.message}")
    }
}
鎖定相機鏡頭自動旋轉
功能:鎖定相機鏡頭自動旋轉功能,當鎖定後相機不會依裝置擺放橫向或直向而改變鏡頭輸出方向。
返回值:
Swift
import ArctosLinks
    
private func lockCameraAutoRotate() {
    ArctosLinks.Media.lockCameraAutoRotate { result in
        switch result {
        case .success():
            break
        case .failure(let error):
            print(error.localizedDescription)
        }
    }
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun lockCameraAutoRotate() {
    runCatching {
        ArctosLinks.getInstance(Context).mediaManager.lockCameraAutoRotate()
            .getOrThrow()
    }.onFailure {
        Log.d(TAG, "lockCameraAutoRotate: Failed ${it.message}")
    }
}
解除鎖定相機鏡頭自動旋轉
功能:停用鎖定相機鏡頭自動旋轉功能。
返回值:
Swift
import ArctosLinks
    
private func unlockCameraAutoRotate() {
    ArctosLinks.Media.unlockCameraAutoRotate { result in
        switch result {
        case .success():
            break
        case .failure(let error):
            print(error.localizedDescription)
        }
    }
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun unlockCameraAutoRotate() {
    runCatching {
        ArctosLinks.getInstance(Context).mediaManager.unlockCameraAutoRotate()
            .getOrThrow()
    }.onFailure {
        Log.d(TAG, "unlockCameraAutoRotate: Failed ${it.message}")
    }
}
啟用相機鏡頭變焦
功能:設定相機鏡頭拉近至2倍率。
返回值:如果成功設定則完成,若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
    
private func enableCameraZoomIn() {
    ArctosLinks.Media.enableCameraZoomIn { result in
        switch result {
        case .success():
            break
        case .failure(let error):
            displayNotification(title: "🚨 Process ERROR", body: error.localizedDescription)
        }
    }
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun enableCameraZoomIn() {
    runCatching {
        ArctosLinks.getInstance(Context).mediaManager.enableCameraZoomIn()
            .getOrThrow()
    }.onFailure {
        Log.d(TAG, "enableCameraZoomIn: Failed ${it.message}")
    }
}
停用相機鏡頭變焦
功能:重置相機鏡頭至原倍率。
返回值:如果成功重置則完成,若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
    
private func disableCameraZoomIn() {
    ArctosLinks.Media.disableCameraZoomIn { result in
        switch result {
        case .success():
            break
        case .failure(let error):
            displayNotification(title: "🚨 Process ERROR", body: error.localizedDescription)
        }
    }
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun disableCameraZoomIn() {
    runCatching {
        ArctosLinks.getInstance(Context).mediaManager.disableCameraZoomIn()
            .getOrThrow()
    }.onFailure {
        Log.d(TAG, "disableCameraZoomIn: Failed ${it.message}")
    }
}
類型
枚舉類別
解析度 (Resolution)
功能:用於列舉變更解析度時,可以選擇的解析度。
成員:
- FHD: 1080p,1920*1080。
- HD: 720p ,1280*720。
- VGA: 480p ,640*480。
Swift
/// The camera resolution
public enum Resolution : String, CaseIterable {
    case FHD
    case HD
    case VGA
}
Kotlin
enum class CameraResolution() {
    RESOLUTION_FULL_HD,
    RESOLUTION_HD,
    RESOLUTION_VGA
}
c++
enum class Resolution {
    kFHD,
    kHD,
    kVGA,
};
