我正在开发一个Android应用程序,应该记录一段视频。由于项目的限制,我无法更改某些类,如预览和VideoRec类。
应用程序有一个主屏幕活动,并且有一个切换按钮。无论何时选中切换按钮,视频录制都应开始,反之亦然。
但是,VideoRec类的构造函数接受输入的视图类型参数(VideoRec(View x))。Main activity的屏幕有一个表面视图和几个按钮。我想要做的就是在同一个屏幕上启动视频录制,就像任何手机的默认媒体记录器应用程序一样。
我的问题是,我一直无法获得屏幕视图。我不能使用预览或surfaceView类型,我得到的错误是classCast异常或无效的预览/曲面预览。
长话短说,如何才能将活动的屏幕作为视图的一种类型?
发布于 2012-06-28 23:30:29
您可以在Main活动中提供一个公共方法,该方法返回所需的视图。显然,您必须在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;
}发布于 2014-11-26 21:06:30
我所理解的是,你有一个再现你正在录制的东西的表面视图。因此,您必须在surfaceChanged中附加PreviewCallback (...)SurfaceHolder.Callback!这样做之后,在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));
}
});
}希望能有所帮助!干杯!
https://stackoverflow.com/questions/11247850
复制相似问题