[英]Performing an action after user has captured an image
I want to perform an action after user has captured an image.But i see nothing happens after I captured an image.I am using below code and CWAC-Camera library.Content written inside onPictureTaken
is the action which i want to perform after user captured an image- 我想在用户捕获图像后执行一个动作。但是我捕获图像后什么也没看到。我正在使用下面的代码和CWAC-Camera库
onPictureTaken
里面写的onPictureTaken
是用户捕获后想要执行的动作一个图像-
public class CameraActivity extends Activity implements Camera.PictureCallback {
private final String TAG_CAMERA_FRAGMENT = "camera_fragment";
private CameraPreview mCameraPreview;
ImageView switchToVideoOpen,camera;
private Boolean isVideoOpen = false;
CircleImageView togglePlay;
RelativeLayout actioncamera;
View blackTransparent;
byte[] datacamera;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_camera);
switchToVideoOpen=(ImageView)findViewById(R.id.switchToVideoOpen);
camera=(ImageView)findViewById(R.id.camera);
togglePlay = (CircleImageView) findViewById(R.id.togglePlay);
actioncamera = (RelativeLayout) findViewById(R.id.audio_actions_container);
blackTransparent = findViewById(R.id.blacktreansparent);
CameraFragment f = new CameraFragment();
getFragmentManager().beginTransaction()
.add(R.id.preview_view, f, TAG_CAMERA_FRAGMENT)
.commit();
f.setHost(new SimpleCameraHost(this));
camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
takePicture();
}
});
switchToVideoOpen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!isVideoOpen) {
isVideoOpen = true;
switchToVideoOpen.setImageResource(R.drawable.video_stop);
camera.setImageResource(R.drawable.video_icon);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
takeVideo();
}
else{
isVideoOpen = false;
switchToVideoOpen.setImageResource(R.drawable.video_icon);
camera.setImageResource(R.drawable.video_stop);
stopVideo();
}
}
});
}
@Override
public void onResume() {
super.onResume();
}
private void takePicture() {
CameraFragment f = (CameraFragment) getFragmentManager().findFragmentByTag(TAG_CAMERA_FRAGMENT);
if (f != null && f.isVisible()) {
f.takePicture();
}
}
private void takeVideo() {
CameraFragment f = (CameraFragment) getFragmentManager().findFragmentByTag(TAG_CAMERA_FRAGMENT);
if (f != null && f.isVisible()) {
try {
f.record();
} catch (Exception e) {
}
}
}
private void stopVideo() {
CameraFragment f = (CameraFragment) getFragmentManager().findFragmentByTag(TAG_CAMERA_FRAGMENT);
if (f != null && f.isVisible()) {
try {
f.stopRecording();
} catch (Exception e) {
}
}
}
@Override
public void onPictureTaken(byte[] bytes, Camera camera) {
String pictureFile = GFileUtils.getGCameraDir().getAbsolutePath()+"/"+
G.getFileNameForGMedia(G.General.MEDIA_TYPE_PHOTO);
if (pictureFile == null) {
return;
}
blackTransparent.setVisibility(View.VISIBLE);
actioncamera.setVisibility(View.VISIBLE);
togglePlay.setVisibility(View.VISIBLE);
datacamera=bytes;
}
}
onPictureTaken()
will not be called, because that is not how the library works. onPictureTaken()
将不会被调用,因为这不是库的工作方式。
The documentation covers how you can override photo saving and receive the byte[]
from the camera for doing whatever it is that you plan on doing. 该文档介绍了如何覆盖照片保存方式以及如何从相机接收
byte[]
来完成您计划要做的任何事情。 It involves creating your own CameraHost
(whether from scratch or by subclassing SimpleCameraHost
) and overriding saveImage(PictureTransaction, byte[])
. 它涉及创建您自己的
CameraHost
(无论是从头开始还是通过子类化SimpleCameraHost
)并覆盖saveImage(PictureTransaction, byte[])
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.