I use the Android camera Intent to take a picture.
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
this.startActivityForResult(intent, GalleryActivity.PHOTO_ACTIVITY);
Is there any way to disallow the user to retake the picture and immediately get back to the calling Activity, even without having to press the OK button to accept the image? (I don't wanna have to reimplement the camera activity already provided).
Not by using an Intent to capture the photo.
You'll need to use Androids Camera-Classes.
Related
I am working with camera in project and provided a simple button in activity which will open camera app in my device. But the problem is after clicking one photo, it asks weather I want to keep my picture or not and after clicking yes, it return to my main activity.
But I want to operate camera in normal mode, I mean like when we click photo after photos and all that.
My code
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent, 0);
following permission is used
uses-permission android:name="android.permission.CAMERA" uses-permission
I dont know why tags are not working.
Any kind of help is appreciated!
To take multiple photos, you should launch the intent with this action:
Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
startActivity(intent);
I just need to put a camera inside one of the three fragments of my main activity, like ([f]-[f]-[C]), where () is my main activity, [] is a fragment, C is the camera and f are just a fragment (they are full screen swipable). I need to create a whole camera (coding , etc) just for it or it is possible to call android native camera app with intent to an fagment?
I need to create a whole camera (coding , etc) just for it
Yes, whether you write it yourself or use one from a library.
or it is possible to call android native camera app with intent to an fagment?
No, you cannot embed a third-party app in a fragment of your app.
If you need to take a picture, you can just use an intent to launch the system camera app. Doing so will make it a lot easier to code, but you won't be able to show a live preview, as you're actually handling control to the camera app through that intent.
Manually handling the entire camera lifecycle allows you to have control over the preview and show it real-time in your app. Also, if you need to have the live preview in your app, this is the way to go and can't be accomplished using just an Intent.
You might find the UltimateAndroidCameraGuide on GitHub very helpful for your problem, particularly the SimpleCameraIntentFragment and the NativeCameraFragment files in that repo.
You can use an Intent to launch the camara and it will launch the camara default app., just be careful to detect when your "C" fragment is displayed, here: How to determine when Fragment becomes visible in ViewPager
If you dont do that, android pre-caches fragment before showing it and your intent will fire.
On your activity use:
#Override public void onResume() {
super.onResume();
if(viewPager.getCurrentItem() == 2){
//Your code here. Executed when fragment is seen by user.
// create Intent to take a picture and return control to the calling application
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // create a file to save the image
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name
// start the image capture Intent
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
}
See for camera launch with intent options: http://developer.android.com/guide/topics/media/camera.html#intent-image
I want to launch Android built-in camera app with a thumbnail icon on the right-bottom. Here is my code to open the camera app.
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
I think I need to put a intent data to do it. I look forward to your help.
Thanks.
Just create an image button, or button or anything you desire really.
In the onclick event add something like:
String saveFileName= Environment.getExternalStorageDirectory() + "/test.png";
// BUILT IN CAMERA
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
camera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(saveFileName) );
this.startActivityForResult(camera, 1);
Make sure you have necessary permissions set. Like saving to the SDCard.
You are very close, you dont need those flags set. And you should ideally specify where you are saving the image.
If you are wondering how to make the button take a look here
i am creating an application.
and use device default camera to take picture.
using this
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, CAMERA_PICTURE);
in onActivityResult() method i call again above code and take picture again.
but i want to take multiple pictures at a time. is there any way to take picture automatically when camera is called by intent (not by creating custom camera activity).
By sending intent you just say to existing camera application that it start and allow user to take picture - you are completely on the mercy of this application. Some of them may contain some undocumented parameters allowing you to snap picture automcatically.
http://developer.android.com/guide/topics/media/camera.html#intent-image
If you like to have control, you shall code camera application yourself.
I suppose you have to write your own custom camera, as there is no extra in MediaStore class that would allow taking another picutre.
I see a ton of results when searching for how to open the camera, and get the returned image. What about simply opening the camera app without any return at all? I just want the camera to function as normal.
You could just send an ACTION_CAMERA_BUTTON intent? That should do the trick.
Intent intent = new Intent(ACTION_CAMERA_BUTTON, null);
startActivity(intent);
Obviously, "this" needs to be your current activity.