diff --git a/camerakit/src/main/java/com/wonderkiln/camerakit/CameraView.java b/camerakit/src/main/java/com/wonderkiln/camerakit/CameraView.java index ccc371d5..45c697a7 100644 --- a/camerakit/src/main/java/com/wonderkiln/camerakit/CameraView.java +++ b/camerakit/src/main/java/com/wonderkiln/camerakit/CameraView.java @@ -1,6 +1,7 @@ package com.wonderkiln.camerakit; import android.content.Context; +import android.content.res.TypedArray; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.IntDef; @@ -52,6 +53,8 @@ public class CameraView extends FrameLayout { private int mPictureMode; + private boolean mCropOutput; + private boolean mAdjustViewBounds; private CameraListener mCameraListener; @@ -63,9 +66,39 @@ public class CameraView extends FrameLayout { super(context, null); } + @SuppressWarnings("all") public CameraView(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); + if (attrs != null) { + TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.CameraView); + final int n = a.getIndexCount(); + for (int i = 0; i < n; ++i) { + int attr = a.getIndex(i); + + if (attr == R.styleable.CameraView_ckFacing) { + mFacing = a.getInteger(R.styleable.CameraView_ckFacing, 0); + } + + if (attr == R.styleable.CameraView_ckFlash) { + mFlash = a.getInteger(R.styleable.CameraView_ckFlash, 0); + } + + if (attr == R.styleable.CameraView_ckPictureMode) { + mPictureMode = a.getInteger(R.styleable.CameraView_ckPictureMode, 0); + } + + if (attr == R.styleable.CameraView_ckCropOutput) { + mCropOutput = a.getBoolean(R.styleable.CameraView_ckCropOutput, false); + } + + if (attr == R.styleable.CameraView_android_adjustViewBounds) { + mAdjustViewBounds = a.getBoolean(R.styleable.CameraView_android_adjustViewBounds, false); + } + } + a.recycle(); + } + final PreviewImpl preview = new TextureViewPreview(context, this); mCameraImpl = new Camera2(context, mCameraListener, preview); diff --git a/camerakit/src/main/res/values/attrs.xml b/camerakit/src/main/res/values/attrs.xml index 5770a55b..7328910a 100644 --- a/camerakit/src/main/res/values/attrs.xml +++ b/camerakit/src/main/res/values/attrs.xml @@ -3,6 +3,27 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/build.gradle b/demo/build.gradle index 4a064069..3954314b 100644 --- a/demo/build.gradle +++ b/demo/build.gradle @@ -20,6 +20,8 @@ android { } dependencies { - compile 'com.android.support:appcompat-v7:25.0.1' compile project(':camerakit') + compile 'com.android.support:appcompat-v7:25.0.1' + compile 'com.jakewharton:butterknife:8.4.0' + annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' } diff --git a/demo/src/main/AndroidManifest.xml b/demo/src/main/AndroidManifest.xml index c61fb618..8332ae67 100644 --- a/demo/src/main/AndroidManifest.xml +++ b/demo/src/main/AndroidManifest.xml @@ -6,7 +6,7 @@ android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" - android:roundIcon="@mipmap/ic_launcher_round" + android:roundIcon="@mipmap/ic_launcher" android:supportsRtl="true" android:theme="@style/AppTheme"> diff --git a/demo/src/main/ic_launcher-web.png b/demo/src/main/ic_launcher-web.png new file mode 100644 index 00000000..d5e90cdf Binary files /dev/null and b/demo/src/main/ic_launcher-web.png differ diff --git a/demo/src/main/java/com/wonderkiln/camerakit/demo/MainActivity.java b/demo/src/main/java/com/wonderkiln/camerakit/demo/MainActivity.java index d56d779b..912bda37 100644 --- a/demo/src/main/java/com/wonderkiln/camerakit/demo/MainActivity.java +++ b/demo/src/main/java/com/wonderkiln/camerakit/demo/MainActivity.java @@ -2,20 +2,109 @@ package com.wonderkiln.camerakit.demo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; +import android.view.ViewGroup; +import android.view.ViewTreeObserver; +import android.widget.TextView; +import android.widget.Toast; import com.wonderkiln.camerakit.CameraView; +import com.wonderkiln.camerakit.Constants; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnCheckedChanged; +import butterknife.OnClick; public class MainActivity extends AppCompatActivity { - private CameraView camera; + @BindView(R.id.activity_main) + ViewGroup parent; + + @BindView(R.id.camera) + CameraView camera; + + @BindView(R.id.screenWidth) + TextView screenWidth; + + @BindView(R.id.screenHeight) + TextView screenHeight; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + ButterKnife.bind(this); + + parent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + screenWidth.setText("screen: " + parent.getWidth() + "px"); + screenHeight.setText("screen: " + parent.getHeight() + "px"); + } + }); - camera = (CameraView) findViewById(R.id.camera); camera.start(); } + @OnClick(R.id.capturePhoto) + void capturePhoto() { + + } + + @OnClick(R.id.captureVideo) + void captureVideo() { + + } + + @OnClick(R.id.toggleCamera) + void toggleCamera() { + switch (camera.toggleFacing()) { + case Constants.FACING_BACK: + Toast.makeText(this, "Switched to back camera!", Toast.LENGTH_SHORT).show(); + break; + + case Constants.FACING_FRONT: + Toast.makeText(this, "Switched to front camera!", Toast.LENGTH_SHORT).show(); + break; + } + } + + @OnClick(R.id.toggleFlash) + void toggleFlash() { + switch (camera.toggleFlash()) { + case Constants.FLASH_ON: + Toast.makeText(this, "Flash on!", Toast.LENGTH_SHORT).show(); + break; + + case Constants.FLASH_OFF: + Toast.makeText(this, "Flash off!", Toast.LENGTH_SHORT).show(); + break; + + case Constants.FLASH_AUTO: + Toast.makeText(this, "Flash auto!", Toast.LENGTH_SHORT).show(); + break; + } + } + + @OnCheckedChanged(R.id.widthWrapContent) + void widthWrapContent() { + + } + + @OnCheckedChanged(R.id.widthMatchParent) + void widthMatchParent() { + + } + + @OnCheckedChanged(R.id.heightWrapContent) + void heightWrapContent() { + + } + + @OnCheckedChanged(R.id.heightMatchParent) + void heightMatchParent() { + + } + + } diff --git a/demo/src/main/res/layout/activity_main.xml b/demo/src/main/res/layout/activity_main.xml index d243fa69..12331cbc 100644 --- a/demo/src/main/res/layout/activity_main.xml +++ b/demo/src/main/res/layout/activity_main.xml @@ -1,5 +1,6 @@ @@ -30,6 +31,7 @@ android:weightSum="4"> @@ -99,6 +104,7 @@ android:textStyle="bold" /> - CameraKit-Android + CameraKit Demo