我正在开发一个应该录制视频的Android应用程序。由于项目的限制,我无法更改某些类,如Preview和VideoRec类。
应用程序有一个主屏幕活动,并且有一个切换按钮。每当选中切换按钮时,视频录制应该开始,反之亦然,对于未选中状态。
但是,VideoRec类的构造函数采用View类型参数进行输入(VideoRec(View x))。主要活动的屏幕有一个表面视图和几个按钮。我想要做的就是在同一个屏幕上启动视频录制,就像任何手机的默认mediarecorder应用程序一样。
我的问题是;我一直未能获得屏幕视图。我无法使用预览或SurfaceView类型,我收到错误说明classCast异常或无效的预览/表面预览。
长话短说,我怎样才能将活动的屏幕视为一种视图?
答案 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));
}
});
}
希望它有所帮助!干杯