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.Facing;
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.CameraEngine;
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.OrientationHelper;
import com.otaliastudios.cameraview.internal.utils.WorkerHandler;
import com.otaliastudios.cameraview.markers.MarkerParser;
import com.otaliastudios.cameraview.preview.CameraPreview;
import com.otaliastudios.cameraview.preview.GlCameraPreview;
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.SizeSelectorParser;
import com.otaliastudios.cameraview.size.SizeSelectors;
import com.otaliastudios.cameraview.draw.AutoFocusMarker;
import com.otaliastudios.cameraview.draw.AutoFocusTrigger;
import com.otaliastudios.cameraview.markers.AutoFocusMarker;
import com.otaliastudios.cameraview.markers.AutoFocusTrigger;
import java.io.File;
import java.util.ArrayList;
@ -159,6 +160,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
// Size selectors and gestures
SizeSelectorParser sizeSelectors = new SizeSelectorParser(a);
GestureParser gestures = new GestureParser(a);
MarkerParser markers = new MarkerParser(a);
a.recycle();
@ -208,6 +210,9 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
mapGesture(Gesture.SCROLL_HORIZONTAL, gestures.getHorizontalScrollAction());
mapGesture(Gesture.SCROLL_VERTICAL, gestures.getVerticalScrollAction());
// Apply markers
setAutoFocusMarker(markers.getAutoFocusMarker());
if (!isInEditMode()) {
mOrientationHelper = new OrientationHelper(context, mCameraCallbacks);
}

@ -2,7 +2,7 @@ package com.otaliastudios.cameraview.gesture;
import com.otaliastudios.cameraview.CameraView;
import com.otaliastudios.cameraview.draw.AutoFocusMarker;
import com.otaliastudios.cameraview.markers.AutoFocusMarker;
import androidx.annotation.NonNull;
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.view.View;
import com.otaliastudios.cameraview.CameraView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
/**
* 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.gesture.GestureAction;

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

@ -1,4 +1,4 @@
package com.otaliastudios.cameraview.draw;
package com.otaliastudios.cameraview.markers;
import android.annotation.SuppressLint;
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">
<enum name="none" value="0" />
<enum name="autofocus" value="1" />
<enum name="autoFocus" value="1" />
<enum name="takePicture" value="2" />
</attr>
<attr name="cameraGestureLongTap" format="enum">
<enum name="none" value="0" />
<enum name="autofocus" value="1" />
<enum name="autoFocus" value="1" />
<enum name="takePicture" value="2" />
</attr>
@ -124,5 +124,7 @@
<attr name="cameraAutoFocusResetDelay" format="integer|reference"/>
<attr name="cameraAutoFocusMarker" format="string|reference"/>
</declare-styleable>
</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.controls.Mode;
import com.otaliastudios.cameraview.VideoResult;
import com.otaliastudios.cameraview.draw.DefaultAutoFocusMarker;
import java.io.File;
@ -42,7 +41,6 @@ public class CameraActivity extends AppCompatActivity implements View.OnClickLis
camera = findViewById(R.id.camera);
camera.setLifecycleOwner(this);
camera.addCameraListener(new Listener());
camera.setAutoFocusMarker(new DefaultAutoFocusMarker());
findViewById(R.id.edit).setOnClickListener(this);
findViewById(R.id.capturePicture).setOnClickListener(this);

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

Loading…
Cancel
Save