相機
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,
};