上下文我正在使用Androidfirebase-ml-vision使用SurfaceView和图片帧的连续ByteBuffer扫描条形码。我用了MLkitquickstartproject作为起点,效果很好。我的项目的目标是识别与条形码关联的产品并将其添加到扫描项目列表中。问题一旦相机聚焦,条码处理器就会多次检测到相同的条码,因此您将在一秒钟内扫描20个而不是1个条码。这是来自CamereSource.FrameProcessingRunnable.run的javadoc*Aslongastheprocessingthreadisactive,thisexecutesdetection
我用两种方式编写了同一个程序。一个使用Surfaceview,另一个使用自定义View。根据androidSDK开发指南,使用表面View更好,因为您可以生成一个单独的线程来处理图形。SDK开发指南声称使用带有无效调用的自定义View仅适用于较慢的动画、不太强烈的图形。但是,在我的简单应用中,我可以清楚地看到使用带有无效调用的自定义View似乎呈现得更快。你们对此有何了解/看法?我的touchEvent代码一模一样,我的绘图代码一模一样。唯一不同的是,一个是全在UI线程,一个是用tread来处理绘图。 最佳答案 SurfaceVie
我的布局可能有点不寻常。结构如下:我在XML底部的customRelativeLayout也有一个XML布局:我的CustomRelativeLayout:publicclassCustomRelativeLayoutextendsRelativeLayoutimplementsOverlayView{privateTextViewmNoteText;privateLinearLayoutmLinearLayout;publicintmX=0;publicintmY=0;publicbooleanmShow;publicCustomRelativeLayout(Contextconte
好的,我已经在SO和网络上解决了许多类似的问题,但无济于事。我只是想在SurfaceView上覆盖一个透明View..并最终在其上绘制一个矩形,使其看起来覆盖了相机预览。我无法让自定义View变得透明,它会遮挡底层相机预览。有什么建议吗?200x200只是暂时的,证明它确实覆盖了另一个View。FaceOverlayView只是一个自定义View-直接从View派生,没有覆盖任何东西(目前)。我在相机预览顶部得到一个黑色矩形 最佳答案 嗯,thisresourcefile是条形码扫描仪捕获布局,它有一个“取景器”,位于相机预览之上。
有没有办法防止在SurfaceView中绘制超出Canvas边界的对象部分(例如位图或路径)?当我逐渐将一个对象缩放到Canvas的大小之外时,尤其是在油漆模糊的情况下,它会全部减速到静止状态,我必须等待几秒钟才能重新获得控制权——它没有反应。我通过在屏幕上移动手指来缩放对象;如果我画得太快并按比例放大,那么它真的会减慢绘图速度。我在使用普通的Viewcanvas时没有遇到同样的问题,所以不知道是什么让它变慢了。就好像SurfaceView响应太快然后变得拥挤。所以改进这一点的一个想法是防止在Canvas外绘制,但不确定SurfaceView是否有这样的裁剪选项。
我正在surfaceView中播放视频。当我缩放surfaceView时,它的坐标会正确缩放,但正在播放的视频内容却没有。我正在使用ViewHelper.setscaleX方法缩放View。我尝试了几件事,但无法缩放视频。如果我更改参数,则视频会正确缩放。但这会使过渡变得缓慢。请查看初始视频和最终视频(缩放后)的快照。 最佳答案 解决了。使用TextureView而不是SurfaceView。动画不适用于surfaceview。使用此链接使用textureView播放视频:PlayingvideoonTextureView
我发现了几个关于此的问题,但没有答案,所以希望有人能提供一些见解。当我尝试交换相机时,我调用了下面的swapCamera函数。但是,相机预览只是卡住(虽然只是实时相机预览,但应用程序并未卡住)。当我第一次打开应用程序时,一切正常。但是我注意到了一些有趣的事情。当我注销_surfaceHolder对象(即我的SurfaceHolder对象)的内存地址时,它会给我一个值,但每当我在应用程序完成启动和所有操作后查询该值时,该内存地址都已更改。此外,当我swapCamera时它给我的错误非常令人困惑。在将_surfaceHolder传递给_camera.setPreviewDisplay(_s
我有一个媒体数据源,我正在使用androidMediaPlayer播放媒体。如何在同一Activity中将MediaPlayer的视频输出显示到多个View,是否有其他方法可以做到这一点?我希望媒体的视频部分以两种不同的View呈现,而无需从数据源中多次读取。当前代码:TextureViewmTextureView1;TextureViewmTextureView2;mTextureView1.setSurfaceTextureListener(newTextureView.SurfaceTextureListener(){@OverridepublicvoidonSurfaceTex
我正在使用以下代码打开和关闭LED手电筒:publicFlashlight(SurfaceViewpreview,Contextcontext){this.preview=preview;this.context=context;mHolder=preview.getHolder();//mHolderissurfaceHoldermHolder.addCallback(this);try{mCamera=Camera.open();params=mCamera.getParameters();mCamera.setPreviewDisplay(mHolder);mCamera.sta
在我可以在我的GLSurfaceView中渲染任何东西之前,我必须运行大量的初始化这些必须在OpenGL线程上完成。然而,这会在初始化期间挂起我的主线程。这是我的代码:@OverrideprotectedvoidonStart(){super.onStart();FrameLayoutrenderingLayout=(FrameLayout)findViewById(R.id.movie_rendering_layout);if(renderingLayout!=null&&mGLView==null){mGLView=newMyGLSurfaceView(getApplication