Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MakePhotoActivity extends Activity {
- // LogCat tag
- private static final String TAG = MainActivity.class.getSimpleName();
- // Camera 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;
- private Uri fileUri; // file url to store image/video
- private Button btnCapturePicture, btnRecordVideo;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_make_photo);
- // Changing action bar background color
- // These two lines are not needed
- // getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(getResources().getString(R.color.action_bar))));
- btnCapturePicture = (Button) findViewById(R.id.btnCapturePicture);
- btnRecordVideo = (Button) findViewById(R.id.btnRecordVideo);
- /**
- * Capture image button click event
- */
- btnCapturePicture.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // capture picture
- captureImage();
- }
- });
- /**
- * Record video button click event
- */
- btnRecordVideo.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // record video
- recordVideo();
- }
- });
- // Checking camera availability
- if (!isDeviceSupportCamera()) {
- Toast.makeText(getApplicationContext(),
- "Sorry! Your device doesn't support camera",
- Toast.LENGTH_LONG).show();
- // will close the app if the device does't have camera
- finish();
- }
- }
- /**
- * 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;
- }
- }
- /**
- * Launching camera app to capture image
- */
- private void captureImage() {
- Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
- intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
- // start the image capture Intent
- //intent.putExtra("android.intent.extras.CAMERA_FACING", 1);
- startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
- }
- /**
- * Launching camera app to record video
- */
- private void recordVideo() {
- Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
- fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
- // set video quality
- intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
- intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file
- // name
- // start the video capture Intent
- startActivityForResult(intent, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);
- }
- /**
- * Here we store the file url as it will be null after returning from camera
- * app
- */
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- // save file url in bundle as it will be null on screen orientation
- // changes
- outState.putParcelable("file_uri", fileUri);
- }
- @Override
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- super.onRestoreInstanceState(savedInstanceState);
- // get the file url
- fileUri = savedInstanceState.getParcelable("file_uri");
- }
- /**
- * 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) {
- // successfully captured the image
- // launching upload activity
- launchUploadActivity(true);
- } else if (resultCode == RESULT_CANCELED) {
- // user cancelled Image capture
- Toast.makeText(getApplicationContext(),
- "User cancelled image capture", Toast.LENGTH_SHORT)
- .show();
- } else {
- // failed to capture image
- Toast.makeText(getApplicationContext(),
- "Sorry! Failed to capture image", Toast.LENGTH_SHORT)
- .show();
- }
- } else if (requestCode == CAMERA_CAPTURE_VIDEO_REQUEST_CODE) {
- if (resultCode == RESULT_OK) {
- // video successfully recorded
- // launching upload activity
- launchUploadActivity(false);
- } else if (resultCode == RESULT_CANCELED) {
- // user cancelled recording
- Toast.makeText(getApplicationContext(),
- "User cancelled video recording", Toast.LENGTH_SHORT)
- .show();
- } else {
- // failed to record video
- Toast.makeText(getApplicationContext(),
- "Sorry! Failed to record video", Toast.LENGTH_SHORT)
- .show();
- }
- }
- }
- private void launchUploadActivity(boolean isImage){
- /* Intent i = new Intent(MakePhotoActivity.this, UploadActivity.class);
- i.putExtra("filePath", fileUri.getPath());
- i.putExtra("isImage", isImage);
- startActivity(i);*/
- }
- /**
- * ------------ Helper Methods ----------------------
- * */
- /**
- * Creating file uri to store image/video
- */
- public Uri getOutputMediaFileUri(int type) {
- return Uri.fromFile(getOutputMediaFile(type));
- }
- /**
- * returning image / video
- */
- private static File getOutputMediaFile(int type) {
- // External sdcard location
- File mediaStorageDir = new File(
- Environment
- .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
- Config.IMAGE_DIRECTORY_NAME);
- // Create the storage directory if it does not exist
- if (!mediaStorageDir.exists()) {
- if (!mediaStorageDir.mkdirs()) {
- Log.d(TAG, "Oops! Failed create " + Config.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 {
- return null;
- }
- return mediaFile;
- }
- }
Add Comment
Please, Sign In to add comment