← Kaikki laajennukset

Natiivilaajennus

KlugGallery

com.klug.gallery

APM EI OLE TARPEEN. Lataa ja nauti. Yksinkertaisempaa ei voi olla. Päivitä vain Adobe AIR SDK. Jos tarvitset apua, olemme täällä.

Tallenna valokuvia ja videoita AIR-sovelluksestasi laitteen galleriaan iOS:llä ja Androidilla, pienimmällä järjestelmän tarjoamalla luvalla.

iOS Android Tuotantokäytössä Alkaen €19 / vuosi · Osta

Yleiskatsaus

KlugGallery tallentaa kuvia ja videoita AIR-sovelluksestasi laitteen kuvagalleriaan: BitmapData-kuvan, kuten kuvakaappauksen, tai valokuva- tai videotiedoston, jonka sovelluksesi on tallentanut tai ladannut.

Se pyytää vain sen, mitä tallennus vaatii. iPhonella ja iPadilla se pyytää pelkän lisäysoikeuden, joten sovelluksesi ei koskaan näe käyttäjän kuvakirjastoa. Android 10:ssä ja uudemmissa tallennus ei vaadi mitään lupaa; Android 6–9:ssä KlugGallery pyytää tallennustilan käyttöoikeutta ajon aikana.

Tiedostot päätyvät sinne, mistä käyttäjät niitä etsivät: iOS:llä Kuvat-appiin ja Androidilla kansioon Pictures/<app name> tai Movies/<app name>.

KlugGallery on päivittäisessä käytössä sovelluksissamme iOS:llä ja Androidilla, todisteenamme toimivuudesta.

Ominaisuudet

  • Itsenäinen: yksi ANE, ei ydinkirjastoa tai riippuvaisia ANE-laajennuksia lisättäväksi
  • BitmapData-kuvan tallennus PNG- tai JPEG-muodossa, laadun ja tiedostonimen kera
  • Valokuva- tai videotiedoston kopiointi galleriaan (mp4, mov ja m4v tallennetaan videoina)
  • iOS: pelkkä lisäysoikeus kuviin, käyttäjän kuvakirjasto pysyy yksityisenä
  • Android 10 ja uudemmat: lupaa ei tarvita; Android 6–9: tallennustilan lupa ajon aikana
  • Oma albumikansio kullekin sovellukselle Androidilla
  • Luvan tila ja pikalinkki sovelluksen asetuksiin epäämisen jälkeen
  • Yksi tapahtuma tulosta kohden, virheilmoituksen kera, jos jokin epäonnistuu

Tuetut alustat

iOS iPhone · iPad · Kuvat, pelkkä lisäysoikeus
Android puhelimet · tabletit · taittuvat laitteet · MediaStore

Muilla alustoilla isSupported palauttaa false, joten sama koodi voi pysyä monialustaisessa sovelluksessa.

Aloitus

Lisää laajennus sovelluksesi descriptoriin:

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

iOS: kerro InfoAdditions-osiossa, miksi sovelluksesi tallentaa Kuviin:

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

Android: tarvitaan vain Android 6–9:lle; uudemmat versiot ohittavat sen.

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>

Koodiesimerkit

Kolme täydellistä esimerkkiä rajapinnasta, joka pyörii sovelluksissamme. Jokainen kutsu palaa heti; tulos saapuu GalleryEvent-tapahtumana. Koko dokumentaatio →

1 · Kuvakaappauksen tallennus
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 · Nauhoitetun videon tallennus
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 · Luvan pyytäminen vain tarvittaessa
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;
});

Rajapintayleiskatsaus

Gallery.getInstance()Palauttaa yksittäisen instanssin.
isSupportedTrue iOS:llä ja Androidilla, muualla false.
authorisationStatus()AUTHORISED, DENIED, NOT_DETERMINED, SHOULD_EXPLAIN, RESTRICTED, LIMITED tai UNKNOWN.
requestAuthorisation()Näyttää järjestelmän kehotteen, jos käyttäjä ei ole vielä päättänyt. Vastaus saapuu GalleryEvent.AUTHORISATION-tapahtumana.
addBitmapData(bitmapData, format, quality, filename)Tallentaa kuvan muodossa "png" tai "jpg". Tulos: ADD_COMPLETE tai ADD_ERROR.
addFile(file)Kopioi valokuva- tai videotiedoston (File tai natiivipolku) galleriaan. Tulos: ADD_FILE_COMPLETE tai ADD_FILE_ERROR.
canOpenDeviceSettingsTrue, jos sovelluksen asetukset voidaan avata.
openDeviceSettings()Avaa sovelluksesi asetussivun.

Tapahtumat

GalleryEvent: type kertoo, mitä tapahtui, status sisältää yksityiskohdat.

GalleryEvent.AUTHORISATIONstatus = luvan uusi tila
GalleryEvent.ADD_COMPLETEkuva tallennettiin
GalleryEvent.ADD_ERRORstatus = virheilmoitus
GalleryEvent.ADD_FILE_COMPLETEtiedosto tallennettiin
GalleryEvent.ADD_FILE_ERRORstatus = virheilmoitus

Osta KlugGallery

Vuosilisenssi yhdelle AIR-sovellukselle, kaikki päivitykset 12 kuukauden ajan. Maksun jälkeen saat laajennuksen, ActionScript-kirjaston ja dokumentaation sähköpostitse, yleensä yhden arkipäivän kuluessa. Lisenssi ja ehdot

Perus
€19 / vuosi
  • Lisenssi yhdelle AIR-sovellukselle
  • Kaikki päivitykset 12 kuukauden ajan
  • Ei tukea
Osta Perus
Vakio
€149 / vuosi
  • Lisenssi yhdelle AIR-sovellukselle
  • Kaikki päivitykset 12 kuukauden ajan
  • Vastaus sähköpostitse 7 päivän kuluessa
Osta Vakio
Prioriteetti
€299 / vuosi
  • Lisenssi yhdelle AIR-sovellukselle
  • Kaikki päivitykset 12 kuukauden ajan
  • Vastaus sähköpostitse 48 tunnin kuluessa
Osta Prioriteetti
Link (Stripe) laskee verot kassalla. Syötät AIR-sovelluksesi sovellustunnuksen kassalla.

Vaatimukset

AIR SDK51.x (HARMAN)
iOSiOS 13 tai uudempi (pelkkä lisäysoikeus iOS 14:stä alkaen)
AndroidAndroid 6.0 (API 23) tai uudempi
iOS-descriptorNSPhotoLibraryAddUsageDescription InfoAdditions-osiossa
Android-descriptorLupa-aktiviteetti; tallennustilan lupa Android 6–9:lle