agosto 7, 2010

Creare widgets per Samsung bada e Wave S8500

Creare widget per bada

Scommetto che anche tu ti sei chiesto: ma come si creano i widget per la piattaforma bada e per il Samsung Wave?

Bene, questa è una guida utile che risponderà alla tua domanda e ti aiuterà a realizzare il tuo primo widget. Questo tutorial è basato sull’articolo How to create bada widgets del sito badadev.com, e vi aiuterà a realizzare un widget che quando viene attivato restituirà il testo Ciao badaBlog.it! (che potete ovviamente cambiare con qualsiasi altro testo vogliate :) ).

Iniziamo con alcune nozioni preliminari: i widget non sono altro che delle piccole applicazioni scritte in html (il linguaggio usato per scrivere le pagine web), css (per formattare gli elementi html e dargli uno stile) e javascript (per eseguire alcune funzioni più complesse come animazioni, cambio di schede, recupero di news da siti come per esempio gli RSS, ecc.). Come quindi avrete facilmente intuito, per iniziare a creare dei widget dovrete avere almeno qualche nozione di base di questi linguaggi.
Detto ciò, iniziamo a vedere qual è il metodo di costruzione di qualsiasi widget:
1) Struttura del widget:

  • Innanzitutto i widget hanno una struttura di base necessaria se si vuole che esso funzioni, la struttura è reppresentata in questa immagine:

Creare widget per bada: la struttura
Come vedete, la struttura è composta da:
- css (una cartella in cui mettiamo tutti i file .css necessari per formattare la grafica);
- images (una cartella con tutte le immagini che ci serviranno nel widget);
- js (una cartella contenente tutti i file javascript, qualora ce ne fossero);
- config.xml (un file xml in cui vi sono i dati di configurazione del widget come per esempio altezza e larghezza, la versione, il nome, la descrizione, il richiamo all’icona, ecc. – è fondamentale per il funzionamento del widget);
- icon.png (un’immagine in formato .png di 90×90 pixel che è quella che vedremo durante il drag and drop);
- index.html (il file html che servirà a formare la struttura grafica della nostra piccola applicazione.

Adesso vediamo come procedere con la nostra creazione.
2) Configurazione del file config.xml

  • Questo file è molto importante perchè è usato dal sistema operativo bada durante la fase di installazione, per crearlo potete tranquillamente creare un nuovo file di testo con il blocco note, incollarci le seguenti righe e salvarlo come config.xml

<?xml version=”1.0″ encoding=”UTF-8″ standalone=”no”?>
<widget id=”EsempioWidget” version=”1.0″ width=”200″ height=”183″ xmlns=”http://www.w3.org/ns/widgets”>
<title>Esempio</title>
<description>Questo è una descrizione di esempio.</description>
<icon src=”icon.png”/>
<content src=”index.html”/>
<access network=”false”/>
</widget>

La prima riga va lasciata identica, vediamo insieme come vanno personalizzati i vari tag:
- id: è un identificativo del widget e può contenere valori alfanumerici (dopo la certificazione avrà un valore simile a questo 0×10000715, ma se lasciamo EsempioWidget verrà installato lo stesso;
- version: la versione del widget;
- width: la larghezza iniziale del widget (corrisponde al rettangolo giallo che vediamo sul telefono quando spostiamo un widget sullo schermo);
- height: l’altezza iniziale del widget (stessa cosa della larghezza citata sopra);
- title: il nome del widget;
- description: la descrizione;
- icon: il percorso dell’icona del widget (se mantenete la struttura di prima sarà icon.png);
- content: il percorso per il contenuto principale (se mantenete la struttura di prima sarà index.html);
- access network: bisogna scrivere false se non necessità di connessione al network, sennò true (true verrà impostato per esempio per poter utilizzare il Wi-Fi o GPRS o altre connessioni).
Una cosa importante è salvare il file con codifica UTF-8 (non in Unicode o ANSI) sennò non verrà installato.
3) Realizzazione del file index.html:

  • Aprite il blocco note ed inserire queste righe:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Esempio Widget</title>
<link rel=”stylesheet” type=”text/css” href=”css/style.css”/>
<script src=”js/onclick.js” type=”text/javascript”></script>
</head>
<body>
<img id=”logo” src=”images/badablog.png” onClick=”testLogo();”/>
<span class=”logoLabel”>Cliccami</span>
</body>
</html>

Salvate il file come index.html; come vedete vengono richiamati tre file, style.css e onclick.js che adesso andremo a creare.

