我正在尝试使用LiveCard在Google Glass上进行相机录制和绘图。
在常规活动中,这可以通过使用FrameLayout,使用SurfaceView进行相机预览(在后面),以及另一个用于绘图的视图来实现。
但是使用LiveCard,如果需要亚秒级更新,则必须使用LiveCard本身作为Surface。根据文件:https://developers.google.com/glass/develop/gdk/reference/com/google/android/glass/timeline/LiveCard
如果您的应用程序需要更频繁的更新(每次更新几次) 第二)或渲染比标准小部件更精细的图形 支持,启用直接渲染并添加SurfaceHolder.Callback 卡的表面。
LiveCard liveCard; // initialized elsewhere liveCard.setDirectRenderingEnabled(true); liveCard.getSurfaceHolder().addCallback(callback); You can then draw directly on the surface inside a background thread or in response
到外部事件(例如,传感器或位置更新)。使用 surfaceCreated和surfaceDestroyed方法来启动和停止你的 在显示或隐藏卡片时呈现逻辑。
现在我可以在这个Surface上绘制我的东西,或者我可以将它作为相机预览服务提供给MediaRecorder,但不能同时执行这两项操作,因为它会因错误而失败
我想知道是否有人对如何使这项工作有想法?
我自己绘制LiveCard的方式是“手动”锁定画布,并调用FrameLayout.draw(画布);一个选项是使布局包含两个SurfaceViews - 一个用于相机预览,一个用于我自己的绘图,并使用相同的方法。但是,即使我用XML定义这样的布局,我也无法创建SurfaceViews(例如,从不调用相应的SurfaceView回调,任何在它们上绘制的尝试都会导致失败)