2

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

应用程序有一个主屏幕活动,并且有一个切换按钮。每当检查切换按钮时,视频录制都应启动,反之亦然。

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

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

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

4

2 回答 2

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;
  }
于 2012-06-28T15:30:29.190 回答
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));
            }
        });

}

希望它有帮助!干杯

于 2014-11-26T13:06:29.640 回答