package de.stephanlindauer.criticalmaps.handler; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.AsyncTask; import android.provider.MediaStore; import de.stephanlindauer.criticalmaps.App; import de.stephanlindauer.criticalmaps.Main; import de.stephanlindauer.criticalmaps.R; import de.stephanlindauer.criticalmaps.utils.AlertBuilder; import de.stephanlindauer.criticalmaps.utils.ImageUtils; import de.stephanlindauer.criticalmaps.vo.RequestCodes; import de.stephanlindauer.criticalmaps.vo.ResultType; import java.io.File; public class StartCameraHandler extends AsyncTask<Void, Void, ResultType> { private Main activity; public StartCameraHandler(Main mainActivity) { this.activity = mainActivity; } @Override protected void onPreExecute() { if (App.components().ownLocationmodel().ownLocation == null) { AlertBuilder.show(activity,R.string.something_went_wrong,R.string.camera_no_location_no_camera); } if (!activity.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) { AlertBuilder.show(activity,R.string.something_went_wrong,R.string.camera_no_camera_no_camera); } } @Override protected ResultType doInBackground(Void... voids) { final File outputFile = ImageUtils.getNewOutputImageFile(); activity.setNewCameraOutputFile(outputFile); // FIXME: 07.09.2015 PackageManager packageManager = activity.getPackageManager(); if (!packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { return ResultType.FAILED; } Uri imageCaptureUri = Uri.fromFile(outputFile); Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageCaptureUri); activity.startActivityForResult(cameraIntent, RequestCodes.CAMERA_CAPTURE_IMAGE_REQUEST_CODE); return ResultType.SUCCEEDED; } @Override protected void onPostExecute(ResultType resultType) { if (resultType == ResultType.FAILED) { AlertBuilder.show(activity,R.string.something_went_wrong,R.string.camera_no_camera); } } }