Skip to content
📸 Use Android camera to take pictures and videos, based on `camera2` api.
Branch: master
Clone or download
Latest commit d9fd8b4 Sep 18, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea Rename video -> camera Jun 7, 2018
app Dependencies upgraded Sep 18, 2018
art Add README Jul 2, 2018
camera Release 1.0.3 Jul 11, 2018
gradle/wrapper Initial commit Apr 11, 2018
.gitignore Initial commit Apr 11, 2018
LICENSE
README.md Update README Jul 17, 2018
build.gradle
gradle.properties
gradlew
gradlew.bat Initial commit Apr 11, 2018
settings.gradle Rename video -> camera Jun 5, 2018

README.md

Camera gitHub release platform Android Arsenal license Build status

Use Android camera to take pictures and videos, based on camera2 api.

Features

  • Auto filled CameraView for previewing
  • Support both image capture & video record
  • Configurable audio/video size and aspect ratio, auto focus, tap to focus, flash control, pinch to zoom, etc.

Gradle

dependencies {
    implementation 'com.github.duanhong169:camera:${latestVersion}'
    ...
}

Replace ${latestVersion} with the latest version code. See releases.

Usage

  • Add CameraView into your layout xml:
<top.defaults.camera.CameraView
    android:id="@+id/preview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    app:mode="video"
    app:aspectRatio="4:3"
    app:autoFocus="true"
    app:facing="back"
    app:fillSpace="false"
    app:flash="auto"
    app:pinchToZoom="false"
    app:showFocusIndicator="true"/>

See top_defaults_camera_attrs.xml for all supported attributes.

  • Create a Photographer with the CameraView:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    // ...

    CameraView preview = findViewById(R.id.preview);
    photographer = PhotographerFactory.createPhotographerWithCamera2(this, preview);
    
    // ...
}
  • Implement and set Photographer.OnEventListener to receive events from the camera:
    photographer.setOnEventListener(new SimpleOnEventListener() {
        @Override
        public void onDeviceConfigured() {}

        @Override
        public void onPreviewStarted() {}

        @Override
        public void onZoomChanged(float zoom) {}

        @Override
        public void onPreviewStopped() {}

        @Override
        public void onStartRecording() {}

        @Override
        public void onFinishRecording(String filePath) {}

        @Override
        public void onShotFinished(String filePath) {}

        @Override
        public void onError(Error error) {}
    });
  • Start/stop preview in onResume()/onPause():
    @Override
    protected void onResume() {
        super.onResume();
        photographer.startPreview();
    }

    @Override
    protected void onPause() {
        photographer.stopPreview();
        super.onPause();
    }
  • PhotographerHelper is your friend:
photographerHelper = new PhotographerHelper(photographer); // init with photographer
photographerHelper.setFileDir(Commons.MEDIA_DIR); // set directory for image/video saving
photographerHelper.flip(); // flip back/front camera
photographerHelper.switchMode(); // switch between image capture/video record

See a complete usage in the app sample code.

Credits

License

See the LICENSE file.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.