Add cameraAutoFocusMarker XML tag

pull/484/head
Mattia Iavarone 6 years ago
parent df339424c6
commit 1ff2525608
  1. 11
      cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java
  2. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/gesture/GestureAction.java
  3. 6
      cameraview/src/main/java/com/otaliastudios/cameraview/markers/AutoFocusMarker.java
  4. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/markers/AutoFocusTrigger.java
  5. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/markers/DefaultAutoFocusMarker.java
  6. 3
      cameraview/src/main/java/com/otaliastudios/cameraview/markers/Marker.java
  7. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/markers/MarkerLayout.java
  8. 41
      cameraview/src/main/java/com/otaliastudios/cameraview/markers/MarkerParser.java
  9. 6
      cameraview/src/main/res/values/attrs.xml
  10. 4
      cameraview/src/main/res/values/strings.xml
  11. 2
      demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java
  12. 5
      demo/src/main/res/layout/activity_camera.xml

@ -35,7 +35,7 @@ import com.otaliastudios.cameraview.controls.Control;
import com.otaliastudios.cameraview.controls.ControlParser; import com.otaliastudios.cameraview.controls.ControlParser;
import com.otaliastudios.cameraview.controls.Facing; import com.otaliastudios.cameraview.controls.Facing;
import com.otaliastudios.cameraview.controls.Flash; import com.otaliastudios.cameraview.controls.Flash;
import com.otaliastudios.cameraview.draw.MarkerLayout; import com.otaliastudios.cameraview.markers.MarkerLayout;
import com.otaliastudios.cameraview.engine.Camera1Engine; import com.otaliastudios.cameraview.engine.Camera1Engine;
import com.otaliastudios.cameraview.engine.CameraEngine; import com.otaliastudios.cameraview.engine.CameraEngine;
import com.otaliastudios.cameraview.frame.Frame; import com.otaliastudios.cameraview.frame.Frame;
@ -57,6 +57,7 @@ import com.otaliastudios.cameraview.internal.GridLinesLayout;
import com.otaliastudios.cameraview.internal.utils.CropHelper; import com.otaliastudios.cameraview.internal.utils.CropHelper;
import com.otaliastudios.cameraview.internal.utils.OrientationHelper; import com.otaliastudios.cameraview.internal.utils.OrientationHelper;
import com.otaliastudios.cameraview.internal.utils.WorkerHandler; import com.otaliastudios.cameraview.internal.utils.WorkerHandler;
import com.otaliastudios.cameraview.markers.MarkerParser;
import com.otaliastudios.cameraview.preview.CameraPreview; import com.otaliastudios.cameraview.preview.CameraPreview;
import com.otaliastudios.cameraview.preview.GlCameraPreview; import com.otaliastudios.cameraview.preview.GlCameraPreview;
import com.otaliastudios.cameraview.preview.SurfaceCameraPreview; import com.otaliastudios.cameraview.preview.SurfaceCameraPreview;
@ -66,8 +67,8 @@ import com.otaliastudios.cameraview.size.Size;
import com.otaliastudios.cameraview.size.SizeSelector; import com.otaliastudios.cameraview.size.SizeSelector;
import com.otaliastudios.cameraview.size.SizeSelectorParser; import com.otaliastudios.cameraview.size.SizeSelectorParser;
import com.otaliastudios.cameraview.size.SizeSelectors; import com.otaliastudios.cameraview.size.SizeSelectors;
import com.otaliastudios.cameraview.draw.AutoFocusMarker; import com.otaliastudios.cameraview.markers.AutoFocusMarker;
import com.otaliastudios.cameraview.draw.AutoFocusTrigger; import com.otaliastudios.cameraview.markers.AutoFocusTrigger;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
@ -159,6 +160,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
// Size selectors and gestures // Size selectors and gestures
SizeSelectorParser sizeSelectors = new SizeSelectorParser(a); SizeSelectorParser sizeSelectors = new SizeSelectorParser(a);
GestureParser gestures = new GestureParser(a); GestureParser gestures = new GestureParser(a);
MarkerParser markers = new MarkerParser(a);
a.recycle(); a.recycle();
@ -208,6 +210,9 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
mapGesture(Gesture.SCROLL_HORIZONTAL, gestures.getHorizontalScrollAction()); mapGesture(Gesture.SCROLL_HORIZONTAL, gestures.getHorizontalScrollAction());
mapGesture(Gesture.SCROLL_VERTICAL, gestures.getVerticalScrollAction()); mapGesture(Gesture.SCROLL_VERTICAL, gestures.getVerticalScrollAction());
// Apply markers
setAutoFocusMarker(markers.getAutoFocusMarker());
if (!isInEditMode()) { if (!isInEditMode()) {
mOrientationHelper = new OrientationHelper(context, mCameraCallbacks); mOrientationHelper = new OrientationHelper(context, mCameraCallbacks);
} }

@ -2,7 +2,7 @@ package com.otaliastudios.cameraview.gesture;
import com.otaliastudios.cameraview.CameraView; import com.otaliastudios.cameraview.CameraView;
import com.otaliastudios.cameraview.draw.AutoFocusMarker; import com.otaliastudios.cameraview.markers.AutoFocusMarker;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;