4) Realizzazione del file style.css:

  • Aprite il blocco note, incollateci queste righe e salvatelo nella cartella css come style.css

span.logoLabel {
top: 5px;
font-size:20px;
color:#FFFFFF;
}

5) Realizzazione del file onclick.js:

  • Aprite il blocco note, incollateci queste righe e salvatlo nella cartella js come onclick.js

function testLogo()
{
alert(‘Ciao badaBlog.it!’);
}

Tutti questi file non serviranno a niente se non verranno “impacchettati” in un file .wgt installabile sul telefono.
6) Creazione del file .wgt:

  • Scaricare 7zip, selezionate tutti i file che avete usato (Attenzione! Non la cartella che li contiene, direttamente i file!) e comprimeteli in un archivio .zip facendo attenzione di usare come metodo di compressione “Deflate“.
  • Ora cambiate l’estensione del file da .zip a .wgt ed avrete creato il vostro widget

Creare widget per bada (1)
7) Fase finale, installazione del widget sul dispositivo:

  • Collegate il telefono e copiate il file in una qualsiasi sua cartella (per convenienza copiatelo in Others);
  • Accedete al menu e poi ad Archivio e cercate il file copiato cliccandoci sopra (se l’avete messo in Others lo troverete in Archivio > Altro);
  • Se non avete fatto errori, dopo un po’ di secondi dovrebbe partirvi l’installazione e ve lo troverete sul menu dei widget in homepage (Non vi preoccupate se vi dice che il file non è certificato, è normale, cliccate OK e proseguite).

Creare widget per bada (2)
Creare widget per bada (3)

Questo era il metodo più semplice per creare un widget, più avanti inserirò una guida su come crearli con il Samsung Mobile Widget SDK, una serie di programmi che consente anche di simulatore sul proprio pc il comportamento del widget grazie ad un emulatore del nostro dispositivo.

