-
- All Known Implementing Classes:
AndroidPicturesService
,DummyPicturesService
,IOSPicturesService
public interface PicturesService
The picture service allows the developer to load a picture from the device's local file system or from a picture taken directly using the device's camera.Example
ImageView imageView = new ImageView(); PicturesService.create().ifPresent(service -> { service.takePhoto(false).ifPresent(image -> imageView.setImage(image)); });
It also allows the developer to retrieve the original file and work with it as needed, for instance sharing it with the ShareService.
Example
ImageView imageView = new ImageView(); PicturesService.create().ifPresent(service -> { service.loadImageFromGallery().ifPresent(image -> imageView.setImage(image)); service.getImageFile().ifPresent(file -> ShareService.create().ifPresent(share -> share.share("image/jpeg", file))); });
Requirements
The service requires the following changes on Android and iOS.
However, these are handled automatically by the GluonFX plugin, when used.
Android Configuration
Create the file
/src/android/res/xml/file_provider_paths.xml
with the following content that allows access to the external storage:<?xml version="1.0" encoding="utf-8"?> <paths> <external-path name="external_files" path="." /> </paths>
The permission
android.permission.CAMERA
needs to be added as well as the permissionsandroid.permission.READ_EXTERNAL_STORAGE
andandroid.permission.WRITE_EXTERNAL_STORAGE
to be able to read and write images. Also aprovider
is required:<manifest package="${application.package.name}" ...> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application ...> ... <activity android:name="com.gluonhq.attach.android.PermissionRequestActivity" /> <provider android:name="android.support.v4.content.FileProvider" android:authorities="${application.package.name}.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_provider_paths" /> </provider> </application> </manifest>
iOS Configuration
The following keys are required:
<key>NSCameraUsageDescription</key> <string>Reason to use Camera Service (iOS 10+)</string> <key>NSPhotoLibraryUsageDescription</key> <string>Reason to use Photo Library (iOS 10+)</string> <key>NSPhotoLibraryAddUsageDescription</key> <string>Reason to use Photo Library (iOS 10+)</string>
- Since:
- 3.0.0
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Modifier and Type Method Description static java.util.Optional<PicturesService>
create()
Returns an instance ofPicturesService
.java.util.Optional<java.io.File>
getImageFile()
Retrieve the file associated to the original picture generated bytakePhoto(true)
or the file related to the picture selected withloadImageFromGallery()
.java.util.Optional<javafx.scene.image.Image>
loadImageFromGallery()
Retrieve an image from the device's gallery of imagesjava.util.Optional<javafx.scene.image.Image>
takePhoto(boolean savePhoto)
Use the device's camera to take a photo, and retrieve anImage
.
-
-
-
Method Detail
-
create
static java.util.Optional<PicturesService> create()
Returns an instance ofPicturesService
.- Returns:
- An instance of
PicturesService
.
-
takePhoto
java.util.Optional<javafx.scene.image.Image> takePhoto(boolean savePhoto)
Use the device's camera to take a photo, and retrieve anImage
. It can be saved as well in the device's public album.- Parameters:
savePhoto
- if true, image is saved to public album- Returns:
- an Optional with the Image or empty if it failed or it was cancelled
-
loadImageFromGallery
java.util.Optional<javafx.scene.image.Image> loadImageFromGallery()
Retrieve an image from the device's gallery of images- Returns:
- an Optional with the Image or empty if it failed or it was cancelled
-
getImageFile
java.util.Optional<java.io.File> getImageFile()
Retrieve the file associated to the original picture generated bytakePhoto(true)
or the file related to the picture selected withloadImageFromGallery()
.- Returns:
- an Optional with the File associated with the original image.
- Since:
- 3.8.0
-
-