Autore Topic: AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service  (Letto 701 volte)

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1195
  • Respect: +131
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Market Developer Name:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #15 il: 21 Luglio 2011, 10:07:16 CEST »
0
si, intendevo dire proprio questo.
^_^
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #16 il: 21 Luglio 2011, 10:22:01 CEST »
0
In effetti sono sempre diversi i risultati

Nella MainAcivity ho messo questo:

Codice (Java): [Seleziona]
action.putExtra("atleta", atleta);
int hash = atleta.getAvatar().hashCode();

Poi ho fatto la stessa cosa in WelcomeActvity

Codice (Java): [Seleziona]
AtletaWrapper atleta = (AtletaWrapper) getIntent().getSerializableExtra("atleta");
int hash = atleta.getAvatar().hashCode();

e dopo due prove ho sempre risultati diversi :

1)
1157027216 Main
1156788296 Welcome
2)
1157023088 Main
1156677296 Welcome

quindi??Dove potrebbe stare il problema??

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1195
  • Respect: +131
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Market Developer Name:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #17 il: 21 Luglio 2011, 10:46:55 CEST »
0
Durante la stessa esecuzione, per lo stesso oggetto l'hashcode non cambia.
Rieseguendolo, potrà cambiare dal precedente, ma durante la stessa esecuzione rimarrà lo stesso.
Quindi, funziona correttamente.

Riguarda il fatto che ti stampa 2 valori differenti, è perché succede qualcosa nel passaggio dati, nella serializzazione, da qualche parte in mezzo.

prova a passarti un byte[] di 10 caratteri, settato da te, e vedi se arriva allo stesso modo dopo averlo serializzato e passato su bundle.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 306
  • Respect: +103
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy i7500 / HTC Hero
  • Market Developer Name:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 10.10
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #18 il: 21 Luglio 2011, 10:48:40 CEST »
0
Dubbio, ma la classe AtletaWrapper implementa Serializable ?
logcat OR

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #19 il: 21 Luglio 2011, 11:06:29 CEST »
0
certo che implementa Serializable...

cmq ho provato a passare un semplice byte[] in MainActivity

Codice (Java): [Seleziona]
byte[] array = new byte[]{12,23,45};
atleta.setAvatar(array);
action.putExtra("atleta", atleta);

e in WelcomeActivity

Codice (Java): [Seleziona]
AtletaWrapper atleta = (AtletaWrapper) getIntent().getSerializableExtra("atleta");
byte[] bb = atleta.getAvatar();

e noto che ritorna sempre {12,23,45}.:!!!Quindi sembra tutto ok..!!
E cosa può essere allora??
« Ultima modifica: 21 Luglio 2011, 11:13:35 CEST da mailojah »

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #20 il: 21 Luglio 2011, 11:26:22 CEST »
0
Cmq il problema sta tra il web service e la MainActivity perchè ho fatto la stessa prova creando unsemplice array di byte nel metodo del WS e quello che arriva al dispositivo non è lo stesso...!!Quindi dovrebbe essere questo il problema.
Io ora indago, voi avete qlc soluzione?
Grazie

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1195
  • Respect: +131
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Market Developer Name:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #21 il: 21 Luglio 2011, 11:56:43 CEST »
0
eh....
dovresti postare un po' di codice del webservice....... 8-)
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #22 il: 21 Luglio 2011, 12:23:04 CEST »
0
All'inizio nella mia app android quando prendevo l'oggetto AtletaWraper dal WS, ho notato questa linea di codice .

Codice (Java): [Seleziona]
byte[] avatar = ((SoapPrimitive)table.getProperty("avatar")).toString().toByteArray;
e quel toString ho capito in ritardo che mi cambiava tutte le carte in gioco!!Quindi ho deciso di cambiare in AtletaWrapper la variabile avatar da byte[] in String e facendo le solite prove cn un array fatto da me ad esempio [1,2,3], riesco ad inviare e ricevere l'array correttamente tramite quest' operazione

Codice (Java): [Seleziona]
byte[] bb = atleta.getAvatar().getBytes();

(atleta.getAvatar() ritorna una String ovviamente)

