我正在尝试实现一个很棒的库cwac-camera。我似乎想不出如何实现图片的回调,以及如何设置图片的路径。
这是我的CustomCameraFragment公有类CustomCameraFragment扩展了CameraFragment {私有静态最终字符串KEY_USE_FFC = "com.commonsware.cwac.camera.demo.USE_FFC";
public static CustomCameraFragment newInstance(boolean useFFC) {
CustomCameraFragment f = new CustomCameraFragment();
Bundle args = new Bundle();
args.putBoolean(KEY_USE_FFC, useFFC);
f.setArguments(args);
return (f);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SimpleCameraHost.Builder builder =
new SimpleCameraHost.Builder(new DemoCameraHost(getActivity()));
builder.useFullBleedPreview(true);
setHost(builder.build());
//setHost(builder.useFullBleedPreview(true).build());
}
public class DemoCameraHost extends SimpleCameraHost {
public DemoCameraHost(Context _ctxt) {
super(_ctxt);
}
@Override
public boolean useFrontFacingCamera() {
if (getArguments() == null) {
return (false);
}
return (getArguments().getBoolean(KEY_USE_FFC));
}
@Override
public boolean useSingleShotMode() {
return true;
}
@Override
public void onCameraFail(CameraHost.FailureReason reason) {
super.onCameraFail(reason);
Toast.makeText(getActivity(),
"Sorry, but you cannot use the camera now!",
Toast.LENGTH_LONG).show();
}
@Override
public void saveImage(PictureTransaction xact, Bitmap bitmap) {
super.saveImage(xact, bitmap);
}
}}
我在另一个片段的framelayout中使用它,但是我不知道回调的正确实现。
我使用CustomCameraFragment的片段:我有一个拍照按钮:@OnClick(R.id.btnTakePicture) public void takePicture(查看视图){
try {
CustomCameraFragment.DemoCameraHost demoCameraHost = customCameraFragment.demoCameraHost;
PictureTransaction pictureTransaction = new PictureTransaction(demoCameraHost);
pictureTransaction.needBitmap(true);
customCameraFragment.takePicture(pictureTransaction);
} catch (Exception e) {
e.printStackTrace();
}
showCameraPreview(false);
}但在这段代码中,我需要:-知道图片拍摄时间的回调-当回调被触发时,我需要显示位图,而不是预览-我需要能够设置保存图片的路径和文件名
这三件事对我来说是不清楚的。
发布于 2015-04-02 21:00:49
您必须覆盖saveImage(PictureTransaction, byte[])函数,有关详细信息,请参阅此处:
https://github.com/commonsguy/cwac-camera#overriding-photo-saving
发布于 2015-04-03 06:09:19
知道照片拍摄时间的回调
保存照片的默认SimpleCameraHost逻辑使用上面讨论的getPhotoPath()和相关方法。实际保存照片是在CameraHost上调用的saveImage(PictureTransaction,byte[])中完成的,其中SimpleCameraHost有一个saveImage(PictureTransaction,byte[])实现,它将提供的byte[]写出到所需的位置。
欢迎您覆盖saveImage(PictureTransaction、byte[])并对byte[]执行其他操作,例如通过互联网发送它。saveImage(PictureTransaction,byte[])是在后台线程上调用的,因此您不必执行自己的异步工作。
它的另一个用途是找出保存完成的时间,以便您可以使用生成的图像。只需覆盖saveImage(PictureTransaction,byte[]),链接到超类实现,当它返回时,图像就可以使用了。
当触发回调时,我需要显示位图,而不是预览
默认情况下,拍摄照片的结果是将CameraFragment返回到预览模式,准备拍摄下一张照片。相反,如果您只需要一张图片,或者您希望先将用户发送到UI的其他部分,并且不希望立即重新启动预览,则重写CameraHost中的useSingleShotMode()以返回true。或者,在SimpleCameraHost.Builder上调用useSingleShotMode(),传入默认使用的布尔值。或者,在PictureTransaction上调用useSingleShotMode()来控制单个图片的这一点。
然后,您可能希望在CameraHost中使用自己的saveImage()实现来执行任何操作,而不是重新启动预览。例如,您可以启动另一个活动来对图像执行某些操作。但是,请记住,意图被限制为~1MB,因此通过额外的意图将图像传递给另一个活动可能是不可靠的。您还需要做一些其他的事情,比如(小心地)使用静态数据成员。
预览模式将在CameraFragment的onPause()/onResume()循环后自动重新启用,或者您可以在CameraFragment (或CameraView)上调用restartPreview()。
我需要能够设置保存图片的路径和文件名
这在the documentation中也有涉及,篇幅足够长,所以我不想在这里引用它。:-)
https://stackoverflow.com/questions/29412897
复制相似问题