Skip to main content

Correggere l’orientamento delle foto scattate con iPhone e/o Android con .NET C#

Se siete degli sviluppatori di app e/o vi capita di lavorare spesso con immagini che contengono fotografie scattate da cellulari e/o tablet conoscerete senz’altro il classico problema delle foto “orientate male”, ovvero scattate con il dispositivo girato in una posizione particolare: la particolarità di queste foto è che tendono a visualizzarsi correttamente sul telefono e/o tablet, ma non sulla maggior parte degli applicativi e/o software desktop dove appaiono, per l’appunto, girate di 90, 180 o 270 gradi rispetto alla loro posizione ideale.

(altro…)

 

Suoneria e notifiche non funzionanti su Samsung Galaxy S5 dopo l’aggiornamento a Android Lollipop

Il vostro Galaxy S5 ha perso l’uso della parola in conseguenza dell’ultimo aggiornamento del sistema operativo di casa Google? Niente paura! Si tratta di un problema noto, comune a molti utenti e dovuto a una delle molte novità di Android 5, meglio noto come Lollipop: un cambiamento migliorativo della cosiddetta modalità blocco (in inglese: blocking mode), già presente nelle scorse versioni del sistema. Nelle release precedenti questa funzionalità consentiva di bloccare la suoneria e le notifiche per tutti i contatti della rubrica: l’icona corrispondente, un cerchio con una linea orizzontale al suo interno, faceva la sua comparsa in alto a sinistra.

La nuova impostazione introdotta con Lollipop consente di attivare la cosiddetta modalità priorità (in inglese: priority mode) che equivale grossomodo a una modalità blocco attiva soltanto per i contatti non presenti nella lista dei Preferiti: in tal modo il dispositivo reagirà soltanto alle chiamate e le notifiche provenienti da una ristretta cerchia di persone importanti.

 

android-lollipop-default-notifications

 

Una possibilità indubbiamente utile, se non fosse che il sistema tende ad attivarla automaticamente a seguito di alcuni aggiornamenti: il risultato è che lo smartphone diventa improvvisamente muto, senza peraltro fornire indicazioni adeguate sulle cause del malfunzionamento.

(altro…)

 

Android: come estendere una ImageView in larghezza adattando l’altezza in modo proporzionale

Può capitare, sviluppando una app per dispositivi Android, di avere l’esigenza di estendere le dimensioni di una immagine in modo da farle coprire orizzontalmente tutto lo schermo disponibile, mantenendo inalterate le sue proporzioni. Questo significa che l’altezza dell’immagine suddetta dovrà adattarsi in modo proporzionale alla larghezza, così da mantenere inalterato l’aspect ratio originario.

Il problema

Ottenere questo risultato in HTML è estremamente semplice: è sufficiente impostare la width dell’immagine in questione al 100%, omettendo qualsiasi informazione in merito alla height e lasciando così che sia il browser a determinarla in modo proporzionale. Sfortunatamente, in Android la questione è più complessa: nell’elemento ImageView altezza e larghezza sono due parametri obbligatori, che è possibile valorizzare con un numero fisso in px, dp o altro, in base al contenitore mediante il comando match_parent oppure in base al contenuto mediante il comando wrap_content. In tutti e tre i casi non è possibile definire un comportamento dell’altezza realmente proporzionale rispetto al contenuto. Il meglio che è possibile fare utilizzando una normale ImageView è impostare gli attributi android:layout_widthandroid:layout_height e android:scaleType in modo che si adattino automaticamente alle dimensioni del layout contenitore nel seguente modo:

Questo metodo consente di ottenere il risultato sperato nella maggior parte degli scenari, ma ha il grande difetto di non funzionare allo stesso modo su tutti i dispositivi Android e con tutte le immagini.

La soluzione