@ -1,14 +1,10 @@
package com.otaliastudios.cameraview.draw; package com.otaliastudios.cameraview.markers;
import android.content.Context;
import android.graphics.PointF; import android.graphics.PointF;
import android.view.View;
import com.otaliastudios.cameraview.CameraView; import com.otaliastudios.cameraview.CameraView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
/** /**
* A marker for the autofocus operations. Receives callback when focus starts, * A marker for the autofocus operations. Receives callback when focus starts,

@ -1,4 +1,4 @@
package com.otaliastudios.cameraview.draw; package com.otaliastudios.cameraview.markers;
import com.otaliastudios.cameraview.CameraView; import com.otaliastudios.cameraview.CameraView;
import com.otaliastudios.cameraview.gesture.GestureAction; import com.otaliastudios.cameraview.gesture.GestureAction;

@ -1,4 +1,4 @@
package com.otaliastudios.cameraview.draw; package com.otaliastudios.cameraview.markers;
import android.animation.Animator; import android.animation.Animator;
import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorListenerAdapter;
@ -7,8 +7,6 @@ import android.graphics.PointF;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import com.otaliastudios.cameraview.R; import com.otaliastudios.cameraview.R;

@ -1,7 +1,6 @@
package com.otaliastudios.cameraview.draw; package com.otaliastudios.cameraview.markers;
import android.content.Context; import android.content.Context;
import android.graphics.PointF;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;

@ -1,4 +1,4 @@
package com.otaliastudios.cameraview.draw; package com.otaliastudios.cameraview.markers;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;

@ -0,0 +1,41 @@
package com.otaliastudios.cameraview.markers;
import android.content.Context;
import android.content.res.TypedArray;
import com.otaliastudios.cameraview.R;
import com.otaliastudios.cameraview.controls.Audio;
import com.otaliastudios.cameraview.controls.Facing;
import com.otaliastudios.cameraview.controls.Flash;
import com.otaliastudios.cameraview.controls.Grid;
import com.otaliastudios.cameraview.controls.Hdr;
import com.otaliastudios.cameraview.controls.Mode;
import com.otaliastudios.cameraview.controls.Preview;
import com.otaliastudios.cameraview.controls.VideoCodec;
import com.otaliastudios.cameraview.controls.WhiteBalance;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
/**
* Parses markers from XML attributes.
*/
public class MarkerParser {
private AutoFocusMarker autoFocusMarker = null;
public MarkerParser(@NonNull TypedArray array) {
String autoFocusName = array.getString(R.styleable.CameraView_cameraAutoFocusMarker);
if (autoFocusName != null) {
try {
Class<?> autoFocusClass = Class.forName(autoFocusName);
autoFocusMarker = (AutoFocusMarker) autoFocusClass.newInstance();
} catch (Exception ignore) { }
}
}
@Nullable
public AutoFocusMarker getAutoFocusMarker() {
return autoFocusMarker;
}
}

@ -30,13 +30,13 @@
<attr name="cameraGestureTap" format="enum"> <attr name="cameraGestureTap" format="enum">
<enum name="none" value="0" /> <enum name="none" value="0" />
<enum name="autofocus" value="1" /> <enum name="autoFocus" value="1" />
<enum name="takePicture" value="2" /> <enum name="takePicture" value="2" />
</attr> </attr>
<attr name="cameraGestureLongTap" format="enum"> <attr name="cameraGestureLongTap" format="enum">
<enum name="none" value="0" /> <enum name="none" value="0" />
<enum name="autofocus" value="1" /> <enum name="autoFocus" value="1" />
<enum name="takePicture" value="2" /> <enum name="takePicture" value="2" />
</attr> </attr>
@ -124,5 +124,7 @@
<attr name="cameraAutoFocusResetDelay" format="integer|reference"/> <attr name="cameraAutoFocusResetDelay" format="integer|reference"/>
<attr name="cameraAutoFocusMarker" format="string|reference"/>
</declare-styleable> </declare-styleable>
</resources> </resources>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="cameraview_default_autofocus_marker">com.otaliastudios.cameraview.markers.DefaultAutoFocusMarker</string>
</resources>

@ -20,7 +20,6 @@ import com.otaliastudios.cameraview.CameraView;
import com.otaliastudios.cameraview.PictureResult; import com.otaliastudios.cameraview.PictureResult;
import com.otaliastudios.cameraview.controls.Mode; import com.otaliastudios.cameraview.controls.Mode;
import com.otaliastudios.cameraview.VideoResult; import com.otaliastudios.cameraview.VideoResult;
import com.otaliastudios.cameraview.draw.DefaultAutoFocusMarker;
import java.io.File; import java.io.File;
@ -42,7 +41,6 @@ public class CameraActivity extends AppCompatActivity implements View.OnClickLis
camera = findViewById(R.id.camera); camera = findViewById(R.id.camera);
camera.setLifecycleOwner(this); camera.setLifecycleOwner(this);
camera.addCameraListener(new Listener()); camera.addCameraListener(new Listener());
camera.setAutoFocusMarker(new DefaultAutoFocusMarker());
findViewById(R.id.edit).setOnClickListener(this); findViewById(R.id.edit).setOnClickListener(this);
findViewById(R.id.capturePicture).setOnClickListener(this); findViewById(R.id.capturePicture).setOnClickListener(this);

@ -21,12 +21,13 @@
app:cameraGrid="off" app:cameraGrid="off"
app:cameraFlash="off" app:cameraFlash="off"
app:cameraAudio="on" app:cameraAudio="on"
app:cameraGestureTap="autofocus" app:cameraGestureTap="autoFocus"
app:cameraGestureLongTap="none" app:cameraGestureLongTap="none"
app:cameraGesturePinch="zoom" app:cameraGesturePinch="zoom"
app:cameraGestureScrollHorizontal="exposureCorrection" app:cameraGestureScrollHorizontal="exposureCorrection"
app:cameraGestureScrollVertical="none" app:cameraGestureScrollVertical="none"
app:cameraMode="picture" /> app:cameraMode="picture"
app:cameraAutoFocusMarker="@string/cameraview_default_autofocus_marker"/>
<ImageButton <ImageButton

Loading…
Cancel
Save