control commit
This commit is contained in:
parent
fed45c298b
commit
d808950dab
3 changed files with 8 additions and 98 deletions
|
@ -8,8 +8,6 @@ import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.activity.EdgeToEdge;
|
import androidx.activity.EdgeToEdge;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.camera.core.ImageCapture;
|
|
||||||
import androidx.camera.lifecycle.ProcessCameraProvider;
|
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.core.graphics.Insets;
|
import androidx.core.graphics.Insets;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
|
@ -18,18 +16,9 @@ import androidx.core.view.WindowInsetsCompat;
|
||||||
import com.example.cameraxtestappjava.camera.CustomCamera;
|
import com.example.cameraxtestappjava.camera.CustomCamera;
|
||||||
import com.example.cameraxtestappjava.camera.CustomCameraCallback;
|
import com.example.cameraxtestappjava.camera.CustomCameraCallback;
|
||||||
import com.example.cameraxtestappjava.databinding.ActivityMainBinding;
|
import com.example.cameraxtestappjava.databinding.ActivityMainBinding;
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
ProcessCameraProvider cameraProvider;
|
|
||||||
ImageCapture imageCapture;
|
|
||||||
ImageCapture.OutputFileOptions outputFileOptions;
|
|
||||||
ListenableFuture<ProcessCameraProvider> cameraProviderFuture;
|
|
||||||
ContentValues contentValues;
|
|
||||||
String fileName;
|
|
||||||
Uri tempFileUri;
|
|
||||||
|
|
||||||
CustomCamera customCamera;
|
CustomCamera customCamera;
|
||||||
ActivityMainBinding binding;
|
ActivityMainBinding binding;
|
||||||
|
|
||||||
|
@ -68,78 +57,4 @@ public class MainActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/*private void setListeners() {
|
|
||||||
binding.btnTakePicture.setOnClickListener(v -> capturePhoto());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void capturePhoto() {
|
|
||||||
if (imageCapture == null) return;
|
|
||||||
|
|
||||||
fileName = System.currentTimeMillis() + "";
|
|
||||||
|
|
||||||
outputFileOptions = getOutputFileOptions(fileName);
|
|
||||||
|
|
||||||
imageCapture.takePicture(outputFileOptions, ContextCompat.getMainExecutor(this), new ImageCapture.OnImageSavedCallback() {
|
|
||||||
@Override
|
|
||||||
public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResults) {
|
|
||||||
tempFileUri = outputFileResults.getSavedUri();
|
|
||||||
Toast.makeText(MainActivity.this, "Image saved! " + tempFileUri, Toast.LENGTH_LONG).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onError(@NonNull ImageCaptureException exception) {
|
|
||||||
Toast.makeText(MainActivity.this, "Image Not Saved " + exception.getMessage(), Toast.LENGTH_LONG).show();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@NonNull
|
|
||||||
private ImageCapture.OutputFileOptions getOutputFileOptions(String name) {
|
|
||||||
contentValues = new ContentValues();
|
|
||||||
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, name);
|
|
||||||
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg");
|
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
|
|
||||||
contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, "Pictures/CameraXTestApp");
|
|
||||||
}
|
|
||||||
|
|
||||||
return new ImageCapture.OutputFileOptions.Builder(
|
|
||||||
getContentResolver(), MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues
|
|
||||||
).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setUpCamera() {
|
|
||||||
cameraProviderFuture = ProcessCameraProvider.getInstance(this);
|
|
||||||
cameraProviderFuture.addListener(() -> {
|
|
||||||
try {
|
|
||||||
cameraProvider = cameraProviderFuture.get();
|
|
||||||
startSegPassCamera(cameraProvider);
|
|
||||||
} catch (ExecutionException | InterruptedException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}, ContextCompat.getMainExecutor(this)); // por parametro
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startSegPassCamera(ProcessCameraProvider cameraProvider) {
|
|
||||||
Log.d("TAGTAG", "UEEEP");
|
|
||||||
CameraSelector cameraSelector = CameraSelector.DEFAULT_FRONT_CAMERA;
|
|
||||||
|
|
||||||
Preview preview = new Preview.Builder().build();
|
|
||||||
preview.setSurfaceProvider(binding.pvViewfinder.getSurfaceProvider());
|
|
||||||
|
|
||||||
imageCapture = new ImageCapture.Builder().build();
|
|
||||||
|
|
||||||
try {
|
|
||||||
cameraProvider.unbindAll();
|
|
||||||
|
|
||||||
cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageCapture);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
}*/
|
|
||||||
}
|
}
|
|
@ -88,7 +88,6 @@ public class CustomCamera extends FrameLayout implements TextureView.SurfaceText
|
||||||
if (mImageCapture == null) return;
|
if (mImageCapture == null) return;
|
||||||
|
|
||||||
String mFileName = System.currentTimeMillis() + "";
|
String mFileName = System.currentTimeMillis() + "";
|
||||||
|
|
||||||
ImageCapture.OutputFileOptions mIutputFileOptions = getOutputFileOptions(mFileName);
|
ImageCapture.OutputFileOptions mIutputFileOptions = getOutputFileOptions(mFileName);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -97,13 +96,11 @@ public class CustomCamera extends FrameLayout implements TextureView.SurfaceText
|
||||||
public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResults) {
|
public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResults) {
|
||||||
mTempFileUri = outputFileResults.getSavedUri();
|
mTempFileUri = outputFileResults.getSavedUri();
|
||||||
callback.onPictureTakenSuccess("Image saved! " + mTempFileUri);
|
callback.onPictureTakenSuccess("Image saved! " + mTempFileUri);
|
||||||
//Toast.makeText(mContext, "Image saved! " + tempFileUri, Toast.LENGTH_LONG).show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(@NonNull ImageCaptureException exception) {
|
public void onError(@NonNull ImageCaptureException exception) {
|
||||||
callback.onPictureTakenFailError(exception.getMessage());
|
callback.onPictureTakenFailError(exception.getMessage());
|
||||||
//Toast.makeText(mContext, "Image Not Saved " + exception.getMessage(), Toast.LENGTH_LONG).show();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -133,7 +130,7 @@ public class CustomCamera extends FrameLayout implements TextureView.SurfaceText
|
||||||
mCameraProviderFuture.addListener(() -> {
|
mCameraProviderFuture.addListener(() -> {
|
||||||
try {
|
try {
|
||||||
mCameraProvider = mCameraProviderFuture.get();
|
mCameraProvider = mCameraProviderFuture.get();
|
||||||
startCustomCamera(mCameraProvider);
|
startCustomCamera();
|
||||||
} catch (ExecutionException | InterruptedException e) {
|
} catch (ExecutionException | InterruptedException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
@ -141,8 +138,8 @@ public class CustomCamera extends FrameLayout implements TextureView.SurfaceText
|
||||||
}, mExecutor); // por parametro
|
}, mExecutor); // por parametro
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startCustomCamera(ProcessCameraProvider cameraProvider) {
|
private void startCustomCamera() {
|
||||||
Log.d("TAGTAG", "UEEEP");
|
Log.d("TAGTAG", "Start custom camera");
|
||||||
CameraSelector cameraSelector = CameraSelector.DEFAULT_FRONT_CAMERA;
|
CameraSelector cameraSelector = CameraSelector.DEFAULT_FRONT_CAMERA;
|
||||||
|
|
||||||
Preview preview = new Preview.Builder().build();
|
Preview preview = new Preview.Builder().build();
|
||||||
|
@ -151,12 +148,10 @@ public class CustomCamera extends FrameLayout implements TextureView.SurfaceText
|
||||||
mImageCapture = new ImageCapture.Builder().build();
|
mImageCapture = new ImageCapture.Builder().build();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
cameraProvider.unbindAll();
|
mCameraProvider.unbindAll();
|
||||||
|
mCameraProvider.bindToLifecycle(mLifecycleOwner, cameraSelector, preview, mImageCapture);
|
||||||
cameraProvider.bindToLifecycle(mLifecycleOwner, cameraSelector, preview, mImageCapture);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
Log.e("TAGTAG", "Couldn't start camera");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,7 +159,7 @@ public class CustomCamera extends FrameLayout implements TextureView.SurfaceText
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) {
|
public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) {
|
||||||
startCustomCamera(mCameraProvider);
|
startCustomCamera();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
tools:context=".MainActivity">
|
tools:context=".MainActivity">
|
||||||
|
|
||||||
<com.example.cameraxtestappjava.camera.CustomCamera
|
<com.example.cameraxtestappjava.camera.CustomCamera
|
||||||
android:id="@+id/scSegpassCameraView"
|
android:id="@+id/ccCustomCamera"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
|
Loading…
Reference in a new issue