Aller au contenu






- - - - -

Premiers pas Android Studio 1.0.1 et IOIO (HelloIOIO)

Posté par ailgorbot, dans Programmation 11 mars 2015 · 2 702 visite(s)

Voilà j'ai reçu mon IOIO-OTG et tous les éléments du Robot : voir ICI
Attention : Il faut que le firmware de IOIO soit : App-IOIO0500.ioioapp
Comme je suis un novice en JAVA, Android Studio et bien évidement IOIO, je vais commencer par le B-A-BA. : HelloIOIO
qui consiste à faire clignoter la Led (Digital Output 0) du IOIO.
 
Pré-requis : 
 
Installer Android Studio : http://developer.android.com/sdk/index.html
La version au moment, bref celle du Billet est Android Studio 1.0.1
On convient que vous avez réussit à installer Android Studio, et que vous avez pu déployer une application simple sur votre smartphone "Android 4.0.3 minima". Je n'ai pas de téléphone avec un OS plus ancien...
 
Récupérer les librairies java IOIO v0504.
Il y a le lien suivant : https://github.com/y...pp-IOIO0504.zip
Mais les librairies ne sont pas sous un .jar (J'ai malheureusement pour l'instant échoué à les installer sur Android Studio)
Alors j'ai utilisé directement les .jar que j'ai trouvé sur le groupe Google ioio-user : https://groups.googl...ers/aCpQ7HMbuxY
Les .jar : https://groups.googl...=0.1&authuser=0
 
 
Création d'un nouveau projet Android Studio : 
  • Créer tout simplement un projet Android Studio
  • Pour des Android dans mon cas 4.0.3
  • Avec une Activité vierge (celui où il y a Hello world)
Ajouter les librairies IOIO
 
Ajouter dans MyProject/settings.gradle le chemin des librairies /app/libs
 

include ':app'
include ':app:libs'
 
Copier les fichiers .jar du zip dans le répertoire /app/libs (Avec la version Android Studio 1.0.1 le répertoire est déjà créé)
vous devez avoir les quatre .jar
  • libs/ioiolibandroid.jar
  • libs/ioiolibaccessory.jar
  • libs/ioiolibandroiddevice.jar
  • libs/ioiolibbt.jar
Aller dans le menu File/Project Structure...
Sélectionner app
Aller sur l'onglet Dependencies
Via le bouton + ajouter les quatre .jar (File dependency) qui se trouve dans le répertoire /app/libs 
Cliquer sur OK
 
Normalement en ouvrant le fichier  app/build.gradle vous devez avoir les librairies
 
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile files('libs/ioiolibandroid.jar')
    compile files('libs/ioiolibaccessory.jar')
    compile files('libs/ioiolibandroiddevice.jar')
    compile files('libs/ioiolibbt.jar')
}
Voilà normalement les librairies sont prises en compte. Pour vérifier qu'Android Studio ne plante pas, faire un make du projet (menu Build/Make Project) ou synchroniser gradle (menu Tools/Android/Sync Project with Gradle Files)
Il ne doit pas y avoir d'erreur de compilation.
 
 
Utilisation des Librairies IOIO
 
A ce stade on va refaire l'application HelloIOIO
 
Ajouter le bouton (toggleButton) dans activity_main.xml
   <ToggleButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ioioledtoggle"
        android:id="@+id/toggleButton"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="96dp"
        android:singleLine="true" />
Enfin dans MainActivity.java remplacer le code après la ligne package avec le code ci-dessous
 
import ioio.lib.api.DigitalOutput;
import ioio.lib.api.IOIO;
import ioio.lib.api.IOIO.VersionType;
import ioio.lib.api.exception.ConnectionLostException;
import ioio.lib.util.BaseIOIOLooper;
import ioio.lib.util.IOIOLooper;
import ioio.lib.util.android.IOIOActivity;
import android.content.Context;
import android.os.Bundle;
import android.widget.Toast;
import android.widget.ToggleButton;
 
/**
 * This is the main activity of the HelloIOIO example application.
 *
 * It displays a toggle button on the screen, which enables control of the
 * on-board LED. This example shows a very simple usage of the IOIO, by using
 * the {@link IOIOActivity} class. For a more advanced use case, see the
 * HelloIOIOPower example.
 */
