Creare una galleria di immagini in Java per Android con Oracle Content Management headless
Introduzione
L'ambiente di sviluppo Android che utilizza Java o Kotlin può essere un potente strumento per creare applicazioni che utilizzano contenuti da Oracle Content Management. Armati del giusto modello di contenuto, è possibile creare rapidamente l'interfaccia utente Android che costituisce una tipica galleria di immagini.
In questa esercitazione, creeremo una semplice applicazione galleria di immagini per Android utilizzando Java sfruttando Oracle Content Management come CMS headless. Questo esempio per Android è disponibile su GitHub. L'esercitazione prevede tre passi:
- Preparare Oracle Content Management
- Creare la Galleria delle immagini in Android Studio
- Esecuzione dell'applicazione
Prerequisiti
Prima di procedere con questa esercitazione, si consiglia di leggere le seguenti informazioni:
Per seguire questa esercitazione, è necessario:
- una sottoscrizione a Oracle Content Management
- un account di Oracle Content Management con ruolo Amministratore contenuto;
- un computer Windows o Mac con strumenti Android configurati
- conoscenza esistente della programmazione Java e Android, poiché questa esercitazione presume che i concetti comuni di sviluppo Android utilizzino Java
Quello che stiamo costruendo
La nostra galleria di immagini sarà composta da diverse pagine di immagini di cibo e bevande disponibili in una caffetteria.
Le categorie sono nodi figlio di una tassonomia e possono essere organizzate in gerarchie. Per la nostra galleria di immagini, vogliamo mostrare tutte le categorie disponibili indipendentemente dall'organizzazione. A tale scopo, è innanzitutto necessario trovare le tassonomie disponibili, che utilizzano la classe GetTaxonomiesRequest della libreria di Oracle Content Management per impostare ed effettuare la richiesta.
Nota: l'implementazione di GetTaxonomiesRequest utilizza la risorsa API REST GET /published/api/v1.1/taxonomies.
Per ogni tassonomia trovata, viene visualizzato il relativo set di categorie. Questa operazione viene eseguita utilizzando la classe GetTaxonomyCategoriesRequest della libreria di Oracle Content Management.
Nota: l'implementazione di GetTaxonomyCategoriesRequest utilizza l'API REST GET /published/api/v1.1/taxonomies/{id}/categories.
Per ogni categoria di tassonomia restituita viene visualizzata un'anteprima costituita dal nome della categoria, dal numero di immagini nella categoria e dalle rendition di anteprima per le prime quattro immagini.
Nota: oltre a pubblicare gli asset digitali che si desidera visualizzare, è necessario pubblicare anche le tassonomie nel canale.
Per continuare, sarà necessario disporre di una sottoscrizione attiva a Oracle Content Management e accedere con il ruolo Amministratore contenuto.
Passo 1: Preparare Oracle Content Management
Questa esercitazione si basa sull'ipotesi di aver creato il repository degli asset e di disporre di un modello di contenuto vuoto, ovvero non è stato creato alcun tipo di contenuto.
Se non si dispone già di un'istanza di Oracle Content Management, vedere Avvio rapido per informazioni su come registrarsi per Oracle Cloud, eseguire il provisioning di un'istanza di Oracle Content Management e configurare Oracle Content Management come CMS headless.
Per questa esercitazione è necessario creare un modello di contenuto in due modi. È disponibile un packing di asset scaricabile che riempirà il repository vuoto con tipi di contenuto e contenuto associato oppure è possibile creare modelli di contenuto e contenuto personalizzati.
Per preparare Oracle Content Management:
- Creare un canale e un repository degli asset.
- Importa il pacchetto asset di campioni di Oracle Content Management
- Carica i tuoi asset immagine
- Crea tassonomie e collega a asset immagine
Creare un canale e un repository degli asset
È innanzitutto necessario creare un canale e un repository di asset in Oracle Content Management in modo da poter pubblicare il contenuto.
Per creare un canale e un repository di asset in Oracle Content Management, effettuare le operazioni riportate di seguito.
Accedere all'interfaccia Web di Oracle Content Management come amministratore.
Scegliere Contenuto nel menu di navigazione a sinistra, quindi scegliere Canali di pubblicazione dall'elenco di selezione nell'intestazione della pagina.
Nell'angolo in alto a destra fare clic su Crea per creare un nuovo canale. Assegnare un nome al canale 'OCEImageGalleryChannel' ai fini di questa esercitazione e mantenere pubblico l'accesso. Fare clic su Salva per creare il canale.
Scegliere Contenuto nel menu di navigazione a sinistra, quindi scegliere Repositori dall'elenco di selezione nell'intestazione della pagina.
Nell'angolo in alto a destra fare clic su Crea per creare un nuovo repository di asset. Assegnare un nome al repository degli asset 'OCEImageGalleryRepository' ai fini di questa esercitazione.
Nel campo Canali di pubblicazione selezionare OCEImageGalleryChannel per indicare a Oracle Content Management che il contenuto del repository OCEImageGalleryRepository può essere pubblicato nel canale OCEImageGalleryChannel. Al termine, fare clic su Salva.
Importa il pacchetto asset di campioni di Oracle Content Management
È possibile scaricare un pacchetto di asset campione preconfigurato di Oracle Content Management contenente tutti i tipi di contenuto e gli asset richiesti per questa esercitazione.
È possibile caricare una copia del contenuto in questa esercitazione da Oracle Content Management Samples Asset Pack. In questo modo sarà possibile sperimentare i tipi di contenuto e modificare il contenuto. Scaricare l'archivio del package di asset, OCESamplesAssetPack.zip, quindi estrarlo in una directory a scelta:
Scaricare Oracle Content Management Samples Asset Pack (OCESamplesAssetPack.zip) dalla pagina download di Oracle Content Management. Estrarre il file zip scaricato in una posizione sul computer. Dopo l'estrazione, questa posizione includerà un file denominato OCEImageGallery_data.zip.
Accedere all'interfaccia Web di Oracle Content Management come amministratore.
Scegliere Contenuto nel menu di navigazione a sinistra, quindi scegliere Repositori dall'elenco di selezione nell'intestazione della pagina. Selezionare OCEImageGalleryRepository e fare clic sul pulsante Importa contenuto nella barra delle azioni superiore.
Caricare OCEImageGallery_data.zip dal computer locale nella cartella Documenti.
Dopo il caricamento, selezionare OCEImageGallery_data.zip e fare clic su OK per importare il contenuto nel repository degli asset.
Dopo aver importato correttamente il contenuto, passare alla pagina Asset e aprire il repository OCEImageGalleryRepository. Tutte le immagini e gli elementi di contenuto correlati sono stati aggiunti al repository degli asset.
Fare clic su Seleziona tutto in alto a sinistra, quindi su Pubblica per aggiungere tutti gli asset importati al canale di pubblicazione creato in precedenza, OCEImageGalleryChannel.
Prima della pubblicazione, è necessario convalidare tutti gli asset. Aggiungere prima OCEImageGalleryChannel come canale selezionato, quindi fare clic sul pulsante Convalida.
Dopo aver convalidato gli asset, pubblicare tutti gli asset nel canale selezionato facendo clic sul pulsante Pubblica nell'angolo superiore destro.
Al termine, è possibile visualizzare nella pagina Asset la pubblicazione di tutti gli asset. (È possibile indicare l'icona sopra il nome dell'asset).
Dopo aver importato Oracle Content Management Samples Asset Pack, è possibile avviare la creazione della galleria di immagini in Android Studio.
Carica i tuoi asset immagine
Per questa esercitazione viene utilizzato un repository di asset denominato 'OCEImageGalleryRepository' per creare la home page per il sito della galleria. Questa home page è costituita dal titolo 'Galleria immagini' nonché dagli album di raccolta immagini con asset immagine interni.
Per aggiungere asset immagine al repository di asset galleria, procedere come segue.
Accedere all'interfaccia Web di Oracle Content Management.
Fare clic su Asset nel menu di navigazione a sinistra.
Aprire il repository OCEImageGalleryRepository.
Fare clic su Aggiungi nell'angolo superiore destro della pagina per aggiungere asset immagine al repository degli asset della galleria.
Caricare nuovi asset dal computer locale oppure scegliere asset esistenti già in Oracle Content Management.
Crea tassonomie e collega a asset immagine
È necessario creare una tassonomia in Oracle Content Management, quindi assegnare le categorie agli asset nel repository.
Per creare una tassonomia in Oracle Content Management, effettuare le operazioni riportate di seguito.
Accedere all'interfaccia Web di Oracle Content Management come amministratore.
Scegliere Contenuto nel menu di navigazione a sinistra, quindi scegliere Tassonomie dall'elenco di selezione nell'intestazione della pagina.
Nell'angolo superiore destro fare clic su Crea per creare una nuova tassonomia. Assegnare un nome al canale 'OCEImageGalleryTaxonomy' ai fini di questa esercitazione.
Fare clic su Crea.
A questo punto, creare la tassonomia aggiungendo le categorie. Fare clic su Aggiungi una categoria.
Assegnare un nome all'elemento della categoria padre 'Alimenti' e aggiungere le seguenti categorie figlio:
- Colazione
- Dessert
- Beve
- Panini
Fare clic su Done nella parte superiore destra della schermata.
Nella pagina Tassonomie selezionare la tassonomia OCEImageGalleryTaxonomy e fare clic su Promuovi nella barra delle azioni per renderla disponibile per l'uso nei repository di asset.
Quindi, modificare il repository OCEImageGalleryRepository per abilitare la tassonomia OCEImageGalleryTaxonomy per tale repository:
Accedere all'interfaccia Web di Oracle Content Management come amministratore.
Scegliere Contenuto nel menu di navigazione a sinistra, quindi scegliere Repositori dall'elenco di selezione nell'intestazione della pagina.
Selezionare e modificare il repository OCEImageGalleryRepository.
Nel campo Tassonomie selezionare OCEImageGalleryTaxonomy, in modo da poter assegnare le categorie di tale tassonomia agli asset del repository OCEImageGalleryRepository.
Fare clic su Salva.
Assegnare quindi le categorie della tassonomia a ogni asset immagine nel repository OCEImageGalleryRepository:
Accedere all'interfaccia Web di Oracle Content Management.
Fare clic su Asset nel menu di navigazione a sinistra.
Aprire il repository OCEImageGalleryRepository.
Selezionare uno o più asset immagine, fare clic su Altro nella barra delle azioni, quindi scegliere Categorie dal menu.
Nel pannello Categorie, fare clic su Aggiungi categoria. Cercare il nome della categoria nella barra di ricerca o selezionare una categoria dalla struttura gerarchica della tassonomia, quindi fare clic su Aggiungi per assegnare la categoria selezionata. È possibile assegnare più categorie a un cespite.
Al termine dell'assegnazione delle tassonomie a tutti gli asset immagine, selezionare tutti gli asset nel repository e pubblicarli nel canale OCEImageGalleryChannel.
Passo 2: Creare la galleria di immagini in Android Studio
Per utilizzare i contenuti di Oracle Content Management nell'applicazione Android, è possibile utilizzare l'esempio della galleria di immagini Android, disponibile come repository open source in GitHub.
Nota: l'uso dell'esempio di Android è facoltativo e viene utilizzato in questa esercitazione per iniziare rapidamente. Inoltre, puoi creare la tua applicazione.
Per creare la galleria di immagini in Android Studio:
- Duplicare il repository di esempio, Android SDK e pubblicare il kit SDK in locale
- Apri il campione Android in Android Studio
- Utilizzare l'interfaccia API REST di Oracle Content Management per recuperare il contenuto
Duplicare il repository di esempio, l'SDK Android e pubblicare l'SDK in locale
L'esempio della galleria Android è disponibile come repository open source in GitHub.
Sarà innanzitutto necessario duplicare l'esempio da GitHub al computer locale, nonché l'SDK Android da GitHub, se non lo si è già fatto.
Una volta ottenuto il codice di esempio e l'SDK, per poter utilizzare l'SDK Android nel progetto di esempio, è necessario creare e pubblicare l'SDK nel repository Maven locale in modo che possa essere utilizzato dal progetto di esempio. Aprire il progetto SDK Android in Android Studio ed eseguire il task publishToMavenLocal
per creare e pubblicare l'SDK nel repository Maven locale.
Apri il campione Android in Android Studio
Come per qualsiasi applicazione Android, dovrai importarla in Android Studio in modo da poterlo creare ed eseguire da lì in un emulatore o dispositivo Android. Il codice di esempio è già preconfigurato con il server e il canale di pubblicazione utilizzati per ottenere i dati per l'applicazione galleria.
Utilizzare l'interfaccia API REST di Oracle Content Management per recuperare il contenuto
L'API REST per la consegna del contenuto fornisce l'accesso agli asset pubblicati in Oracle Content Management. Gli asset pubblicati includono gli elementi di contenuto e gli asset digitali, nonché le relative rendition. Ora possiamo utilizzare l'API REST per la gestione dei contenuti per recuperare i contenuti in modo da renderli visibili nella nostra applicazione galleria.
Il file src/.../samples/gallery/MainActivity.java dispone di una funzione per la creazione dell'oggetto ContentDeliveryClient, utilizzato dagli oggetti della richiesta per effettuare chiamate all'API REST. La funzione riportata di seguito è una versione semplificata della funzione dall'applicazione di esempio che mostra i valori utilizzati.
void createDeliveryClient() {
// inti and customize the SDK settings
= new ContentSettings();
ContentSettings contentSettings
// initialize the cache settings (optional configured via settings in sample)
.setCacheSettings(new CacheSettings(context.getCacheDir()));
contentSettings
// set the host and channel token
String channelToken = "e0b7b1e6421e78189345448deaddb091";
String host = "https://headless.mycontentdemo.com";
// create client API we'll use in request objects to make SDK calls
= ContentSDK.createDeliveryClient(
deliveryClient , channelToken, contentSettings);
host}
Richiedi dati home page mediante Oracle Content SDK
Nota: la sequenza di chiamate SDK per la home page iniziale si trova in GalleryHomePageRepository.java.
La pagina iniziale richiede diverse chiamate dati prima che la pagina possa essere visualizzata correttamente:
- In primo luogo, vengono caricate le tassonomie per il token canale fornito in precedenza.
- Per ogni tassonomia restituita, vengono visualizzate tutte le categorie nella tassonomia.
- Per ogni categoria restituita, viene visualizzato l'elenco degli asset in tale categoria.
- Vengono scaricati gli URL immagine per le rendition di media e miniatura per i primi quattro elementi di ogni categoria.
Il punto di accesso per il recupero dati iniziale è il metodo fetchHomePageData()
in GalleryHomePageRepository.java. Questo metodo eseguirà una serie di chiamate SDK sincrone su un thread separato e poi restituirà il risultato in modo asincrono tramite un callback.
I dati delle tassonomie iniziali vengono recuperati utilizzando la classe GetTaxonomiesRequest
e il metodo fetch() come mostrato di seguito.
// create request to get list of taxonomies, limiting the number of results to 10 max
= new GetTaxonomiesRequest(deliveryClient).limit(10);
GetTaxonomiesRequest request
// get the list of taxonomies synchronously
<TaxonomyList> response = request.fetch(); ContentResponse
Tutte le API utilizzano il pattern di creazione di un oggetto di richiesta con l'oggetto ContentDeliveryClient
come parametro.
Il metodo di creazione limit(<value>)
è disponibile perché GetTaxonomiesRequest
estende la classe PaginatedListRequest
comune utilizzata per qualsiasi richiesta che ottiene una lista di dati.
Qui utilizziamo request.fetch()
perché abbiamo già creato un thread separato per effettuare più chiamate SDK in sequenza. In un'altra sezione c'è un esempio di utilizzo di una chiamata SDK asincrona.
Una volta completata la richiesta, verrà restituito un oggetto di tipo ContentResponse<TaxonomyList>
. Se response.isSuccess()
è vero, l'elenco delle tassonomie TaxonomyList
proviene dal metodo getResult()
.
Successivamente, è necessario ottenere un elenco delle categorie di tassonomia disponibili. Siamo ancora nel thread separato creato per le chiamate SDK, quindi la chiamata successiva è anche una chiamata sincrona per ottenere l'elenco delle categorie di tassonomia in base all'ID della tassonomia.
// get list of taxonomy categories based on the taxonomy id
=
GetTaxonomyCategoriesRequest categoriesRequest new GetTaxonomyCategoriesRequest(deliveryClient, taxonomy.getId());
// get list synchronously
<TaxonomyCategoryList> response = categoriesRequest.fetch();
ContentResponse
// get the list from the response (assuming successful)
.getItems = response.getResult(); TaxonomyCategoryList categoryList
Per ogni categoria, è necessario seguire lo stesso processo generale per ottenere l'elenco degli asset associati alla categoria effettuando una richiesta di ricerca per trovare gli asset corrispondenti per l'ID nodo categoria.
// go through each category to get list of assets for that category
for(TaxonomyCategory category : categoryList.getItems()) {
// setup search request to match "Image" type and the category node id
= new SearchAssetsRequest(deliveryClient)
SearchAssetsRequest assetsRequest .type(AssetType.TYPE_ASSET_IMAGE)
.taxonomyCategoryNodeId(category.getId());
// synchronous request to get matching assets
<AssetSearchResult> searchResponse = assetsRequest.fetch();
ContentResponse
// search result from the response
= searchResponse.getResult();
AssetSearchResult searchResult
// get the list of digital assets
List<DigitalAsset> digitalAssetList = searchResult.getDigitalAssets();
}
Infine, per ciascuno dei primi quattro asset di una categoria, genereremo l'URL per scaricare la copia trasformata media per l'immagine di grandi dimensioni e la copia di anteprima per le tre immagini più piccole.
L'URL può essere utilizzato per eseguire il rendering dell'immagine utilizzando la libreria di immagini Android preferita, ma il campione utilizza la libreria open source comune Glide.
// (the sample code verifies that there are at least 4 images in the list)
// get the medimum rendition image url for the first main image from the list.
String mainImageUrl = digitialAssetList.get(0).getRenditionUrl(RenditionType.Medium);
// example code using Glide to render the main image into an ImageView
.with(context).load(mainImageUrl).into(mainImageView);
Glide
// get the thumbnail rendition for the other 3 images
String smallImageUrl1 = digitialAssetList.get(1).getRenditionUrl(RenditionType.Thumbnail);
String smallImageUrl2 = digitialAssetList.get(2).getRenditionUrl(RenditionType.Thumbnail);
String smallImageUrl3 = digitialAssetList.get(3).getRenditionUrl(RenditionType.Thumbnail);
// load small images using Glide, etc...
Recupera anteprima pagina Galleria e immagine
La pagina contenente le anteprime di tutte le immagini nella categoria utilizza una richiesta asincrona per richiedere tutte le immagini che corrispondono all'ID nodo categoria.
La chiamata asincrona viene eseguita con un metodo di callback specificato per la risposta, come mostrato di seguito. La versione completa di questo codice è nel file GalleryPhotosFragment.java.
public void fetchDigitalAssets() {
// search for all matching image assets for the specific category node id
= new SearchAssetsRequest(getDeliveryClient())
SearchAssetsRequest assetsRequest .type(AssetType.TYPE_ASSET_IMAGE)
.taxonomyCategoryNodeId(categoryNodeId);
// fetch the results asynchronously and call the specified method when done
.fetchAsync(this::showDigitalAssets);
assetsRequest
}
public void showDigitalAssets(ContentResponse<AssetSearchResult> response) {
// handle errors if response.isSuccess is false otherwise process results...
}
Quando si fa clic su un'immagine specifica, l'anteprima di tutte le dimensioni utilizza la rendition nativa del file.
Dato un oggetto digitalAsset
, si ottiene l'URL di rendition nativo e si effettua il rendering in Glide come questo:
String fullSizeImageUrl = digitalAsset.getRenditionUrl(RenditionType.Native);
// example using Glide to render the main image into an ImageView
.with(context).load(fullSizeImageUrl).into(fullSizeImageView); Glide
Passo 3: esecuzione dell'applicazione
Ora che abbiamo costruito la nostra applicazione galleria Android, dobbiamo testarla in un emulatore mobile o dispositivo da Android Studio in modo da poter eseguire il debug di qualsiasi problema e visualizzare in anteprima l'applicazione prima che diventi attiva.
Conclusione
In questa esercitazione è stata creata un'applicazione Android per la galleria di immagini, che è possibile reperire in Github. Questa applicazione utilizza Oracle Content Management come CMS headless. Dopo aver impostato e configurato Oracle Content Management con un canale di contenuto pubblicato per l'esercitazione sul sito della galleria, l'applicazione è stata eseguita per recuperare il contenuto richiesto.
Scopri i concetti importanti di Oracle Content Management nella documentazione.
Nella pagina Esempi di Oracle Content Management di Oracle Help Center è possibile trovare altri esempi come questo.
Creare una galleria di immagini in Java per Android con Oracle Content Management headless
F81109-01
Maggio 2023
Copyright © 2021, 2023, Oracle and/or its affiliates.
Autore principale: Oracle Corporation