Skip to content

SimpliField/capacitor-media

Repository files navigation


Capacitor Media

@simplifield/capacitor-media-plugin

Fork of the https://github.com/capacitor-community/media plugin for enabling extra media capabilities


Maintainers

Maintainer GitHub Social
Stewan Silva stewwan @StewanSilva

Notice πŸš€

We're starting fresh under an official org. If you were using the previous npm package capacitor-media, please update your package.json to @capacitor-community/media. Check out changelog for more info.

Installation

Using npm:

npm install @simplifield/capacitor-media-plugin

Using yarn:

yarn add @simplifield/capacitor-media-plugin

Sync native files:

@simplifield/capacitor-media-plugin

Capacitor 3 ready plugin inspired by Capacitor-community/media plugin.

Get device albums. Create an album. Save a photo to an album.

Install

npm install @simplifield/capacitor-media-plugin
npx cap sync

API

  • savePhoto
  • createAlbum
  • getAlbums

Usage

import { MediaPlugin } from '@simplifield/capacitor-media-plugin';

//
// Save video to a specific album
MediaPlugin
  .savePhoto({ path: '/path/to/the/file', album: 'My Album' })
  .then(console.log)
  .catch(console.log);

//
// Get a list of user albums
MediaPlugin
  .getAlbums()
  .then(console.log) // -> { albums: [{name:'My Album', identifier:'A1-B2-C3-D4'}, {name:'My Another Album', identifier:'E5-F6-G7-H8'}]}
  .catch(console.log);

//
// On Android 10+ files are stored to the external storage. Get Albums will return an emty albums array.
// This is done to prevent crashes because of deprecated DISTINCT keyword

//
// 

import { MediaPlugin } from '@simplifield/capacitor-media-plugin';
import { Capacitor } from '@capacitor/core';

const ALBUM_NAME = 'SomeAlbum';

const platform = Capacitor.getPlatform();

if (platform === 'android') {
  return MediaPlugin.savePhoto({ 
    path: filePath,
    album: ALBUM_NAME //is optional on Android.
    // If set and directory is not created - it will be created under the hood.
    // If not set, external storage will be used on Android 10+ (storage/emulated/0/Android/media/yourAppName)
    // or DCIM on Android <= 9
  });
}

// for iOS a special identifier is required, so firstly need to get albums
return MediaPlugin.getAlbums()
  .then(({ albums }) => {
    const mediaAlbum = albums.find((alb) => alb.name === ALBUM_NAME);

    if (!mediaAlbum) {
      return media
        .createAlbum({ name: ALBUM_NAME })
        .then(() => media.getAlbums())
        .then(({ albums }) => {
          const mediaAlbum = albums.find((alb) => alb.name === ALBUM_NAME);

          return mediaAlbum // could be undefined - consider throw
        });
    }
    return mediaAlbum;
  })
  .then((mediaAlbum) =>
    MediaPlugin.savePhoto({
      path: filePath,
      album: this.platformService.isiOS()
        ? mediaAlbum.identifier
        : mediaAlbum.name, // no album - error is thrown))
    })
  );

Disclaimer

Make sure you pass the correct album parameter according to the platform

album: this.platform.is('ios') ? album.identifier : album.name;

iOS setup

  • ionic start my-cap-app --capacitor
  • cd my-cap-app
  • npm install β€”-save @capacitor-community/media
  • mkdir www && touch www/index.html
  • npx cap add ios
  • npx cap open ios
  • sign your app at xcode (general tab)

Tip: every time you change a native code you may need to clean up the cache (Product > Clean build folder) and then run the app again.

Android setup

  • ionic start my-cap-app --capacitor
  • cd my-cap-app
  • npm install β€”-save @capacitor-community/media
  • mkdir www && touch www/index.html
  • npx cap add android
  • npx cap open android

Now you should be set to go. Try to run your client using ionic cap run android --livereload.

Tip: every time you change a native code you may need to clean up the cache (Build > Clean Project | Build > Rebuild Project) and then run the app again.

Example

License

MIT

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Stew

πŸ’» πŸ“–

Zachary Keeton

πŸ’»

getAlbums()

getAlbums() => any

Returns: any


savePhoto(...)

savePhoto(options?: MediaSaveOptions | undefined) => any
Param Type
options MediaSaveOptions

Returns: any


createAlbum(...)

createAlbum(options?: MediaAlbumCreate | undefined) => any
Param Type
options MediaAlbumCreate

Returns: any


Interfaces

MediaAlbumResponse

Prop Type
albums {}

MediaAlbum

Prop Type
identifier string
name string
count number
type "smart" | "shared" | "user"

MediaSaveOptions

Prop Type
path string
album string

MediaAlbumCreate

Prop Type
name string

About

Capacitor plugin to activate extra media features

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •