Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/evangunawan/cap-usb-camera
External USB Camera support for android capacitor projects.
https://github.com/evangunawan/cap-usb-camera
capacitor capacitor-plugin ionic
Last synced: about 1 month ago
JSON representation
External USB Camera support for android capacitor projects.
- Host: GitHub
- URL: https://github.com/evangunawan/cap-usb-camera
- Owner: evangunawan
- Created: 2021-05-28T04:32:42.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-06-08T07:20:57.000Z (over 3 years ago)
- Last Synced: 2024-11-15T22:26:42.961Z (3 months ago)
- Topics: capacitor, capacitor-plugin, ionic
- Language: Java
- Homepage:
- Size: 750 KB
- Stars: 6
- Watchers: 5
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
Awesome Lists containing this project
README
# @periksa/cap-usb-camera
UVC Cameras support for capacitor apps connected via device's USB.
Based on [UVCCamera](https://github.com/saki4510t/UVCCamera) library,
using [Metuuu's](https://github.com/Metuuu/UVCCamera) forked repository to support Android SDK 30.This plugin enable web apps to take picture or access your UVC external camera (e.g. webcams).
The plugin provides a native activity to access and opens stream from external camera,
which you can capture, fetch photo, and get the data from the plugin call
(it works similarly with [@capacitor/camera](https://capacitorjs.com/docs/apis/camera) plugin).
It supports the functionality to save the image to your media storage too.Currently supports only Android platform, and not tested on many devices.
### Tested Devices
Tested and developed on an Android 11 Samsung Galaxy A51.
Please report or open an issue if your device is bugged or crashed using the plugin.
## Install
```bash
npm install @periksa/cap-usb-camera
npx cap sync
```Modify your `build.gradle` (top-level project scope),
usually on `/android/build.gradle` path if you are developing ionic-capacitor project.Add new maven repository line to your `allprojects` -> `repositories` body.
```gradle
allprojects {
repositories {
google()
jcenter()
// Add This Line
maven { url 'https://raw.github.com/saki4510t/libcommon/master/repository/' }
}
}
```
Then sync your gradle project by pressing "Sync Now" on the top after you modify the file.## Usage
Here is some example to use the plugin inside your web app.
Example code is written in Angular platform.
```typescript
import { UsbCamera } from '@periksa/cap-usb-camera';// ...
private async fetchExternalCameraPhoto(): Promise {
const photoResult = await UsbCamera.getPhoto({ saveToStorage: false });
if (photoResult.status_code === 0) {
if (photoResult.exit_code === 'exit_no_device') {
// Handle show alert/notice when there is no device attached.
}
return;
}
if (photoResult.data) {
const photoSrc = photoResult.data.dataURL; //Base64 enconded image.
// Handle the base64 encoded image.
// e.g. put it on tag.
}
}```
`status_code` is retrieved from Android's Activity `RESULT_CODE`,we use these 2 values:
- `-1`: OK, image fetched successfully. Will be accompanied by `success` exit_code.
- `0`: CANCELED, canceled by user, or plugin can't access camera.Then you can have the exit reason inside `exit_code`. Available values are:
- `user_canceled` - User clicked *cancel* button or declined camera access permission on the plugin activity.
- `exit_no_device` - Plugin won't start the activity when there is no device connected.
- `device_disconnected` - Device is disconnected on plugin activity.
- `success` - Exit code if the plugin succeed to take the photo.## API
* [`getPhoto(...)`](#getphoto)
* [Interfaces](#interfaces)### getPhoto(...)
```typescript
getPhoto(config?: UsbCameraPhotoOptions) => any
```Open native activity and get photo from usb camera device attached to the phone.
If there is no usb device connected, will return canceled exit code.| Param | Type |
| ------------ | ----------------------------------------------------------------------- |
| **`config`** |UsbCameraPhotoOptions
|**Returns:**
any
--------------------
### Interfaces
#### UsbCameraPhotoOptions
| Prop | Type | Description |
| ------------------- | -------------------- | -------------------------------------------------- |
| **`saveToStorage`** |boolean
| Let app save captured photo to the device storage. |#### UsbCameraResult
| Prop | Type | Description |
| ------------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| **`status_code`** |number
| Status Code from Intent ResultCode. |
| **`status_code_s`** |string
| Description string of the status code number. |
| **`exit_code`** |string
| Description of exit or cancel reason. |
| **`data`** |{ dataURL?: string; fileURI?: string; }
| Result data payload, contains image in base64 DataURL, and Android filesystem URI to the file. |## Contributing
Any contribution is very much appreciated, just clone the project and post a pull request!
Thank you very much!### Unimplemented and future functionalities
- Activity not yet supports image manipulation, such as brightness, contrast and mirroring.
However the library supports this.
- Still have bugs with device connectivity.
- Activity user interface is somehow very simple, and not tested on more screen dimensions.