我正在开发一个使用 SurfaceView 进行显示的相机应用程序。
我可以截取 SurfaceView 的屏幕截图(并将其保存为位图)
使用 getDrawingCache() (在包装 SurfaceView 的布局上)
还有canvas.drawBitmap(...)
然而,在这两种方式中,位图始终是透明/空白的。
我有 Galaxy S3,我可以看到他们的相机具有该功能
他们究竟是如何做到的?
thanks!
几个小时后,我得到了一个很好的解决方案。
也许这不是最好的方法,但对我来说已经足够了。
private long start;
private long end;
private long period;
首先在媒体记录器启动后立即获取启动时间:
private void startRecording()
{
mMediaRecoder.start();
start = System.currentTimeMillis();
}
然后,当您按下屏幕/按钮进行截图时,保存句点:
private void captureImage()
{
end = System.currentTimeMillis();
period = end - start;
}
最后,当您停止录制时,使用句点和媒体检索器获取位图:
private void saveVideo()
{
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
//path -> the path to the video
retriever.setDataSource(path);
Bitmap bitmap = retriever.getFrameAtTime(period * 1000,MediaMetadataRetriever.OPTION_CLOSEST);
}
希望对您有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)