Deal With Camera in Android
Suppose you're implementing a new crowd-sourced weather conditions service that produces a global weather chart by joining together together pictures on the sky considered by devices running ones client iphone app. Integrating photos is a small a part of your request. You wish to take photographs with minimum fuss, certainly not reinvent the camera. Fortunately, most Android-powered devices curently have a minumum of one camera request installed. With this lesson, you learn how to make it have a picture for you personally.
Request Camera Permission
if an important function of your application is taking photos, then minimize its awareness on Search engines Play to be able to devices which may have a video camera. To advertise that the application is determined by having some sort of camera, put some sort of <uses-feature> tag in your manifest file:
<manifest ... > <uses-feature android:name="android.hardware.camera" /> ...
</manifest ... >
If your application uses, but does not require a camera in order to function,
add android:required="false" to the tag. In doing so,
Google Play will allow devices without a camera to download your application.
It's then your responsibility to check for the availability of the camera at
runtime by calling hasSystemFeature(PackageManager.FEATURE_CAMERA).
If a camera is not available, you should then disable your camera features.
Photo with The Camera App
The Android method for appointing activities to different provisions is to summon an Expectation that portrays
what you need done. This process includes three pieces: The Expectation itself, a call to begin the outside
Movement, and some code to handle the picture information when center comes back to your action.
Here's a capacity that conjures a plan to catch a photograph.
private void dispatchTakePictureIntent(int actionCode) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePictureIntent, actionCode);
}
Congrats: with this code, your requisition has picked up the capacity to make an alternate Polaroid provision
do its offering! Obviously, if no good provision is prepared to get the plan, then your application will fall down as
a messed up stage jump. Here is a capacity to check if an application can handle your aim:
public static boolean isIntentAvailable(Context context, String action) { final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(action); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; }
Show Photo
Provided that the basic deed of taking a photograph is not the summit of your
application's aspiration, then you presumably need to get the picture back from
the Polaroid provision and do something with it.
The Android Polaroid requisition encodes the photograph in the return Goal conveyed
to onactivityresult() as a little Bitmap in the additional items, under the key
"information". The accompanying code recovers this picture and showcases it in an
Imageview.
private void handleSmallCameraPhoto(Intent intent) {
Bundle extras = intent.getExtras();
mImageBitmap = (Bitmap) extras.get("data");
mImageView.setImageBitmap(mImageBitmap);
}
Store Photo
The Android Polaroid provision spares a full-measure photograph provided that you give it a document to spare into.
You should furnish a way that incorporates the space volume, organizer, and record name.
storageDir = new File( Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES ), getAlbumName() );
storageDir = new File (
Environment.getExternalStorageDirectory()
+ PICTURES_DIR
+ getAlbumName()
);
Set and Change File Name
As demonstrated in the past area, the record area for a picture ought to be determined by the nature's turf. What you have to do yourself is pick an impact safe document naming plan. You might wish likewise to spare the way in a part variable for later utilization. Here's a case result:
private File createImageFile() throws IOException { // Create an image file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = JPEG_FILE_PREFIX + timeStamp + "_"; File image = File.createTempFile( imageFileName, JPEG_FILE_SUFFIX, getAlbumDir() ); mCurrentPhotoPath = image.getAbsolutePath(); return image; }
0 التعليقات:
Post a Comment