I file ed il widget di esempio possono essere scaricati cliccando qui.

  • marlin82

    complimenti manuel ottima guida

  • Manuel

    Ti ringrazio, ho cercato di spiegare tutto minuziosamente quindi spero che sia utile a qualcuno :)

    • remo98

      complimenti ottima guida,io cercavo un widget per il wave 5250 con il logo ufficiale wi-fi e come clicco di sopra mi esca la finestra per scegliere le reti disponibili come nel percorso impostazioni>connettivita’>wi-fi…si puo’ avere?grazie

  • melcataclysm

    Grazie, ottima guida!
    Purtroppo però, dopo aver provato a modificare la widget dell’orologio simil-HTC (semplicemente rinominando due file, scambiandoli), non sono più riuscito ad installarla. Oltre all’opzione “Deflate”, ci sono altre configurazioni particolari per 7zip?
    Grazie!

    • Manuel

      Anche a me modificando un widget esistente aveva dato problemi.
      Che tipo di file hai modificato ed in che modo gli hai modificati?
      Sei sicuro di non aver modificato il file config.xml?
      Per caso hai già installato lo stesso widget sul telefono? Se si hai provato a disinstallare quello e ad installare il tuo?

  • giacomo pascucci

    Ciao, splendida guida, complimenti. Volevo choederti se esiste un modo per trovare gli UID delle applicazioni istallate in modo da poterle lanciare con un widget. oppure se esiste un’altra procedura. Ho provato a cercarli con appuidlist, ma non funziona sul wave, oppure sono io che non riesco a lanciarlo. Grazie mille.

    • Manuel

      Ciao Giacomo, ti ringrazio per i complimenti.
      Comunque io stavo lavorando ad un widget che permettesse appunto il lancio di applicazioni (non le solite come la fotocamera il browser o i siti), ma ho dovuto interrompere il progetto perchè ho letto che in pratica Samsung per il momento non fornisce gli UID e blocca l’accesso per trovarli nei suoi firmware. Coi prossimi firmware dovrebbero sbloccare questi limiti in modo che sia possibile ricavare tutti gli UID, anzi molto probabilmente sarà lei stessa a fornirli per le applicazioni pre-installate :)
      Spero di essere stato chiaro nella spiegazione xD

  • jack659

    Sei stato chiarissimo e ti ringrazio, perchè stavo impazzendo nell’inutile tentativo di cercarli!!! Che tu sappia, non è possibile ricavarli nemmeno dal nuovo SDK 1.0.0 di BADA? Oggi ho provato a scaricarlo ma ancora non ho avuto modo di dargli un’occhiata. Che tu sappia, dalle applicazioni scaricate successivamente è possibile ricavare gli UID? Oppure anche queste sono nascoste? Grazie

    • Manuel

      Per adesso non penso sia possibile ricavarle neanche da quelle e non credo neanche dall’SDK 1.0.0 ma sinceramente non ho ancora avuto occasione di scaricarlo e quindi non ti so dire.
      Spero solo che tolgano questa limitazione al più presto :)

  • jack659

    Si, lo spero tanto anch’io! Mi piacerebbe creare qualche widget per i programmi che uso di più. A dire il vero, più per piacere che per necessità! Comunque grazie delle risposte. A presto! :-)

  • paolo_t

    Ciao a tutti, mi sono appena iscritto ed ho una domanda da fare… non so se è la sezione corretta!?
    E’possibile far funzionare le Emoticon (faccine)sul Wave?, scaricarle visualizzarle ed inserirle nei messaggi???
    grazie a tutti
    A presto

  • donigor

    Suugerimento per il punto 6:

    * Ora cambiate l’estensione del file da .zip a .wgt ed avrete creato il vostro widget

    In realtà questo passaggio si può saltare modificando l’estensione del nome già nella finestra di 7Zip.
    Nell’esempio, sotto “Archive:” nella casella anzichè scrivere “Hello_Badablog.zip” si può scrivere direttamente “Hello_Badablog.wgt”, lasciando il formato zip come compressione.

    Spero di essere stato utile, e chiaro :D

  • claudio

    ciao io ho i widget gia del telefonino sullo schermo tipo agenda google maps..ora voglio eliminarli dallo sfondo come posso fare?risp presto grz

    • Manuel (Admin)

      Quando sei sulla schermata principale clicchi su Widget in alto a sinistra ti si apre la barra in basso, per toglierli dallo sfondo li tieni premuti e li trascini in basso su quella barra.

  • bunner

    Ciao a tutti ho un wave da una settimana ed è bellissimo , volevo chiedervi una cortesia , a me interessava un widget della Tim che pigiando sull’icona mi viene il credito residuo in automatico o tipo quello di android che in push ho sempre il credito e dati residui in automatico , dato che di programmazione ne sò poco c’è qualche buona anima che sà farlo. Ho trovato in rete un’applicazione che mi fà in automatico i widget però solo x collegamenti a siti web e io NON sò come fare invece a fare quella che interessa a me tipo mandare sms a TIM x credito. Grazie a chi mi aiuta e ciao a tutti.

  • tiposospetto

    ciao, complimenti x la guida, mi daresti un aiutino…….ho scaricato il widget per vedere il credito residuo e l’icona della vodafone è alquanto bruttina, ho provato a sostituirla con una scaricata (nome e dimensione pari all’originale) ma mi da errore in installazione……dove sbaglio??

    gtrazie :-)

    • Manuel (Admin)

      caspiterina anche a me aveva dato quel problema ma purtroppo su questo pc non ho l’IDE e quindi ti potrò rispondere solo tra qualche giorno, mandami una mail dalla sezione contatti cosi sei sicuro che mi ricordo di risponderti :)

  • PPN

    E’ possibile tramite qualche programma o in qualche modo trasformare dei widget/applicazioni Android in widget Bada ???

    Mi servirebbe un’applicazione che mostra grafici di funzioni, derivate, integrali ma c’è solo per android e per Bada non trovo nulla…

    • Manuel (Admin)

      Purtroppo questo passaggio è moooolto complesso. Non esiste nessun tool al momento per fare questo.

  • roccopanz

    Ciao a tutti,
    volevo chiedere una aiuto:
    Se in vece di far uscire il messaggio, vorrei inserire il collegamento ad una pagina web come faccio?

    Grazie
    Roccopanz

  • Alex

    Ciao a tutti. Ho creato e codificato in c++ un diagramma di flusso che permette di decrementare un valore n di 1 fino ad arrivare a 0. Come faccio ad impostare con C++ quando decrementare(per esempio ogni 24 h)?

    • Manuel (Admin)

      Mi sa che hai sbagliato blog, dovresti chiedere in qualche forum con supporto a questo tipo di linguaggi di programmazione in modo da avere una risposta più rapida e soddisfacente :)

  • http://richiesta Roberto

    ciao e scs x il disturbo…ho una domanda da farti e se in caso mi puoi aiutare…ho un wawe con bada 1.0 e poichè mi è caduto nell’acqua e nn mi funziona + il tasto menù,volevo sapere se puoi crearmi un windget x accedere al menù dallo sfondo…grazie in anticipo CIAO :D