如何获取Android屏幕的当前视图

时间:2012-06-28 15:24:12

标签: android video view

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

应用程序有一个主屏幕活动,并且有一个切换按钮。每当选中切换按钮时,视频录制应该开始,反之亦然,对于未选中状态。

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

我的问题是;我一直未能获得屏幕视图。我无法使用预览或SurfaceView类型,我收到错误说明classCast异常或无效的预览/表面预览。

长话短说,我怎样才能将活动的屏幕视为一种视图?

2 个答案:

答案 0 :(得分:0)

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

 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;
  }

答案 1 :(得分:0)

据我所知,你有1个表面视图可以复制你正在录制的内容。 所以你必须在surfaceChanged(...)SurfaceHolder.Callback中附加你的PreviewCallback!完成此操作后,您将在MediaRecorder运行后继续获取预览帧数据!

例如:

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));
            }
        });

}

希望它有所帮助!干杯