Download the camera codes here!!!
You need to first create Xml with button capture and image view
Alternativly you need to copy and paste the codes
You also need to configure camera hadware in the manifest
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:baselineAligned="false"
android:orientation="vertical"
tools:context=".MainActivity" >
<!-- Capture picture button -->
<Button
android:id="@+id/btnCapturePicture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:onClick="pictures"
android:text="Take a Picture" />
<!-- Record video button -->
<Button
android:id="@+id/btnRecordVideo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Record a Video" />
<TextView
android:layout_width="265dp"
android:layout_height="90dp"
android:padding="10dp"
android:text="Preview"
android:textSize="15dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<!-- To display picture taken -->
<ImageView
android:id="@+id/imgPreview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<!-- To preview video recorded -->
<VideoView
android:id="@+id/videoPreview"
android:layout_width="wrap_content"
android:layout_height="400dp"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
public class MainActivity extends Activity {
// Activity
request codes
private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;
private static final int CAMERA_CAPTURE_VIDEO_REQUEST_CODE = 200;
public static final int MEDIA_TYPE_IMAGE = 1;
public static final int MEDIA_TYPE_VIDEO = 2;
// directory name to store captured
images and videos
private static final String IMAGE_DIRECTORY_NAME = "Mugisha";
private Uri fileUri; // file url
to store image/video
private ImageView imgPreview;
// private VideoView videoPreview;
// private Button btnCapturePicture, btnRecordVideo;
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgPreview = (ImageView)
findViewById(R.id.imgPreview);
}
public void pictures(View
v)
{
// capture picture
if( isDeviceSupportCamera()==true){
captureImage();
} else{
Toast.makeText(getApplicationContext(),"Phone Does
not have a Camera", Toast.LENGTH_LONG).show();
}
}
/*
* Capturing Camera Image will lauch
camera app requrest image capture
*/
private void captureImage()
{
/*
* *Standard Intent
action that can be sent to have the camera
* application capture an
image and return it. ACTION_IMAGE_CAPTURE
*/
Intent intent = new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getOutputMediaFileUri1(MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
// start the image capture Intent
startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
}
/**
* Receiving activity result method will be
called after closing the camera
* */
@Override
protected void
onActivityResult(int requestCode, int resultCode, Intent data) {
// if the result is capturing Image
if (requestCode ==
CAMERA_CAPTURE_IMAGE_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// Image captured and saved to fileUri
specified in the Intent
Toast.makeText(getApplicationContext(),
"image
saved successfully",Toast.LENGTH_SHORT).show();
previewCapturedImage();
} else if (resultCode == RESULT_CANCELED) {
Toast.makeText(getApplicationContext(),"User
cancelled Image Capture recording",Toast.LENGTH_SHORT).show();
} else {
// failed to
capture image
Toast.makeText(getApplicationContext(),"Sorry!
Failed to capture image", Toast.LENGTH_SHORT).show();
// Image capture failed, advise user
}
}
}
/*
* Display image from a path to ImageView
*/
private void
previewCapturedImage() {
try {
// hide video preview
//
videoPreview.setVisibility(View.GONE);
imgPreview.setVisibility(View.VISIBLE);
// bimatp factory
BitmapFactory.Options options = new
BitmapFactory.Options();
// downsizing image as it
throws OutOfMemory Exception for larger
// images
options.inSampleSize = 8;
final Bitmap bitmap =
BitmapFactory.decodeFile(fileUri.getPath(), options);
imgPreview.setImageBitmap(bitmap);
} catch
(NullPointerException e) {
e.printStackTrace();
}
}
/**
* Creating file uri to store
image/video
*/
public Uri
getOutputMediaFileUri1(int type) {
return Uri.fromFile(getOutputMediaFile1(type));
}
/*
* returning image / video
*/
private static File
getOutputMediaFile1(int type) {
// External sdcard location
File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
IMAGE_DIRECTORY_NAME);
// Create the storage directory if it
does not exist
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d(IMAGE_DIRECTORY_NAME, "Oops!
Failed create "
+ IMAGE_DIRECTORY_NAME + "
directory");
return null;
}
}
// Create a media file name
String timeStamp = new
SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE) {
mediaFile = new
File(mediaStorageDir.getPath() + File.separator
+ "IMG_" + timeStamp + ".jpg");
} else if (type == MEDIA_TYPE_VIDEO) {
mediaFile = new
File(mediaStorageDir.getPath() + File.separator
+ "VID_" + timeStamp + ".mp4");
} else {
return null;
}
return mediaFile;
}
/**
* Creating file uri to store
image/video
*/
public Uri
getOutputMediaFileUri(int type) {
return Uri.fromFile(getOutputMediaFile1(type));
}
/**
* Checking device has camera hardware or not
* */
private boolean
isDeviceSupportCamera() {
if
(getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
// this device has a camera
return true;
} else {
// no camera on this device
return false;
}
}
}
thanks alot it of help to me
ReplyDeletethanks alot this was of good help to me
ReplyDelete