Chi ha detto che è necessario utilizzare una normale ImageView? Questo interessantissimo post su StackOverflow mostra come è possibile estendere una View per ottenere un risultato analogo a quello che stiamo cercando. Partendo da quell’esempio possiamo quindi sviluppare una estensione della classe ImageView che dimensioni automaticamente l’altezza sulla base del ridimensionamento della larghezza in modo proporzionale rispetto all’aspect ratio dell’immagine originaria.

Questo il codice completo:

 

E questa è l’implementazione all’interno di un layout XML:

Ricordate, in entrambi gli esempi, di sostituire com.my.namespace con il  namespace utilizzato nella vostra applicazione.

Felice sviluppo!

 

 

Android SDK: quando Eclipse si blocca su “Resolving error markers” o “Android SDK Content Loader”

Gli sviluppatori Android che non sono ancora passati ad Android Studio e continuano a lavorare su piattaforma Eclipse sono spesso costretti ad avere a che fare con il problema del mancato caricamento del workspace, che solitamente si blocca in conseguenza di uno di questi due task: Android SDK: Resolving error markers…Android SDK Content Loader, che non di rado restano fermi al 0% o al 100% senza dare all’utente la possibilità di interagire con la GUI.

Nella maggior parte dei casi per risolvere questo problema è sufficiente eseguire Eclipse con le opzioni -clean e -refresh nel seguente modo:

Vista la frequenza con cui questo accade è consigliabile creare un batch file apposito. E’ sufficiente dargli un nome (il mio si chiama eclipse.clean.refresh.bat) e inserirlo nella cartella principale di Eclipse:

Quando questo comando non basta è necessario adottare un approccio più aggressivo, eliminando la cache che i componenti dell’SDK creano nella cartella .android situata nel profilo dell’utente corrente. Il batch file diventa quindi il seguente:

Prima di eseguire questi batch file assicuratevi che l’applicazione Eclipse sia chiusa: se necessario, chiudetela in modo forzato tramite Task Manager.

 

Abilitare il download di un file con estensione .APK tramite IIS

Nello sviluppo di una applicazione Android capita spesso di trovarsi a fornire al cliente e/o ai beta-tester una URL per scaricare un .APK  non presente – o non ancora pubblicato – sul Google Store Market. Siccome la maggior parte dei web server (tra cui IIS) non supportano nativamente il MIME-type corrispondente all’estensione .apk, motivo per cui in molti casi la URL che forniremo presenterà un errore 404 – Page Not Found. Per risolvere il problema è sufficiente aggiungere il MIME-type corrispondente ai pacchetti di  applicazione Android nel seguente modo:

  • Aprite il pannello di gestione IIS.
  • Posizionatevi, nell’elenco a sinistra, sulla entry corrispondente alla configurazione generale di IIS (pt. 1 in figura) così da rendere le modifiche che faremo valide per tutti i siti passati, frequenti e futuri. Nel caso in cui si voglia gestire il MIME-type .apk limitatamente a un singolo sito, posizionatevi invece sulla entry corrispondente al sito in questione.
  • Fate click sulla icona “MIME Types” nell’elenco di icone che si aprirà a destra. Vi si aprirà un elenco dei MIME-type attualmente supportati.
  • Fate click su “Add…” in alto a destra (pt. 2 in figura) e aggiungete il seguente MIME-type (pt. 3 in figura):
    • Estensione: .apk (assicuratevi di includere il punto)
    • MIME-type: application/vnd.android.package-archive

(click sull’immagine per ingrandire)

Inutile dire che questa semplice operazione può essere ripetuta per abilitare il download di file aventi qualsiasi estensione.

Se non utilizzate l’interfaccia di gestione IIS e/o preferite operare direttamente a livello di web.config potete seguire le istruzioni descritte nell’apposita pagina ufficiale relativa alla configurazione di IIS.

EDIT: Nel caso in cui abbiate bisogno di abilitare il download anche per i file App per iOS (estensione .ipa) vi consiglio di leggere questo articolo. Se invece volete abilitare il download dei file per Windows Phone (estensione .xap) vi consiglio di leggere questo articolo.