Passer un objet d’une Activity à une autre
Cette astuce peut s’avérer relativement utile lorsque l’objet en question est peuplé depuis une source externe comme un flux RSS, ce qui peut parfois demander un temps d’attente assez long. La méthode utilise le principe de serialization qui va tout simplement transformer nos objets ‘Serializable’ en byte[].
Pour cela, nous disposons d’une classe, à partir de laquelle, les objets que nous souhaitons sérialiser devront hériter. De la sorte, vos objets pourront être passés très simplement d’une Activity à une autre.
public class CSerializable implements Serializable {
public byte[] serialize () throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream ();
ObjectOutput out = new ObjectOutputStream (bos);
out.writeObject (this);
out.close ();
return bos.toByteArray ();
} // serialize ();
public Object unserialize (byte[] b) throws IOException,
ClassNotFoundException {
ByteArrayInputStream bis = new ByteArrayInputStream (b);
ObjectInputStream in = new ObjectInputStream (bis);
Object object = in.readObject ();
bis.close ();
in.close ();
return object;
} // unserialize ();
}; // CSerializable;
Pour continuer, voici un exemple vraiment très simple d’objet devant hériter de la classe CSerializable.
public class CTest extends CSerializable {
protected String title, content;
protected Date date;
public void populate (byte[] serialize)
throws IOException, ClassNotFoundException {
CTest object = (CTest)unserialize (serialize);
setTitle (object.getTitle ());
setContent (object.getContent ());
setDate (object.getDate ());
} // populate ();
public String getTitle () {return title;}
public void setTitle (String title) {this.title = title;}
public String getContent () {return content;}
public void setContent (String content) {this.content = content;}
public Date getDate () {return date;}
public void setDate (Date date) {this.date = date;}
}; // CTest;
Le passage de l’objet de l’Activity 1 vers la 2 se résumer alors à ce qui va suivre:
// CActivity1
CTest test = new CTest ();
test.setTitle ("Mon titre");
test.setContent ("Mon contenu");
test.setDate (new Date ());
Intent intent = new Intent (getApplicationContext (), CActivity2.class);
intent.putExtra ("test", test.serialize ());
startActivity (intent);
// CActivity2
byte[] testArray = getIntent ().getExtras ().getByteArray ("test");
CTest test = new CTest ();
test.populate (testArray);
Android: Contrôler votre PC à l’aide de votre portable ou votre tablette.
Télécharger le logiciel de communication
Télécharger l’application Android
Après 3 à 4 bonnes semaines de travail (environ 40h), j’ai enfin réussi à terminer une première version de ma toute première application sous Android. Son but est de vous permettre de contrôler votre PC depuis une tablette (de préférence car mieux adaptée qu’un portable avec un petit écran). En somme, votre tablette devient votre souris et votre clavier.
Pour cela, il faut au préalable lancer un programme sur votre ordinateur (pour le moment uniquement compatible sous Windows), qui va permettre de réaliser les échanges PC <> Android. Saisir un identifiant, un mot de passe, et d’activer les communications.
Ensuite, il ne vous reste plus qu’à lancer l’application sous Android et de vous connecter au PC pour lequel nous venons juste d’activer les communications.
Au début, l’utilisation peut paraître relativement déroutante car j’ai pour le moment souhaité aller au plus simple. Lorsque vous déplacerez le pointeur depuis votre tablette, les mouvements se feront de manière proportionnelle avec la résolution de votre écran. En clair, le coin supérieur-gauche de votre tablette correspond au coin supérieur-gauche de votre écran, et pour le coté droit, c’est la même chose.
Pour le clic-gauche, il faut garder une pression sur la tablette pour le contrôle du pointeur, et en réaliser une supplémentaire pour lancer cette action. Le plus simple est d’utiliser les deux mains, une pour le contrôle du pointeur (tout comme vous le faites en gardant votre main sur la souris), et une autre pour réaliser les actions (clic-gauche / clic-droit). Le clic-droit quant à lui, est réalisé à l’aide d’une troisième pression supplémentaire.
Il est aussi possible d’utiliser le clavier, pour cela il suffit d’aller dans le menu (durant la phase de contrôle) et de l’activer. Attention, dans cette première version toutes les touches ne sont pas encore supportées. Pour l’instant vous pouvez utiliser les lettres (minuscules et non accentuées), les chiffres, ainsi que les touches espace, entrer et supprimer.
Je ne sais pas encore si je vais continuer le développement, mon objectif étant simplement d’apprendre à développer sous Android par le biais de travaux que je publierai très certainement sur mon blog.
Coté serveur (PC):
Développé avec JAVA, utilise SWT pour l’interface.
Coté client (Tablette):
Développé en JAVA, API 7 (2.1-update1) de Android.
Les communications sont réalisées en TCP pour garder les connexions ouvertes entre les clients et le serveur, et en UDP pour la phase de contrôle.
Uniquement testé depuis ma tablette ASUS EEE Pad Transformer TF101 et mon Galaxy TEOS, ça devrait normalement fonctionner quasiment partout … à voir!



