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