Gestire dinamicamente il Pulsante Azione di iPhone 15 Pro in base all’orientamento del device

Leggi questo articolo grazie alle donazioni di Donatello Mancuso, Lorenzo Rossini, Marco Riva, Francesco Fantini, Mattia Bonoli, Andrea Draghetti.
♥ Partecipa anche tu alle donazioni: sostieni SaggiaMente, sostieni le tue passioni!

Una delle novità dei nuovi iPhone 15 Pro (recensione) è il nuovo Pulsante Azione (o Action Button) che ha sostituito lo storico switch per il silenzioso. Il suo funzionamento si controlla dalle Impostazioni dello smartphone, dove possiamo scegliere essenzialmente una di queste voci:

  • Silenzioso / Suoneria Attiva
  • Full Immersion, con selezione di quale attivare
  • Fotocamera, con selezione tra foto, video, selfie, ritratto, ritratto selfie
  • Torcia On / Off
  • Memo Vocale
  • Comandi, con scelta di una cartella o di un singolo comando
  • Accessibilità, con scelta della funzione da attivare

Tutte le scelte possono essere interessanti in base alle proprie abitudini d’uso dello smartphone, ma personalmente ho concentrato l’attenzione sulla possibilità di usare Comandi. Dopotutto il silenzioso è comodo, però tendo ad averlo sempre attivo e se proprio lo devo togliere c’è il toggle rapido nel contro di controllo (solo sui nuovi iPhone 15 Pro).

La prima cosa che ho fatto è stata quella di creare una cartella chiamata “Action Button” contenente 4 comandi, poi ho attivato come opzione per il Pulsante Azione “Mostra cartella…” ed ho selezionato “Action Button”. In questo modo mi viene mostrato un piccolo menu grafico nella parte alta del display con 4 icone, una per ogni comando (di cui ho personalizzato l’icona).

La soluzione era interessante, ma volevo fare di più. Cioè volevo rendere dinamico il comportamento del pulsante in base alle diverse condizioni in cui mi trovavo. Le possibilità per farlo sono tante, ad esempio si può leggere lo stato di Full Immersion attivo e fare cose diverse in base a quello. Idea simpatica, ma richiedeva sempre un passaggio a monte, mentre io volevo un comportamento dinamico che fosse in cima a tutto e controllasse esso stesso gli stati di Full Immersion.

Per ottenere questo risultato ho prima di tutto installato l’app gratuita Actions, che non ha una propria interfaccia ma aggiunge tutta una serie di azioni utili a Comandi. Attenzione che al primo avvio potreste non vederle, ricordo bene di aver dovuto riavviare lo smartphone prima che la lista si aggiornasse includendo quelle offerte da Actions. L’app c’è anche su Mac, dove conviene installarla se poi si vuole avere la possibilità di editare i comandi anche da lì.

L’azione su cui ho deciso di basare il mio comando – che ho chiamato “Smart Action Button” – è Get Device Orientation, ovvero leggi l’orientamento del dispositivo. All’interno dell’iPhone c’è un giroscopio che gli permette di sapere sempre in quale posizione si trova nello spazio e l’azione in questione può restituire diversi valori:

  • Portrait: in verticale, con lo schermo frontale a voi
  • PortraitUpsideDo: in verticale, ma testa in più
  • LandscapeLeft: in orizzontale, con la Dynamic Island a sinistra
  • LandscapeRight: in orizzontale, con la Dynamic Island a destra
  • FaceUp: con lo schermo verso l’alto
  • FaceDown: con lo schermo verso il basso (ad esempio poggiato sulla scrivania)
  • Unknown: indefinito, ovvero nessuna delle precedenti

Purtroppo nell’app Comandi non esiste una struttura switch/case, per la quale si può leggere una variabile e definire cosa fare per ogni condizione, quindi si deve optare per una serie consecutiva di if/then, utilizzando l’azione Se. Quindi ho messo in cima al comando l’azione Get Device Orientation e poi iniziato a valutare tutte le situazioni iniziando dalla prima:

Se [Device Orientation] è [FaceUp]

Comandi creerà in automatico anche un Altrimenti (che sarebbe il tipico else) e chiuderà con Fine del blocco "se" (ovvero End If). La cosa più logica da fare sarebbe quella di inserire i successivi Se all’interno dell’Altrimenti precedente, andando essenzialmente ad annidarli. Tuttavia, così vengono indentati e non è bellissimo da vedere, oltre che risultare più scomodo da lavorare visto che più si avanza nello script e più aumenta lo spazio vuoto a sinistra. Il risultato sarebbe grosso modo questo:

