refactor(glass): 优化GlassMediaServiceHelper中的媒体服务调用

- 将mediaService类型从Any改为IMediaServer接口类型
- 移除反射调用方式,直接使用接口方法调用
- 简化takePhoto、addPhotoCallback等方法的实现
- 直接访问maxZoomLevel和zoomLevel属性替代反射获取
- 提高代码可读性和类型安全性
- 减少运行时反射调用的性能开销
这个提交包含在:
徐勤民 2026-04-21 18:05:50 +08:00
父节点 a0aa806f9b
当前提交 e209f9f640

查看文件

@ -2,14 +2,15 @@ package com.nova.brain.glass.helper
import android.view.Surface
import com.rokid.security.glass3.open.sdk.GlassSdk
import com.rokid.security.system.server.media.IMediaServer
import com.rokid.security.system.server.media.callback.ICameraSurfaceCallback
import com.rokid.security.system.server.media.callback.PhotoFileCallback
object GlassMediaServiceHelper {
@Volatile
private var mediaService: Any? = null
private var mediaService: IMediaServer? = null
private fun service(): Any? {
private fun service(): IMediaServer? {
val cached = mediaService
if (cached != null) {
return cached
@ -20,51 +21,34 @@ object GlassMediaServiceHelper {
}
fun takePhoto(resolution: Int, path: String) {
val service = service() ?: return
service.javaClass.getMethod("takePhoto", Int::class.javaPrimitiveType, String::class.java)
.invoke(service, resolution, path)
service()?.takePhoto(resolution, path)
}
fun addPhotoCallback(callback: PhotoFileCallback) {
val service = service() ?: return
service.javaClass.getMethod("addPhotoCallback", PhotoFileCallback::class.java)
.invoke(service, callback)
service()?.addPhotoCallback(callback)
}
fun removePhotoCallback(callback: PhotoFileCallback) {
val service = service() ?: return
service.javaClass.getMethod("removePhotoCallback", PhotoFileCallback::class.java)
.invoke(service, callback)
service()?.removePhotoCallback(callback)
}
fun startCameraShare(surface: Surface, callback: ICameraSurfaceCallback) {
val service = service() ?: return
service.javaClass.getMethod(
"startCameraShare",
Surface::class.java,
ICameraSurfaceCallback::class.java
).invoke(service, surface, callback)
service()?.startCameraShare(surface, callback)
}
fun stopCameraShare(callback: ICameraSurfaceCallback) {
val service = service() ?: return
service.javaClass.getMethod("stopCameraShare", ICameraSurfaceCallback::class.java)
.invoke(service, callback)
service()?.stopCameraShare(callback)
}
fun getMaxZoomLevel(): Int {
val service = service() ?: return 0
return (service.javaClass.getMethod("getMaxZoomLevel").invoke(service) as? Int) ?: 0
return service()?.maxZoomLevel ?: 0
}
fun getZoomLevel(): Int {
val service = service() ?: return 0
return (service.javaClass.getMethod("getZoomLevel").invoke(service) as? Int) ?: 0
return service()?.zoomLevel ?: 0
}
fun zoomCamera(level: Int) {
val service = service() ?: return
service.javaClass.getMethod("zoomCamera", Int::class.javaPrimitiveType)
.invoke(service, level)
service()?.zoomCamera(level)
}
}