Autore Topic: Cercasi consigli per applicazione orientata al web  (Letto 824 volte)

Offline Hieicker

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid A1
  • Sistema operativo:
    Linux e MacOSX
Cercasi consigli per applicazione orientata al web
« il: 06 Giugno 2013, 12:49:36 CEST »
0
Ciao a tutti! Posto la richiesta qui perchè non sapevo se le altre sezioni erano adatte. Avrei bisogno di alcuni consigli inerenti un'applicazione che devo sviluppare. L'app in questione è abbastanza semplice. In pratica quando viene avviata fa un controllo che il device sia connesso ad una rete wireless e in caso positivo vorrei che che vada a creare un file xml con struttura ad albero, contenente il numero/nome di album e il numero/nome delle relative foto presenti nella gallery del dispositivo. Per dare un esempio:
Codice (XML): [Seleziona]
<albums>
  <album id="1">
        <foto id="1">nome foto</foto>
        <foto id="2">nome foto</foto>
        <foto id="3">nome foto</foto>
  </album>
  <album id="2">
        <foto id="1">nome foto</foto>
        <foto id="2">nome foto</foto>
        <foto id="3">nome foto</foto>
  </album>
</albums>

In seguito questo file dovrebbe venire inviato ad un server, ma per il momento preferisco capire come muovermi per fare gli steps precedenti.
Si accetta qualsiasi consiglio!
Io sono ad un livello base con la programmazione di android, sto imparando ad usare le activity, i file base per la costruzione del layout, il manifest, i vari widget ecc…

Grazie!

Offline Hieicker

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid A1
  • Sistema operativo:
    Linux e MacOSX
Re:Cercasi consigli per applicazione orientata al web
« Risposta #1 il: 10 Giugno 2013, 15:59:12 CEST »
0
Nessuno sa nulla?
Sono riuscito a completare i primissimi steps e ora vorrei capire come poter fare in modo che l'applicazione resti in ascolto di chiamate esterne provenienti da un web server. Idee?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Cercasi consigli per applicazione orientata al web
« Risposta #2 il: 10 Giugno 2013, 21:20:05 CEST »
0
Nessuno sa nulla?
Sono riuscito a completare i primissimi steps e ora vorrei capire come poter fare in modo che l'applicazione resti in ascolto di chiamate esterne provenienti da un web server. Idee?

Generalmente questa cosa non si fa.
Se il web server deve notificare qualcosa al client li può fare tramite le notifiche push.
Potresti fare ad esempio che quando il server vuole comunicare invia una push e il client si connette.

Inviato dal mio Galaxy Nexus con Tapatalk 2


Offline Hieicker

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid A1
  • Sistema operativo:
    Linux e MacOSX
Re:Cercasi consigli per applicazione orientata al web
« Risposta #3 il: 11 Giugno 2013, 10:02:04 CEST »
0
Eh ma nel mio caso deve essere il contrario... Ho un'applicazione desktop che deve connettersi al dispositivo android e fare una richiesta. Il dispositivo android risponde a questa richiesta  inviando un file xml contenente la lista degli album e photo nella gallery del device   :-).

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Cercasi consigli per applicazione orientata al web
« Risposta #4 il: 11 Giugno 2013, 10:12:49 CEST »
0
Puoi fare un Service in modalità "foreground" (Services | Android Developers) che al suo interno rimane in attesa di connessioni tramite una  ServerSocket. Rimane in sospeso come la tua app desktop troverà l'ip del dispositivo (molte app lo fanno inserire manualmente all'utente). Mi raccomando fai in modo che l'utente killi il service non appena ha finito con l'app altrimenti addio batteria :)

Offline Hieicker

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid A1
  • Sistema operativo:
    Linux e MacOSX
Re:Cercasi consigli per applicazione orientata al web
« Risposta #5 il: 11 Giugno 2013, 10:33:21 CEST »
0
Ti ringrazio! Quindi l'app mi rimane in attesa e quando rileva che dal pc desktop inseriscono l'ip dello smartphone si attiva?
A quel punto poi posso inviare il file xml con la lista degli album e foto nella gallery del dispositivo?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Cercasi consigli per applicazione orientata al web
« Risposta #6 il: 11 Giugno 2013, 11:09:57 CEST »
0
L'app rimane in attesa di connessioni da parte del desktop. Una volta che quest'ultimo si connette puoi scambiare quello che vuoi tramite una socket ;) Un xml non è altro che una stringa, quindi direi che on dovresti avere problemi.

Offline Hieicker

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid A1
  • Sistema operativo:
    Linux e MacOSX
Re:Cercasi consigli per applicazione orientata al web
« Risposta #7 il: 11 Giugno 2013, 11:21:44 CEST »
0
Ok ti ringrazio. Al momento la mia app ha due activity. Una iniziale in cui c'è una schermata di presentazione con un tasto start. Ed una seconda che viene avviata schiacciando proprio sul tasto start. Questa seconda activity presenta l'indirizzo IP della rete a cui sono connesso ed un PIN di 4 cifre generato dinamicamente con una funzione random(). Ora vorrei appunto fare in modo che l'app rilevi quando un pc cerca di accedere al dispositivo mettendo nel browser l'indirizzo ip e relativa porta.
Quindi ora mi serve un service che rilevi questa informazione. Ma come posso farla rilevare? C'è del codice che posso utilizzare nel sito ufficiale sviluppatori android?