Se [Device Orientation] è [FaceUp]
    Azione da eseguire
Altrimenti
    Se [Device Orientation] è [FaceDown]
        Azione da eseguire
    Altrimenti
        Se [Device Orientation] è [Portrait]
            Azione da eseguire
        Altrimenti
             Se...
        Fine del blocco "se"
    Fine del blocco "se"
Fine del blocco "se"

Considerando che la variabile di orientamento non può assumere più valori insieme e che il comando viene eseguito molto velocemente, mi sono concesso di mettere tutti i Se in parallelo, anche se non è il massimo dal punto di vista concettuale. Questo perché l’azione continuerà a controllare anche gli altri Se successivi a quello che ha dato risultato positivo.

Facendo alcune prove non ho notato comunque nessun problema, ma per seguire una logica più rigorosa ho aggiunto una azione Interrompi il comando rapido prima di ogni Fine del blocco "se", così appena trova una corrispondenza compie l’azione richiesta e non prosegue nello script. Ovviamente, se si segue questa strada non ha senso tenere tutti gli Altrimenti, che si possono cancellare premendo sulla X che appare alla loro destra. Inoltre, è meglio inserire il risultato del Get Device Orientation in una variabile all’inizio del comando, così si farà riferimento a quella in tutti i successivi Se. Il risultato sarà grossomodo questo:

Get Device Orientation
Imposta la variabile [Orientation] su [Device Orientation]
Se [Orientation] è [FaceUp]
    Azione da eseguire
    Interrompi il comando rapido
Fine del blocco "se"
Se [Orientation] è [FaceDown]
    Azione da eseguire
    Interrompi il comando rapido
Fine del blocco "se"
Se [Orientation] è [Portrait]
    Azione da eseguire
    Interrompi il comando rapido
Fine del blocco "se"
Se...

Avendo identificato una struttura di base, non resta che decidere cosa far fare al Pulsante Azione in base ad ogni posizione dell’iPhone. Vi dico quali sono state le mie scelte:

  • FaceUp: mostra un menu con una serie di sotto azioni tra cui scegliere
  • FaceDown: attiva la Full Immersion non disturbare
  • Portrait: attiva la fotocamera in modalità Selfie
  • LandscapeLeft: attiva l’app Blackmagic Cam per girare video
  • LandscapeRight: attiva l’app fotocamera in modalità Foto

Non ho ancora associato nulla alla posizione PortraitUpsideDo, che corrisponde a guardare lo schermo frontalmente con la Dynamic Island in basso, semplicemente perché è una posizione da cui non saprei effettivamente cosa fare di utile. E ho lasciato anche libero Unknown, che ritengo utile più che altro per verifica di errori visto che non riesco a farlo scattare. A limite si potrebbe mettere un messaggio se si verifica, giusto per analisi avanzata del Comando, ma al momento non l’ho ritenuto necessario.

Una cosa interessante riguarda il menu che ho creato per l’orientamento FaceUp. Inizialmente pensavo di aprire semplicemente la cartella di comandi che avevo creato, ma lanciandola da qui non si vede come popup nella parte alta del display: andrà proprio ad aprire l’app con la cartella in questione selezionata. Dal momento che non mi piaceva come esperienza visiva, ho creato una lista con l’azione Scegli dal menu. Qui potrete scegliere un po’ tutto quello che vi torna utile, come lanciare alcune app che vi capita di usare con una certa frequenza, ma a cui non volete dedicare un’icona nella home. Oppure potete lanciare degli altri comandi con funzionalità specifiche. Insomma, c’è da divertirsi.

Fatemi sapere come state utilizzando il Pulsante Azione e se trovate questo spunto interessante.

Maurizio Natali

Titolare e caporedattore di SaggiaMente, è "in rete" da quando ancora non c'era, con un BBS nell'era dei dinosauri informatici. Nel 2009 ha creato questo sito nel tempo libero, ma ora richiede più tempo di quanto ne abbia da offrire. Profondo sostenitore delle giornate di 36 ore, influencer di sé stesso e guru nella pausa pranzo, da anni si abbronza solo con la luce del monitor. Fotografo e videografo per lavoro e passione.