ora però 
Codice (Java): [Seleziona]
Bitmap bitmap = BitmapFactory.decodeByteArray(bb, 0, bb.length); ritorna sempre null!!!!!! :-\ e ora che vvuoleee???Bah

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #23 il: 21 Luglio 2011, 12:37:34 CEST »
0
Ho notato quest'altra cosa...
se passo un array semplice di byte[] tipo 1,2,3 convertito in String, in Android quando lo riconverto in byte[] ottengo sempre 1,2,3..
Ora se passo l'immagine convertita in String e in Android riconverto non ho la stessa cosa ??? :-o
Quindi è con l'immagine che si emoziona..!Bah! qualche idea grazie

Offline Ricky`

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 2696
  • Respect: +370
    • Google+
    • rciovati
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    OS X Lion
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #24 il: 21 Luglio 2011, 13:07:58 CEST »
0
Ma scusa, lato server come trasformi l'immagine in stringa?

Idealmente dovrebbe essere immagine ->byte[] -> base64 (che è una stringa) -> trasferimento rete -> base64 -> byte[] -> bitmap.

E' così che fai? Non vorrei che con qualche trasformazione strana si perdono dei dati e non riesce più a ricrearti l'immagine lato Android.

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #25 il: 21 Luglio 2011, 14:51:43 CEST »
0
Allora lato server prima di inviare l'oggetto AtletaWrapper, faccio questo:

Codice (Java): [Seleziona]
byte[] provaByte = atleta.getAvatar().getData();               
                String avatarString = new String(provaByte);

lato Client invece ho questo:

Codice (Java): [Seleziona]
AtletaWrapper atleta = WebServiceUtil.login(username, password);
Intent action = new Intent(getApplicationContext(), WelcomeActivity.class);
action.putExtra("avatar", atleta.getAvatar());

quindi se passa il login in WelcomeActivity ho:

Codice (Java): [Seleziona]
String avatar = getIntent().getStringExtra("avatar");
byte[] bb = avatar.getBytes();

sono stato chiaro??

il fatto è che...ripeto... se mando un array di byte fatto da me ad esempio 1,2,3 mi arriva correttamente, se mando un array complesso, in questo caso un immagine addio..!!!
« Ultima modifica: 21 Luglio 2011, 14:54:59 CEST da mailojah »

Offline Ricky`

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 2696
  • Respect: +370
    • Google+
    • rciovati
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    OS X Lion
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #26 il: 21 Luglio 2011, 15:03:45 CEST »
0
sono stato chiaro??

Si, per scrupolo prova ad usare la codifica in base64...

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #27 il: 21 Luglio 2011, 15:07:42 CEST »
0
Ok...ma.....come si fa??eheheh

questa dici??

Codice (Java): [Seleziona]
byte[] buf = new byte[]{0x12, 0x23};
    String s = new sun.misc.BASE64Encoder().encode(buf);

grazie
« Ultima modifica: 21 Luglio 2011, 15:09:27 CEST da mailojah »

Offline Ricky`

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 2696
  • Respect: +370
    • Google+
    • rciovati
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    OS X Lion
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #28 il: 21 Luglio 2011, 15:11:54 CEST »
+1
Si, può essere.
Per fare il decode lato Android guarda qui:
How to base64 encode decode Android | Android Code Monkey

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #29 il: 21 Luglio 2011, 15:29:40 CEST »
0
Siiiiiiiiiiii!!GRazie Ricky!!!!!!Finalmente risolto...!!
Ora posto il codice;)

lato server:

Codice (Java): [Seleziona]
String avatarString = Base64.encode(atleta.getAvatar().getData());
lato android

Codice (Java): [Seleziona]
String avatar = getIntent().getStringExtra("avatar");
byte[] bb=null;
try {
    bb = Base64.decode(avatar.getBytes());
} catch (IOException e1) {
        e1.printStackTrace();
}
               
Bitmap bitmap=null;
try {
        bitmap = BitmapFactory.decodeByteArray(bb, 0, bb.length);
} catch (Exception e) {
        Log.w("Parse Avatar", e.getLocalizedMessage());
}

grazie ancora!Tutto risolto!