GB28181设备端的后台采集的实现
我们提供了GB28181设备端的sdk和demo,是需要开发人员做一些业务界面的二次开发的。但是其实很多用户提出需要在android手机或者设备在屏幕熄灭(后台运行)的情况下继续采集视音频数据,能够不影响GB28181平台上视频的预览等各项业务的开展,特别是特种行业油田的,车载,警务执法仪,是要能完全自适应的无值守使用的。要求横竖屏切换,前后置摄像头切换,前后台运行都能够正常使用。。
众所周知,android里面预览摄像头有两种,一种是使用surfaceview,一种是TextureView。我们demo里采用的是surfaceview,代码如下:
private SurfaceView surfaceView;
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
startCapture();
Log.i(TAG, "Main surfaceCreated");
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
Log.i(TAG, "Main surfaceChanged. width: " + i1);
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
Log.i(TAG, "Main surfaceDestroyed");
stopCapture();
}
startCapture函数里把surfaceView.getHolder()与camera关联,代码如下:
if (ret == 0) {
boolean isStart = gbtdevice.start(cameraId, surfaceView.getHolder());
if(isStart == false)
{
showToast("该设备的camera不支持该分辨率!");
gbtdevice.close();
gbtdevice = null;
return;
}
}
这样实现很简单,但是surfaceview里面系统封装了自带的纹理,不要说在后台运行,就是放大缩小,移动都不行。
那么我们采用TextureView实现摄像头的预览,直接把摄像机yuv数据输入的纹理即可。代码如下:
private TextureView texview;
texview.setSurfaceTextureListener(new SYSurfaceTextureListener());
private final class SYSurfaceTextureListener implements TextureView.SurfaceTextureListener{
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface,
int width, int height) {
SYGbtDeviceApp.getInstance().mSurfaceTexture = surface;
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
//关闭、释放Camera资源
SYGbtDeviceApp.getInstance().mSurfaceTexture = new SurfaceTexture(0);
return true;
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface,
int width, int height) {
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
// TODO Auto-generated method stub
}
}
因为TextureView里的纹理是可以获取*使用的,所以TextureView其实可以看成一个普通的view操作,这样即使手机熄屏,在后台,都可以进行GB28181的呼叫预览,对讲及录像了.。
外网4G移动环境下的手机后,安装app后手机切换横屏,点击注册后,注册界面如下:
通过GB28181平台进行呼叫预览,可以显示出清晰的画面,如下:
app是免费下载使用的(app下载地址)
更多信息
e-mail: aaa@qq.com
tel: 13971177602
web:www.founu.com
上一篇: 三国战争为什么会没有外族入侵?真相是什么