← Alle utvidelser

Native utvidelse

KlugGallery

com.klug.gallery

INGEN APM NØDVENDIG. Last ned og bruk. Det blir ikke enklere enn dette. Bare oppdater Adobe AIR SDK. Trenger du hjelp, er vi her.

Lagre bilder og videoer fra AIR-appen din i enhetens galleri, på iOS og Android, med den minste tillatelsen systemet tilbyr.

iOS Android I produksjon Fra €19 / år · Kjøp

Oversikt

KlugGallery lagrer bilder og videoer fra AIR-appen din i enhetens bildegalleri: en BitmapData, for eksempel et øyeblikksbilde, eller en bilde- eller videofil som appen din har tatt opp eller lastet ned.

Den ber bare om det lagringen krever. På iPhone og iPad ber den om tilgang kun for å legge til, slik at appen din aldri ser brukerens bibliotek. På Android 10 og nyere krever lagringen ingen tillatelse i det hele tatt; på Android 6 til 9 ber KlugGallery om lagringstilgang under kjøring.

Filene havner der brukerne ser etter dem: i Bilder på iOS, og i Pictures/<app name> eller Movies/<app name> på Android.

KlugGallery brukes daglig i appene våre på iOS og Android, vårt proof of concept.

Funksjoner

  • Selvstendig: én ANE, ingen kjernebibliotek eller avhengige ANE-er å legge til
  • Lagre en BitmapData som PNG eller JPEG, med kvalitet og filnavn
  • Kopier en bilde- eller videofil til galleriet (mp4, mov og m4v lagres som videoer)
  • iOS: bildetilgang kun for å legge til, brukerens bibliotek forblir privat
  • Android 10 og nyere: ingen tillatelse nødvendig; Android 6 til 9: lagringstillatelse under kjøring
  • Egen albummappe per app på Android
  • Tillatelsesstatus og en snarvei til appinnstillingene etter et avslag
  • Én hendelse per resultat, med feilmeldingen når noe mislykkes

Støttede plattformer

iOS iPhone · iPad · Bilder, tilgang kun for å legge til
Android telefoner · nettbrett · sammenleggbare telefoner · MediaStore

På andre plattformer returnerer isSupported false, slik at den samme koden kan bli værende i en plattformuavhengig app.

Kom i gang

Legg utvidelsen til i applikasjonsbeskrivelsen din:

app.xml
<extensions>
    <extensionID>com.klug.gallery</extensionID>
</extensions>

iOS: forklar i InfoAdditions hvorfor appen din lagrer i Bilder:

app.xml · iPhone InfoAdditions
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Saves your snapshots and videos to Photos.</string>

Android: bare nødvendig for Android 6 til 9; nyere versjoner ignorerer den.

app.xml · Android manifest
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
                 android:maxSdkVersion="28"/>
<application>
    <activity android:name="com.klug.gallery.KlugGalleryPermissionActivity" android:exported="false"
              android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
</application>

Kodeeksempler

Tre komplette flyter, hentet fra API-et som kjører i appene våre. Hvert kall returnerer med en gang; resultatet kommer som en GalleryEvent. Full dokumentasjon →

1 · Lagre et øyeblikksbilde
Snapshot.as
import com.klug.gallery.Gallery;
import com.klug.gallery.GalleryEvent;
import flash.display.BitmapData;

var gallery:Gallery = Gallery.getInstance();
gallery.addEventListener( GalleryEvent.ADD_COMPLETE, function( e:GalleryEvent ):void {
    showToast( "Saved to your gallery" );   // your app function
});
gallery.addEventListener( GalleryEvent.ADD_ERROR, function( e:GalleryEvent ):void {
    trace( "could not save: " + e.status );   // the error message
});

function saveSnapshot( picture:BitmapData ):void
{
    if ( !gallery.isSupported ) return;
    // "png" or "jpg"; quality 0..1 counts for jpg
    gallery.addBitmapData( picture, "jpg", 0.9, "snapshot.jpg" );
}
2 · Lagre en innspilt video
Video.as
import flash.filesystem.File;

