refactor(glass): 优化GlassMediaServiceHelper中的媒体服务调用
- 将mediaService类型从Any改为IMediaServer接口类型 - 移除反射调用方式,直接使用接口方法调用 - 简化takePhoto、addPhotoCallback等方法的实现 - 直接访问maxZoomLevel和zoomLevel属性替代反射获取 - 提高代码可读性和类型安全性 - 减少运行时反射调用的性能开销
这个提交包含在:
父节点
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)
|
||||
}
|
||||
}
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户