Git Product home page Git Product logo

android-webcam's Introduction

Android-Webcam CircleCI

Overview

This is an implementation of a USB webcam driver for Android which provides a pure Java interface. The goal of this project is to avoid the shortcomings of other available libraries and deliver cross device support for a spectrum of webcam devices with minimal "tuning" requirements. There is native C code under the hood but this is fully abstracted away by the library and binaries for all architectures are provided.

Main Feature Set (Planned)

  1. Dependency free Mavenized Android library with Java only interface
  2. Support for most USB Host capable Android devices. We require the use of UsbDeviceConnect.getRawDescriptors() which was added in API 13 (Honeycomb 3.2) so this is the minimum API level.
  3. Support for USB webcam implementations that adhere to the UVC 1.5 classification
  4. Support for full range of device resolutions (240p and greater)
  5. Simple integration to 3rd party applications with multiple implementation options dependant on use case requirements.

NDK Usage

Due to an unfortunate omission in Android's Java USB Host API, support for isochronous endpoints is non-existant. To get around this shortcoming, this library includes a straight copy of libusb, along with some custom JNI and Java wrappers inspired by SpecLad's repostiory libusb-android. All platform ABIs are built and deployed with the Maven artifact to help with our commitment to cross device support. Use of this artifact is through a simple, straightforward Java interface - no handling of native code or JNI required.

Building

Due to the NDK requirement, building this project will require you to have the Android NDK on your machine. Setup of the NDK is left to the user. See Google's NDK website for more information on this.

After setting up the NDK, you will need to reference it in your version of local.properties by declaring ndk.dir.

Following this, the project should build successfully.

Supporting Documentation

  1. UVC Class Article on Wikipedia
  2. UVC Class Specification

android-webcam's People

Contributors

jwoolston avatar toxicbakery avatar

Watchers

Geoff Newman avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.