gallery.addEventListener( GalleryEvent.ADD_FILE_COMPLETE, function( e:GalleryEvent ):void {
    showToast( "Video saved" );
});
gallery.addEventListener( GalleryEvent.ADD_FILE_ERROR, function( e:GalleryEvent ):void {
    trace( "could not save the video: " + e.status );
});

// a File or a native path; mp4, mov and m4v are saved as videos, everything else as a photo
var clip:File = File.applicationStorageDirectory.resolvePath( "clips/last.mp4" );
gallery.addFile( clip );
3 · Be om tillatelse bare når den trengs
Permission.as
var pending:BitmapData;

function save( picture:BitmapData ):void
{
    var status:String = gallery.authorisationStatus();
    if ( status == Gallery.AUTHORISED || status == Gallery.LIMITED )
        gallery.addBitmapData( picture, "png" );
    else if ( status == Gallery.DENIED || status == Gallery.RESTRICTED )
        askToOpenSettings();                 // your dialog, then gallery.openDeviceSettings()
    else
    {
        pending = picture;                   // not asked yet: show the system prompt
        gallery.requestAuthorisation();
    }
}

gallery.addEventListener( GalleryEvent.AUTHORISATION, function( e:GalleryEvent ):void {
    if ( e.status == Gallery.AUTHORISED && pending != null )
        gallery.addBitmapData( pending, "png" );
    pending = null;
});

API-oversikt

Gallery.getInstance()Returnerer den ene instansen.
isSupportedTrue på iOS og Android, false andre steder.
authorisationStatus()AUTHORISED, DENIED, NOT_DETERMINED, SHOULD_EXPLAIN, RESTRICTED, LIMITED eller UNKNOWN.
requestAuthorisation()Viser systemforespørselen så lenge brukeren ikke har bestemt seg ennå. Svaret kommer som GalleryEvent.AUTHORISATION.
addBitmapData(bitmapData, format, quality, filename)Lagrer bildet som "png" eller "jpg". Resultat: ADD_COMPLETE eller ADD_ERROR.
addFile(file)Kopierer en bilde- eller videofil (File eller native sti) til galleriet. Resultat: ADD_FILE_COMPLETE eller ADD_FILE_ERROR.
canOpenDeviceSettingsTrue der appinnstillingene kan åpnes.
openDeviceSettings()Åpner innstillingssiden for appen din.

Hendelser

GalleryEvent: type angir hva som skjedde, status bærer detaljene.

GalleryEvent.AUTHORISATIONstatus = den nye tillatelsesstatusen
GalleryEvent.ADD_COMPLETEbildet ble lagret
GalleryEvent.ADD_ERRORstatus = feilmeldingen
GalleryEvent.ADD_FILE_COMPLETEfilen ble lagret
GalleryEvent.ADD_FILE_ERRORstatus = feilmeldingen

Kjøp KlugGallery

En årslisens for én AIR-applikasjon, med alle oppdateringer i 12 måneder. Etter betaling mottar du utvidelsen, ActionScript-biblioteket og dokumentasjonen på e-post, vanligvis innen én virkedag. Lisens og vilkår

Enkel
€19 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Ingen støtte
Kjøp Enkel
Standard
€149 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Svar på e-post innen 7 dager
Kjøp Standard
Prioritet
€299 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Svar på e-post innen 48 timer
Kjøp Prioritet
Skatter og avgifter beregnes ved kassen av Link (Stripe). Du oppgir applikasjons-ID-en til AIR-appen din under kassen.

Krav

AIR SDK51.x (HARMAN)
iOSiOS 13 eller nyere (tilgang kun for å legge til fra iOS 14)
AndroidAndroid 6.0 (API 23) eller nyere
iOS-descriptorNSPhotoLibraryAddUsageDescription i InfoAdditions
Android-descriptorTillatelsesaktivitet; lagringstillatelse for Android 6 til 9