https://github.com/PhilipSh/ngx-device-permission
https://github.com/PhilipSh/ngx-device-permission
Last synced: 5 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/PhilipSh/ngx-device-permission
- Owner: PhilipSh
- Created: 2025-05-22T19:13:22.000Z (28 days ago)
- Default Branch: main
- Last Pushed: 2025-05-27T19:02:01.000Z (23 days ago)
- Last Synced: 2025-06-10T11:12:45.625Z (9 days ago)
- Language: TypeScript
- Size: 281 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- fucking-awesome-angular - ngx-device-permission - Angular library for handling device permissions (camera, microphone, geolocation, etc.) in a reactive way using RxJS. (Table of contents / Third Party Components)
- awesome-angular - ngx-device-permission - Angular library for handling device permissions (camera, microphone, geolocation, etc.) in a reactive way using RxJS. (Table of contents / Third Party Components)
README
# NgxDevicePermission
Angular library for handling device permissions (camera, microphone, geolocation, etc.) in a reactive way using RxJS.
## Installation
```bash
npm install ngx-device-permission
```## Usage
### DevicePermissionService
Service for working with the Permissions API.
```typescript
import { Component, inject } from '@angular/core';
import { DevicePermissionService } from 'ngx-device-permission';@Component({
selector: 'app-permissions',
standalone: true,
template: `
Check Camera Permission
Observe Microphone Permission
`,
})
export class PermissionsComponent {
private devicePermission = inject(DevicePermissionService);// Get current permission status
checkPermission() {
this.devicePermission.getPermissionStatus('camera').subscribe((status) => {
console.log('Camera permission status:', status); // 'granted' | 'denied' | 'prompt'
});
}// Observe permission status changes
observePermission() {
this.devicePermission
.observePermissionChange('microphone')
.subscribe((status) => {
console.log('Microphone permission changed:', status);
});
}
}
```### MediaDeviceService
Service for working with media devices (camera, microphone).
```typescript
import { Component, inject } from '@angular/core';
import { MediaDeviceService } from 'ngx-device-permission';@Component({
selector: 'app-media',
standalone: true,
template: `
Request Media Access
List Devices
`,
})
export class MediaComponent {
private mediaDevice = inject(MediaDeviceService);// Request access to media devices
requestMediaAccess() {
this.mediaDevice.requestAccess({ video: true, audio: true }).subscribe({
next: (stream) => {
console.log('Media access granted:', stream);
},
error: (error) => {
console.error('Media access denied:', error);
},
});
}// Get list of available media devices
listDevices() {
this.mediaDevice.enumerateDevices().subscribe((devices) => {
console.log('Available devices:', devices);
});
}
}
```## Supported Permissions
The library supports all permissions available through the Permissions API:
- camera
- microphone
- geolocation
- notifications
- push
- midi
- clipboard-read
- clipboard-write
- payment-handler
- background-sync
- persistent-storage
- ambient-light-sensor
- accelerometer
- gyroscope
- magnetometer
- screen-wake-lock## Requirements
- Angular 19.2.0 or higher
- RxJS 7.8.0 or higher## License
MIT