首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取android屏幕的当前视图

如何获取android屏幕的当前视图
EN

Stack Overflow用户
提问于 2012-06-28 23:24:12
回答 2查看 5.6K关注 0票数 2

我正在开发一个Android应用程序,应该记录一段视频。由于项目的限制,我无法更改某些类,如预览和VideoRec类。

应用程序有一个主屏幕活动,并且有一个切换按钮。无论何时选中切换按钮,视频录制都应开始,反之亦然。

但是,VideoRec类的构造函数接受输入的视图类型参数(VideoRec(View x))。Main activity的屏幕有一个表面视图和几个按钮。我想要做的就是在同一个屏幕上启动视频录制,就像任何手机的默认媒体记录器应用程序一样。

我的问题是,我一直无法获得屏幕视图。我不能使用预览或surfaceView类型,我得到的错误是classCast异常或无效的预览/曲面预览。

长话短说,如何才能将活动的屏幕作为视图的一种类型?

EN

回答 2

Stack Overflow用户

发布于 2012-06-28 23:30:29

您可以在Main活动中提供一个公共方法,该方法返回所需的视图。显然,您必须在onCreate方法活动中保存该视图的引用:

代码语言:javascript
复制
 View myView;

 protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.the_layout_id);
      myView = (View)findViewByID(R.id.your_id_view);            
 }


  public View getTheView(){
      return myView;
  }
票数 0
EN

Stack Overflow用户

发布于 2014-11-26 21:06:30

我所理解的是,你有一个再现你正在录制的东西的表面视图。因此,您必须在surfaceChanged中附加PreviewCallback (...)SurfaceHolder.Callback!这样做之后,在MediaRecorder运行后,您将继续获得预览帧数据!

例如:

代码语言:javascript
复制
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
    mCamera.setPreviewCallback(new PreviewCallback() {
            public void onPreviewFrame(byte[] _data, Camera _camera) {
                Log.d("onPreviewFrame-surfaceChanged",String.format("Got %d bytes of camera data", _data.length));
            }
        });

}

希望能有所帮助!干杯!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11247850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档