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
Muilla alustoilla isSupported palauttaa false, joten sama koodi voi pysyä monialustaisessa sovelluksessa.
Aloitus
Lisää laajennus sovelluksesi descriptoriin:
<extensions>
<extensionID>com.klug.gallery</extensionID>
</extensions>
iOS: kerro InfoAdditions-osiossa, miksi sovelluksesi tallentaa Kuviin:
<key>NSPhotoLibraryAddUsageDescription</key> <string>Saves your snapshots and videos to Photos.</string>
Android: tarvitaan vain Android 6–9:lle; uudemmat versiot ohittavat sen.
<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 →
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" ); }
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 );
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. |
| isSupported | True 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. |
| canOpenDeviceSettings | True, jos sovelluksen asetukset voidaan avata. |
| openDeviceSettings() | Avaa sovelluksesi asetussivun. |
Tapahtumat
GalleryEvent: type kertoo, mitä tapahtui, status sisältää yksityiskohdat.
| GalleryEvent.AUTHORISATION | status = luvan uusi tila |
| GalleryEvent.ADD_COMPLETE | kuva tallennettiin |
| GalleryEvent.ADD_ERROR | status = virheilmoitus |
| GalleryEvent.ADD_FILE_COMPLETE | tiedosto tallennettiin |
| GalleryEvent.ADD_FILE_ERROR | status = 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
- Lisenssi yhdelle AIR-sovellukselle
- Kaikki päivitykset 12 kuukauden ajan
- Ei tukea
- Lisenssi yhdelle AIR-sovellukselle
- Kaikki päivitykset 12 kuukauden ajan
- Vastaus sähköpostitse 7 päivän kuluessa
- Lisenssi yhdelle AIR-sovellukselle
- Kaikki päivitykset 12 kuukauden ajan
- Vastaus sähköpostitse 48 tunnin kuluessa
Vaatimukset
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 13 tai uudempi (pelkkä lisäysoikeus iOS 14:stä alkaen) |
| Android | Android 6.0 (API 23) tai uudempi |
| iOS-descriptor | NSPhotoLibraryAddUsageDescription InfoAdditions-osiossa |
| Android-descriptor | Lupa-aktiviteetti; tallennustilan lupa Android 6–9:lle |