Aggiornamento:
Ho creato la struttura base del service... Come posso procedere ora?

Codice (Java): [Seleziona]
package com.example.androidappserver;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

//creo il Service per mettere in ascolto l'applicazione. Vogliamo infatti rilevare l'evento con cui un pc prova a connettersi al dispositivo
public class ServiceListener extends Service{
        @Override
          public void onCreate() {
               
        }
       
        @Override
        public IBinder onBind(Intent arg0){
                return null;
        }
       
        @Override
        public int onStartCommand(Intent intent, int flags, int startId){
                return Service.START_STICKY;
        }
       
        public void onDestroy(){
                super.onDestroy();
        }
}
« Ultima modifica: 11 Giugno 2013, 11:48:09 CEST da Hieicker »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Cercasi consigli per applicazione orientata al web
« Risposta #8 il: 11 Giugno 2013, 11:50:02 CEST »
0
Come ti ho scritto sopra ti serve una ServerSocket...

In alternativa, se vuoi che il tuo dispositivo Android risponda a delle chiamate HTTP (tramite browser) puoi dare un occhio a NanoHTTPd: https://github.com/NanoHttpd/nanohttpd

Su Android, non ho mai usato ne la prima soluzione ne la seconda quindi non ho codice da poterti suggerire. Una bella ricerca però potrebbe darti diversi spunti ;)
« Ultima modifica: 11 Giugno 2013, 11:53:21 CEST da Ricky` »

Offline Hieicker

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid A1
  • Sistema operativo:
    Linux e MacOSX
Re:Cercasi consigli per applicazione orientata al web
« Risposta #9 il: 12 Giugno 2013, 11:23:14 CEST »
0
Ok grazie! Volevo informarti che sono riuscito ad implementare il server side, ed ora se mi collego da browser esterno, il programma riconosce correttamente l'avvenuto accesso.
Ora devo imparare a creare un file xml e a passarlo ad un determinato path nel pc  :-)!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Cercasi consigli per applicazione orientata al web
« Risposta #10 il: 12 Giugno 2013, 11:24:34 CEST »
0
Ok grazie! Volevo informarti che sono riuscito ad implementare il server side, ed ora se mi collego da browser esterno, il programma riconosce correttamente l'avvenuto accesso.

Ottimo ;)

Citazione
Ora devo imparare a creare un file xml e a passarlo ad un determinato path nel pc  :-)!

Step-by-step si fa tutto :D
Credo che riuscire a fare il server sia stato già un bel passo avanti ;)

Offline Hieicker

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid A1
  • Sistema operativo:
    Linux e MacOSX
Re:Cercasi consigli per applicazione orientata al web
« Risposta #11 il: 13 Giugno 2013, 11:52:16 CEST »
0
Si è stato decisamente utile  :-)! Ora sono riuscito a creare anche un semplice file xml ed a scriverlo nella SD del device/emulatore  :D!
Per le mie esigenze tuttavia vorrei scrivere nella memoria interna e non nella sd. Puoi darmi gentilmente una mano? Questo è il codice:
A mio avviso probabilmente dobbiamo concentrarci sulla riga File xmlPhotos = new File(Environment.getExternalStorageDirectory(),"/xmlPhotos.xml");

Codice (Java): [Seleziona]
public void createXml(){
                File xmlPhotos = new File(Environment.getExternalStorageDirectory(),"/xmlPhotos.xml");
                try{
                        xmlPhotos.createNewFile();
                } catch(IOException e){
                        Log.e("IOException", "exception in createNewFile() method");
                }
                FileOutputStream fos = null;
                try{
                        fos = new FileOutputStream(xmlPhotos);
                } catch(IOException e) {
                        Log.e("FileNotFoundException", "can't create FileOutputStream");
                }
                XmlSerializer serializer = Xml.newSerializer();
                try{
                        serializer.setOutput(fos, "UTF-8");
                        serializer.startDocument(null, Boolean.valueOf(true));
                        serializer.setFeature("[url=http://xmlpull.org/v1/doc/features.html#indent-output"]XMLPULL FAQ
[/url], true);
                       
                        serializer.startTag(null, "root");
                                serializer.startTag(null, "child1");
                                serializer.endTag(null, "child1");
                               
                                serializer.startTag(null, "child2");
                                serializer.attribute(null, "id", "1");
                                serializer.endTag(null, "child2");
                        serializer.endTag(null, "root");
                        serializer.endDocument();
                        serializer.flush();
                        fos.close();
                       
                        TextView xmlMessage = (TextView)this.findViewById(R.id.xmlMessage);
                        xmlMessage.setText("xml file correctly created");
                } catch(IOException e) {
                        Log.e("Exception","error occurred while creating xml file");
                }
        }

Grazie :) !