What we will do?
-> We will make an application with a button which when pressed opens a camera. You can take a picture then it is saved in the sdcard.
What we need?
Step 2 : Give a Name to your Application like CameraApp. Then click on Next...till Finish.
Step 3: Make a Button in activity_main.xml found in res->layout folder.
activity_main.xml
MainActivity.java
Explanation of the code:
-> We will make an application with a button which when pressed opens a camera. You can take a picture then it is saved in the sdcard.
What we need?
- Eclipse ADT
- A mobile with a Camera and sdcard
Step 2 : Give a Name to your Application like CameraApp. Then click on Next...till Finish.
Step 3: Make a Button in activity_main.xml found in res->layout folder.
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:background="@drawable/ic_launcher">" <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:text="Press to Open Camera" android:background="#FFFFFF"></Button>" </RelativeLayout>
MainActivity.java
package com.mia.cameraapp;
import java.io.File;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.widget.Toast;
import android.app.Activity;
import android.content.Intent;
public class MainActivity extends Activity {
public File imageFile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imageFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"img1.jpg");
Uri u = Uri.fromFile(imageFile);
i.putExtra(MediaStore.EXTRA_OUTPUT, u);
i.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(i,0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode ==0)
{
switch(resultCode)
{
case Activity.RESULT_OK :
if(imageFile.exists())
Toast.makeText(this, "Image Saved at"+imageFile.getAbsolutePath(), Toast.LENGTH_LONG).show();
break;
case Activity.RESULT_CANCELED :Toast.makeText(this, "Image Not Saved", Toast.LENGTH_LONG).show();
break;
default : break;
}
}
}
}
Step 5: Run the Project in your Mobile phone directly since Camera will only be available in your phone. The Webcam cannot take the Camera functionality.Explanation of the code:
- A simple button is made in activity_main.xml.
- In MainActivity class a File object is made named imageFile.
- Intent i is defined to carry out action of opening the camera and MediaStore is used to set action of capturing photo.
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- MediaStore is an inbuild class which deals with storing media like images,video etc.
imageFile = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES),"img1.jpg");
- Environment class lets us to access the sd card and store the image in it inside PICTURES directory naming the image to img.jpg.
- The Uri object will get the url of the image location and make it into a string (e.g. "sdcard/Pictures/special/").
i.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
- EXTRA_VIDEO_QUALITY decides the quality of image (1- high quality, 0-low quality).
- Then we start the Activity by using startActivity() with parameter as Intent object (i) and requestCode (0).
startActivityForResult(i,0);
- Then we decide what to do after Activity has started by overriding method onActivityResult().
protected void onActivityResult(int requestCode, int resultCode, Intent data)
- Then we check the condition if our requestCode matches the Activity(if loaded Activity is img1 only and not any other one).
- We have a switch case in it which has two cases (if result is OK / result is not OK / default).
if(requestCode ==0)
{
switch(resultCode)
{
case Activity.RESULT_OK :
if(imageFile.exists())
Toast.makeText(this, "Image Saved at"+imageFile.getAbsolutePath(), Toast.LENGTH_LONG).show();
break;
case Activity.RESULT_CANCELED :Toast.makeText(this, "Image Not Saved", Toast.LENGTH_LONG).show();
break;
default : break;
}
}
Stay Tuned with Made In Android










No comments:
Post a Comment