package org.openhab.habclient.media;
import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.inject.Inject;
/**
* Created by Tony Alpskog in 2015.
*/
//TODO - Implement Camera2 for API21 later [Tony Alpskog 2015-02-02]
public class Camera implements ICamera {
static final int REQUEST_PHOTO_CAPTURE = 1001;
private String mCurrentPhotoPath;
private final Context mContext;
@Inject
public Camera(Context context) {
mContext = context;
}
public boolean hasCamera() {
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
}
public int takePhoto(Activity activity) {
Intent intent = getTakePhotoIntent();
if(!intent.equals(null))
activity.startActivityForResult(intent, REQUEST_PHOTO_CAPTURE);
return REQUEST_PHOTO_CAPTURE;
}
public int takePhoto(Fragment fragment) {
Intent intent = getTakePhotoIntent();
if(!intent.equals(null))
fragment.startActivityForResult(intent, REQUEST_PHOTO_CAPTURE);
return REQUEST_PHOTO_CAPTURE;
}
private Intent getTakePhotoIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(mContext.getPackageManager()) != null) {
File imageFile = null;
try {
imageFile = createImageFile();
} catch (IOException ex) {
Log.e("Image file", "Error while generating a file");
}
if (imageFile != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(imageFile));
return takePictureIntent;
}
}
return null;
}
private File createImageFile() throws IOException {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "RoomFlipper_" + timeStamp + "_";
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(imageFileName, ".jpg", storageDir);
mCurrentPhotoPath = image.getAbsolutePath();
return image;
}
public String getPhotoPath(int resultCode, Intent data) {
if(resultCode == Activity.RESULT_OK)
return mCurrentPhotoPath;
return new String();
}
}