Upload captured image to Cloudinary directly in Android

I want to capture an image and upload it directly to Cloudinary. How can I find out the name pic to set it in the download instructions cloudinary.uploader().upload("nameofthepic", Cloudinary.emptyMap()); .

Here is my code:

 public class Camera extends ActionBarActivity implements View.OnClickListener { Button b; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.camera); b= (Button) findViewById(R.id.button); b.setOnClickListener(this); } public static final int TAKE_PHOTO_REQUEST = 0; @Override public void onClick(View v) { Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(takePhotoIntent, TAKE_PHOTO_REQUEST); Map config = new HashMap(); config.put("cloud_name", "dkepfkeuu"); config.put("api_key", "552563677649679"); config.put("api_secret", "7n8wJ42Hr_6nqZ4aOMDXjTIZ4P0"); Cloudinary cloudinary = new Cloudinary(config); try { cloudinary.uploader().upload("", Cloudinary.emptyMap()); } catch (IOException e) { e.printStackTrace(); } } } 
+5
source share
1 answer

The order is as follows: Take a picture-> save to file-> upload to the cloud Here is the code:

 File photoFile; @Override public void onClick(View v) { Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePhotoIntent.resolveActivity(getPackageManager()) != null) { // Create the File where the photo should go photoFile = null; try { photoFile = createImageFile(); } catch (IOException ex) { // Error occurred while creating the File } // Continue only if the File was successfully created if (photoFile != null) { takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile)); startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); } } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_TAKE_PHOTO) { if (resultCode == RESULT_OK) { //File to upload to cloudinary Map config = new HashMap(); config.put("cloud_name", "dkepfkeuu"); config.put("api_key", "552563677649679"); config.put("api_secret", "7n8wJ42Hr_6nqZ4aOMDXjTIZ4P0"); Cloudinary cloudinary = new Cloudinary(config); try { cloudinary.uploader().upload(photoFile.getAbsolutePath(), Cloudinary.emptyMap()); } catch (IOException e) { e.printStackTrace(); } } else if (resultCode == RESULT_CANCELED) { // User cancelled the image capture //finish(); } } } private File createImageFile() throws IOException { // Create an image file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "capturedImage"; File storageDir = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES); File image = File.createTempFile( imageFileName, /* prefix */ ".jpg", /* suffix */ storageDir /* directory */ ); // Save a file: path for use with ACTION_VIEW intents return image; } 

So, you are actually loading the photoFile , which is actually the captured image.

It's nice to put the download function along with some image transformations (scale, resize) in AsyncTask , since the camera images in modern phones are quite large (in size).

Hope this helps.

+6
source

Source: https://habr.com/ru/post/1215336/


All Articles