public class MainActivity extends IOIOActivity {
private ToggleButton toggleButton;
 
/**
* Called when the activity is first created. Here we normally initialize
* our GUI.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
toggleButton = (ToggleButton) findViewById(R.id.toggleButton);
}
 
/**
* This is the thread on which all the IOIO activity happens. It will be run
* every time the application is resumed and aborted when it is paused. The
* method setup() will be called right after a connection with the IOIO has
* been established (which might happen several times!). Then, loop() will
* be called repetitively until the IOIO gets disconnected.
*/
class Looper extends BaseIOIOLooper {
/** The on-board LED. */
private DigitalOutput led_;
 
/**
* Called every time a connection with IOIO has been established.
* Typically used to open pins.
*
* @throws ConnectionLostException
*             When IOIO connection is lost.
*
* @see ioio.lib.util.IOIOLooper#setup()
*/
@Override
protected void setup() throws ConnectionLostException {
showVersions(ioio_, "IOIO connected!");
led_ = ioio_.openDigitalOutput(0, true);
enableUi(true);
}
 
/**
* Called repetitively while the IOIO is connected.
*
* @throws ConnectionLostException
*             When IOIO connection is lost.
* @throws InterruptedException
* When the IOIO thread has been interrupted.
*
* @see ioio.lib.util.IOIOLooper#loop()
*/
@Override
public void loop() throws ConnectionLostException, InterruptedException {
led_.write(!toggleButton.isChecked());
Thread.sleep(100);
}
 
/**
* Called when the IOIO is disconnected.
*
* @see ioio.lib.util.IOIOLooper#disconnected()
*/
@Override
public void disconnected() {
enableUi(false);
toast("IOIO disconnected");
}
 
/**
* Called when the IOIO is connected, but has an incompatible firmware version.
*
* @see ioio.lib.util.IOIOLooper#incompatible(IOIO)
*/
@Override
public void incompatible() {
showVersions(ioio_, "Incompatible firmware version!");
}
}
 
/**
* A method to create our IOIO thread.
*
* @see ioio.lib.util.AbstractIOIOActivity#createIOIOThread()
*/
@Override
protected IOIOLooper createIOIOLooper() {
return new Looper();
}
 
private void showVersions(IOIO ioio, String title) {
toast(String.format("%s\n" +
"IOIOLib: %s\n" +
"Application firmware: %s\n" +
"Bootloader firmware: %s\n" +
"Hardware: %s",
title,
ioio.getImplVersion(VersionType.IOIOLIB_VER),
ioio.getImplVersion(VersionType.APP_FIRMWARE_VER),
ioio.getImplVersion(VersionType.BOOTLOADER_VER),
ioio.getImplVersion(VersionType.HARDWARE_VER)));
}
 
private void toast(final String message) {
final Context context = this;
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
});
}
 
private int numConnected_ = 0;
 
private void enableUi(final boolean enable) {
// This is slightly trickier than expected to support a multi-IOIO use-case.
runOnUiThread(new Runnable() {
@Override
public void run() {
if (enable) {
if (numConnected_++ == 0) {
toggleButton.setEnabled(true);
}
} else {
if (--numConnected_ == 0) {
toggleButton.setEnabled(false);
}
}
}
});
}
}
 
NB : Il se peut que le nom du Togglebutton soit à corriger dans le fichier string.xml
 
Mais pour une meilleur compréhension du code je vous suggère cette vidéo : 

C'est en Thai !!! :) mais ça reste compréhensible pour ce qui est de l'approche.
 
 
Utiliser l'application 
 
Après avoir créé l'application .apk et installé ce dernier sur votre Android
 
Vous avez deux méthodes pour utiliser votre application
- via Dongle bluetooth
- via USB
 
Par USB, vous branchez votre Android sur le IOIO qui est alimentée en courant et normalement, en appuyant sur le bouton de votre application, la LED0 de la carte s'allume.
 
Par bluetooth il faut avant de compiler votre application ajouter dans le fichier /app/src/main/AndroidManifest.xml les droits d'utiliser Bluetooth.
 
avant la balise application
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.BLUETOOTH" />
 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
N'oublié pas d'appairer votre smartphone et le IOIO sous tension avec le Dongle Bluetooth branché.
 
Enjoy !!!




Mars 2024

L M M J V S D
    123
45678910
11121314151617
18192021222324
252627 28 293031

Ma photo

utilisateur(s) actif(s)

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)

Étiquettes

Rechercher dans le blog

Derniers visiteurs

MyBlogLog

Twitter

Éléments Google partagés