2012-06-28 38 views
2

我正在开发一个应用程序,它应该记录一个视频。由于项目的限制,像Preview和VideoRec类,我无法更改某些类。如何获得Android屏幕的当前视图

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

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

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

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

回答

0

你可以在你的主要活动中提供一个公共方法,它返回你需要的视图。 很明显,你必须保存在您的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; 
    } 
0

我的理解是你有1个surfaceview这里重现您正在录制的内容。 因此,您必须在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)); 
      } 
     }); 

} 

希望它可以帮助干杯

相关问题