diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1ea968e --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +bin/ +.settings/ +.classpath +/.project +project.properties + +app/build/ +app/.idea/ +app/.gradle/ +app/*.iml +out/ +gen/ +*.apk +*.key +*.db diff --git a/Thumbs.db b/Thumbs.db deleted file mode 100644 index 43a34c8..0000000 Binary files a/Thumbs.db and /dev/null differ diff --git a/YANA.apk b/YANA.apk deleted file mode 100644 index ba1a8c9..0000000 Binary files a/YANA.apk and /dev/null differ diff --git a/Yana 4-.apk b/Yana 4-.apk deleted file mode 100644 index 87783c2..0000000 Binary files a/Yana 4-.apk and /dev/null differ diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..1b70fb1 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,65 @@ +buildscript { + repositories { + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:1.1.3' + } +} + +apply plugin: 'android' +//apply plugin: 'crashlytics' + +repositories { + mavenCentral() + maven { url 'http://download.crashlytics.com/maven' } +} + + +android { + compileSdkVersion 21 + buildToolsVersion "21.0.2" + + defaultConfig { + applicationId "fr.nover.yana" + minSdkVersion 21 + targetSdkVersion 21 + versionCode 1 + versionName "1.0" + } + + sourceSets { + main { + manifest.srcFile 'src/main/AndroidManifest.xml' + java.srcDirs = ['src/main/java'] + res.srcDirs = ['src/main/res'] + assets.srcDirs = ['src/main/assets'] + } + + + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + dexOptions { + } +} + + +dependencies { + compile fileTree(include: ['*.jar'], dir: 'libs') + compile 'com.android.support:support-v4:21.0.2' + compile 'com.astuetz:pagerslidingtabstrip:1.0.1' + compile 'com.squareup.picasso:picasso:2.4.0' + compile 'com.jakewharton:butterknife:5.1.2' +} + + +allprojects { + repositories { + jcenter() + } +} \ No newline at end of file diff --git a/app/gradle/wrapper/gradle-wrapper.jar b/app/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..8c0fb64 Binary files /dev/null and b/app/gradle/wrapper/gradle-wrapper.jar differ diff --git a/app/gradle/wrapper/gradle-wrapper.properties b/app/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..0c71e76 --- /dev/null +++ b/app/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Apr 10 15:27:10 PDT 2013 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip diff --git a/app/gradlew b/app/gradlew new file mode 100644 index 0000000..91a7e26 --- /dev/null +++ b/app/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/app/gradlew.bat b/app/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/app/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/app/local.properties b/app/local.properties new file mode 100644 index 0000000..4a9fa27 --- /dev/null +++ b/app/local.properties @@ -0,0 +1,11 @@ +## This file is automatically generated by Android Studio. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Sat Aug 29 12:19:36 CEST 2015 +sdk.dir=/home/sylvain/Android/Sdk diff --git a/AndroidManifest.xml b/app/src/main/AndroidManifest.xml similarity index 73% rename from AndroidManifest.xml rename to app/src/main/AndroidManifest.xml index 5c1fd8e..74430f9 100644 --- a/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,34 +21,43 @@ android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" - android:name="Bug" > + android:name=".YanaApplication" > + android:name=".gui.SplashScreen" + android:screenOrientation="portrait" + android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" > + + + + + + - - + + diff --git a/app/src/main/java/fr/nover/yana/MemoryProvider.java b/app/src/main/java/fr/nover/yana/MemoryProvider.java new file mode 100644 index 0000000..ec7e504 --- /dev/null +++ b/app/src/main/java/fr/nover/yana/MemoryProvider.java @@ -0,0 +1,112 @@ +package fr.nover.yana; + +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import fr.nover.yana.model.Category; +import fr.nover.yana.model.Commande; +import fr.nover.yana.model.Parameter; +import fr.nover.yana.model.YanaConfiguration; +import fr.nover.yana.utils.Helper; + +/** + * Created by sylvain on 29/08/15. + */ +public class MemoryProvider { + + private static final String LOG_TAG = MemoryProvider.class.getName(); + + private static MemoryProvider ourInstance; + + private ArrayList commandes = new ArrayList(); + + private ArrayList categories = new ArrayList(); + + public void setConfiguration(YanaConfiguration configuration) { + this.configuration = configuration; + } + + private YanaConfiguration configuration; + + + public static MemoryProvider getInstance() { + if (ourInstance == null) { + ourInstance = new MemoryProvider(); + } + + return ourInstance; + } + + public ArrayList getCommandes() { + return commandes; + } + + + + public void clear() { + commandes.clear(); + categories.clear(); + } + + public void initData(boolean full) { + int i = 0; + Parameter params = new Parameter("","0.7"); + Commande command; + + command = new Commande("YANA, montre-toi."); + command.setParameter(params); + commandes.add(i, command); + i++; + + command = new Commande("YANA, cache-toi."); + command.setParameter(params); + commandes.add(i, command); + i++; + + command = new Commande("YANA, active les évènements."); + command.setParameter(params); + commandes.add(i, command); + i++; + + command = new Commande("YANA, désactive les évènements."); + command.setParameter(params); + commandes.add(i, command); + i++; + + if (full) { + Category category =new Category("XBMC","XBMC"); + categories.add(category); + + category =new Category("Sons","vocalinfo_sound"); + categories.add(category); + + category =new Category("Relais radio","radioRelay_change_state"); + categories.add(category); + + category =new Category("Default","default"); + categories.add(category); + + } + } + + public ArrayList getCategories() { + return categories; + } + + + public Commande findCommande(String recrep) { + for(Commande commande :commandes ){ + if(commande.getName().equals(recrep)){ + return commande; + } + } + return null; + } + + public YanaConfiguration getConfiguration() { + return configuration; + } +} diff --git a/app/src/main/java/fr/nover/yana/YanaApplication.java b/app/src/main/java/fr/nover/yana/YanaApplication.java new file mode 100644 index 0000000..5e8b615 --- /dev/null +++ b/app/src/main/java/fr/nover/yana/YanaApplication.java @@ -0,0 +1,15 @@ +package fr.nover.yana; + + + +import android.app.Application; + + +public class YanaApplication extends Application { + @Override + public void onCreate() { + super.onCreate(); + + + } +} \ No newline at end of file diff --git a/src/fr/nover/yana/Configuration.java b/app/src/main/java/fr/nover/yana/gui/Configuration.java similarity index 55% rename from src/fr/nover/yana/Configuration.java rename to app/src/main/java/fr/nover/yana/gui/Configuration.java index aa69c14..1a658a5 100644 --- a/src/fr/nover/yana/Configuration.java +++ b/app/src/main/java/fr/nover/yana/gui/Configuration.java @@ -1,39 +1,34 @@ /** -*Cette application a été développée par Nicolas -Nover- Guilloux. -*Elle a été créée afin d'interagir avec YANA, lui-même créé par Idleman. +*Cette application a �t� d�velopp�e par Nicolas -Nover- Guilloux. +*Elle a �t� cr��e afin d'interagir avec YANA, lui-m�me cr�� par Idleman. *Trouvez les travaux d'Idleman ici : http://blog.idleman.fr/?p=1788 -*Vous pouvez me contacter à cette adresse : Etsu@live.fr +*Vous pouvez me contacter � cette adresse : Etsu@live.fr **/ -package fr.nover.yana; +package fr.nover.yana.gui; -import fr.nover.yana.R; -import fr.nover.yana.assistant_installation.Assistant_Installation; import android.content.Intent; import android.os.Bundle; -import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; -public class Configuration extends PreferenceActivity { +import fr.nover.yana.R; +import fr.nover.yana.gui.installation.Assistant_Installation; - String [] testValues = {"Mademoiselle" , "Madame", "Monsieur"}; +public class Configuration extends PreferenceActivity { + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.option); - final Intent SetupWizard = new Intent(this, Assistant_Installation.class); - - ListPreference lp = (ListPreference) findPreference("sexe"); - lp.setEntries(testValues); - lp.setEntryValues(testValues); - + final Intent setupWizard = new Intent(this, Assistant_Installation.class); + Preference button = (Preference)findPreference("button"); button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference arg0) { - startActivity(SetupWizard); + startActivity(setupWizard); finish(); return true; } diff --git a/app/src/main/java/fr/nover/yana/gui/SplashScreen.java b/app/src/main/java/fr/nover/yana/gui/SplashScreen.java new file mode 100644 index 0000000..11b4401 --- /dev/null +++ b/app/src/main/java/fr/nover/yana/gui/SplashScreen.java @@ -0,0 +1,40 @@ +package fr.nover.yana.gui; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; + +import fr.nover.yana.R; + +public class SplashScreen extends Activity { + + private static final int STOPSPLASH = 0; + private static final long SPLASHTIME = 1000; + + private Handler splashHandler = new Handler() { + + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case STOPSPLASH: + Intent main = new Intent(SplashScreen.this, Yana.class); + startActivity(main); + finish(); + break; + } + finish(); + super.handleMessage(msg); + } + }; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.splash_screen); + Message msg = new Message(); + msg.what = STOPSPLASH; + splashHandler.sendMessageDelayed(msg, SPLASHTIME); + } +} diff --git a/app/src/main/java/fr/nover/yana/gui/Yana.java b/app/src/main/java/fr/nover/yana/gui/Yana.java new file mode 100644 index 0000000..8dbd6ef --- /dev/null +++ b/app/src/main/java/fr/nover/yana/gui/Yana.java @@ -0,0 +1,637 @@ +/** + * Cette application a été développée par Nicolas -Nover- Guilloux. + * Elle a été créée afin d'interagir avec YANA, lui-même créé par Idleman. + * Trouvez les travaux d'Idleman ici : http://blog.idleman.fr/?p=1788 + * Vous pouvez me contacter à cette adresse : Etsu@live.fr + */ + +package fr.nover.yana.gui; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.ActivityNotFoundException; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.SharedPreferences; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager.NameNotFoundException; +import android.content.res.Resources; +import android.media.MediaPlayer; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.os.PowerManager; +import android.preference.PreferenceManager; +import android.speech.RecognizerIntent; +import android.speech.tts.TextToSpeech; +import android.support.v4.content.LocalBroadcastManager; +import android.text.InputType; +import android.util.Log; +import android.view.Gravity; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.EditText; +import android.widget.ExpandableListView; +import android.widget.ExpandableListView.OnChildClickListener; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.RelativeLayout; +import android.widget.ScrollView; +import android.widget.TextView; +import android.widget.Toast; +import android.widget.AdapterView.OnItemClickListener; + +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Locale; + +import butterknife.ButterKnife; +import butterknife.InjectView; +import fr.nover.yana.MemoryProvider; +import fr.nover.yana.R; +import fr.nover.yana.gui.adapter.CommandeAdapter; +import fr.nover.yana.gui.installation.Assistant_Installation; +import fr.nover.yana.model.Commande; +import fr.nover.yana.model.Parameter; +import fr.nover.yana.model.YanaConfiguration; +import fr.nover.yana.passerelles.Traitement; +import fr.nover.yana.passerelles.ShakeDetector; +import fr.nover.yana.gui.adapter.ExpandableListAdapter; +import fr.nover.yana.services.EventService; +import fr.nover.yana.services.ShakeService; + +public class Yana extends Activity implements TextToSpeech.OnInitListener { + + private static final String LOG_TAG = Yana.class.getName(); + + @InjectView(R.id.IPadress) + EditText iPadress; // Affiche et stocke l'adresse IP + @InjectView(R.id.tts_pref_false) + TextView tts_pref_false; // Affichage pour prévenir de l'état du TTS + @InjectView(R.id.btnRec) + ImageButton btnRec; // Bouton pour lancer l'initialisation + @InjectView(R.id.ip_adress) + ImageView ip_adress; // Affichage et actions du bouton à côté de ip_adress + @InjectView(R.id.ExpLV) + ExpandableListView expListView; + @InjectView(R.id.conversation) + RelativeLayout conversationView; + @InjectView(R.id.conversation_scroll) + ScrollView conversation_scroll; + @InjectView(R.id.commandes_layout) + ListView commandesListView; + + + + String recrep = "", rep = ""; // Déclare les variables correspondant aux divers élèments de la conversation avec le RPi + + YanaConfiguration configuration; + + boolean bienvenue, changelog = false; + static boolean bienvenue_fait = false; + + private TextToSpeech mTts;// Déclare le TTS + + static boolean testTTS = false, commande_actu = false; + + // A propos du Service (Intent pour le lancer et servstate pour savoir l'état du service) + public static Intent mShakeService, mEventService; + public static boolean servstate = false, eventstate = false; + boolean box_TTS; + + + public static String version; + String version_ex; + + SharedPreferences preferences; + Traitement traitement = new Traitement(); + + // Conversation et liste de commandes + int n = 1; + boolean update; + Handler myHandler = new Handler(); + + + // S'il reçoit un signal Broadcast du Service, il réagit en conséquence + private BroadcastReceiver newRecrep = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String contenu = intent.getStringExtra("contenu"); + conversation(contenu, "envoi"); + } + }; + + private BroadcastReceiver newRep = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String contenu = intent.getStringExtra("contenu"); + conversation(contenu, "reponse"); + } + }; + + // Juste une valeur fixe de référence pour le résultat d'Activités lancées + protected static final int RESULT_SPEECH = 1; + protected static final int OPTION = 2; + protected static final int TTS = 3; + + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.interface_yana); // Définit la layout a utiliser + ButterKnife.inject(this); + LocalBroadcastManager.getInstance(this).registerReceiver(newRecrep, // Déclare les liens Broadcast avec le Service + new IntentFilter("NewRecrep")); + LocalBroadcastManager.getInstance(this).registerReceiver(newRep, + new IntentFilter("NewRep")); + + iPadress.setInputType(InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT); // Définit l'EditText comme un champ URL + + + preferences = PreferenceManager.getDefaultSharedPreferences(this); + + getVersion(); + + + getConfig(); // Actualise la configuration + if (!commande_actu) { + commandes_actu(); + } + if (update) { + commandes_actu(); + } // Actualise les commandes si la config correspond + + ip_adress.setOnClickListener(new View.OnClickListener() { // Lance la configuration si on clique sur l'image � c�t� de l'adresse IP + @Override + public void onClick(View v) { + String IP_Adress = iPadress.getText().toString(); + if (IP_Adress.contains("action.php")) { + IP_Adress = IP_Adress.replace("action.php", ""); + Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://" + IP_Adress)); + startActivity(browserIntent); + } else { + Toast toast = Toast.makeText(getApplicationContext(), + "Votre adresse n'est pas bonne. :(", Toast.LENGTH_LONG); + toast.show(); + } + } + }); + + btnRec.setOnClickListener(new View.OnClickListener() { // S'effectue lors d'un appui sur le bouton Rec + @Override + public void onClick(View v) { + initialisation(); + } + }); + } + + private void getVersion() { + try { + PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); + version = pInfo.versionName; + Log.d(LOG_TAG, "Version de l'application : " + version); + } catch (NameNotFoundException e) { + e.printStackTrace(); + } + } + + public void onStart() { + super.onStart(); + + if (configuration.isAi()) { + Intent SetupWizard = new Intent(this, Assistant_Installation.class); + startActivityForResult(SetupWizard, OPTION); + } else { + if (bienvenue && box_TTS && !bienvenue_fait) { + bienvenue_fait = true; + rep = configuration.randomWelcome(); + mTts = new TextToSpeech(this, this); + } + + initchangeLog(); + } + } + + private void initchangeLog() { + if (changelog) { + String Changelog = "Impossible de charger les changelogs."; + + try { + Resources res = getResources(); + InputStream in_s = res.openRawResource(R.raw.changelog); + InputStreamReader in_r = new InputStreamReader(in_s, "UTF-8"); + + char[] b = new char[in_s.available()]; + in_r.read(b); + + Changelog = new String(b); + } catch (Exception e) { + Log.d(LOG_TAG, "" + e); + } + + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setMessage(Changelog) + .setTitle("Changelogs") + .setCancelable(false) + .setPositiveButton("OK", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + changelog = false; + traitement.verif_aux("Changelog_do", getApplicationContext()); + } + }); + AlertDialog alert = builder.create(); + alert.show(); + } + } + + public void onActivityResult(int requestCode, int resultCode, Intent data) { // S'exécute lors d'un retour d'activité + switch (requestCode) { + case RESULT_SPEECH: { // Dès que la reconnaissance vocale est terminée + if (resultCode == RESULT_OK && null != data) { + + ArrayList text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); + recrep = text.get(0); // Enregistre le résultat dans RecRep + + Commande commande = null; + int n = traitement.comparaison(recrep); // Compare les String pour trouver un ordre + if (n < 0) { + commande = new Commande(recrep); + } // Si la comparaison a échoué + else { // Sinon, la commande la plus proche de l'ordre est attribuée à Ordre + commande = MemoryProvider.getInstance().getCommandes().get(n); + } + + pretraitement(commande, n); // Envoie en Prétraitement + break; + } + } + + case OPTION: // Dès un retour de la configuration, il la recharge + getConfig(); + break; + } + } + + public void onInit(int i) { // S'exécute dès la création du mTts + try { + if (mTts.isLanguageAvailable(Locale.FRENCH) != TextToSpeech.LANG_AVAILABLE && !testTTS) { + new AlertDialog.Builder(this) + .setTitle("Le TTS n'est pas en Français.") + .setMessage("Android détecte que votre dispositif de Synthèse Vocale ne dispose pas du Français dans ses langues. Voulez-vous installer le Fran�ais ? Appuyez sur Non pour continuer quand m�me.") + .setNegativeButton("Non", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + testTTS = true; + } + }) + .setPositiveButton("Oui", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + Intent installIntent = new Intent(); + installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); + startActivity(installIntent); + } + }) + .show(); + } else { + testTTS = true; + mTts.setLanguage(Locale.FRENCH); + + if (rep.compareTo("") != 0) + mTts.speak(rep, TextToSpeech.QUEUE_FLUSH, null); // Il dicte sa phrase + rep = ""; + } // Au cas où Rep reste le même à la prochaine déclaration du TTS + } catch (Exception e) { + Toast t = Toast.makeText(getApplicationContext(), + "Impossible de vérifier les langues de votre TTS. Yana va tout de même essayer de le lancer.", + Toast.LENGTH_SHORT); + t.show(); + if (rep.compareTo("") != 0) + mTts.speak(rep, TextToSpeech.QUEUE_FLUSH, null); // Il dicte sa phrase + rep = ""; + } + } + + public void onDestroy() { // Quitte le TTS quand l'application se termine + if (mTts != null) { + mTts.stop(); + mTts.shutdown(); + } + super.onDestroy(); + } + + public void onResume() { + getConfig(); + commandes_Layout(); + super.onResume(); + } + + public boolean onCreateOptionsMenu(Menu menu) { // Il dit juste que y'a telle ou telle chose dans le menu + getMenuInflater().inflate(R.menu.menu, menu); + return super.onCreateOptionsMenu(menu); + } + + public boolean onOptionsItemSelected(MenuItem item) { // Il dit que si on clique sur tel objet, on effectue telle action + if (item.getItemId() == R.id.Btnconfiguration) { + startActivityForResult(new Intent(this, Configuration.class), OPTION); + } + if (item.getItemId() == R.id.updateCom) { + commandes_actu(); + } + return super.onOptionsItemSelected(item); + } + + void getConfig() { // Importe les paramètres + + configuration = new YanaConfiguration(preferences, getApplicationContext()); + MemoryProvider.getInstance().setConfiguration(configuration); + if (configuration.getIp() != "") iPadress.setText(configuration.getIp()); + + + box_TTS = preferences.getBoolean("tts_pref", true); // Importe l'état de la box (autorise ou non le TTS) + if (box_TTS == false) tts_pref_false.setText("Attention ! Votre TTS est désactivé."); + else tts_pref_false.setText(""); + + Log.d(LOG_TAG, "test"); + + bienvenue = preferences.getBoolean("bienvenue", true); + + version_ex = preferences.getString("version", ""); + if (version.compareTo(version_ex) != 0) changelog = true; + + update = preferences.getBoolean("update", false); + + + mShakeService = new Intent(Yana.this, ShakeService.class); // Démarre le service en fonction de l'état de la box + boolean box_shake = preferences.getBoolean("shake", false); + if ((box_shake == true) && servstate == false) { + startService(mShakeService); + } else if ((box_shake == false) && servstate == true) { + stopService(mShakeService); + } else if ((box_shake == true) && servstate == true) { // Réactualise les variables au cas où on passe d'une reco en continu � une reco par Shake + stopService(mShakeService); + startService(mShakeService); + } + + mEventService = new Intent(Yana.this, EventService.class); // Démarre le service en fonction de l'état de la box + boolean box_Event = preferences.getBoolean("event", false); + if ((box_Event == true) && eventstate == false) { + startService(mEventService); + EventService.first = false; + } else if ((box_Event == false) && eventstate == true) { + stopService(mEventService); + } + + + if ( configuration.getVoiceSens() >= 1) { + Toast t = Toast.makeText(getApplicationContext(), + "Attention ! La sensibilité d'analyse de la voix est trop forte. Votre programme choisira la commande la plus proche de votre ordre. Pour mettre une sensibilit�, votre valeur dans les options doit �tre inf�rieure � 10. ", + Toast.LENGTH_SHORT); + t.show(); + } + + ShakeDetector.getConfig(configuration.getShakeSens()); + + Log.d(LOG_TAG, "End Of Config"); + } + + void initialisation() { // Initialise le processus + Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); + intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "fr-FR"); + + try { + startActivityForResult(intent, RESULT_SPEECH); + } // Lance l'acquisition vocale + + catch (ActivityNotFoundException a) { + Toast t = Toast.makeText(getApplicationContext(), + "Oh bah zut alors ! Ton Android n'a pas install� le STT ou ne le supporte pas. Regarde les options (langue et saisie).", + Toast.LENGTH_SHORT); + t.show(); + } + } + + void conversation(String texte, String envoi) { // Ici on inscrit la conversation entre l'utilisateur et le RPi + + TextView valueTV = new TextView(this); // Cr�� le TextView pour afficher le message + valueTV.setText(texte); + valueTV.setId(n); + + ImageView fleche = new ImageView(this); // Importe la petite fl�che de droite ou de gauche + + RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); + RelativeLayout.LayoutParams params_fleche = new RelativeLayout.LayoutParams(20, 20); + + if (envoi == "envoi") { + fleche.setImageResource(R.drawable.envoi); + params_fleche.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); + params_fleche.addRule(RelativeLayout.ALIGN_BOTTOM, n); + + params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); + params.addRule(RelativeLayout.BELOW, (n - 1)); + + valueTV.setBackgroundColor(getResources().getColor(R.color.envoi)); + } else { + fleche.setImageResource(R.drawable.reponse); + params_fleche.addRule(RelativeLayout.ALIGN_PARENT_LEFT); + params_fleche.addRule(RelativeLayout.ALIGN_BOTTOM, n); + + params.addRule(RelativeLayout.ALIGN_PARENT_LEFT); + params.addRule(RelativeLayout.BELOW, (n - 1)); + + valueTV.setBackgroundColor(getResources().getColor(R.color.recu)); + } + + n = n + 1; + + valueTV.setPadding(10, 10, 10, 10); + params.setMargins(20, 0, 20, 20); + params_fleche.setMargins(0, 0, 0, 20); + + valueTV.setLayoutParams(params); + fleche.setLayoutParams(params_fleche); + conversationView.addView(valueTV); + conversationView.addView(fleche); + + conversation_scroll.post(new Runnable() { + public void run() { + conversation_scroll.fullScroll(View.FOCUS_DOWN); + } + }); // Pour ancrer en bas � chaque nouvel ordre + } + + void commandes_Layout() { // Ici, on va inscrire les commandes sur le panel + + if ( MemoryProvider.getInstance().getCategories().size() > 0 ) { + ExpandableListAdapter listAdapter = new ExpandableListAdapter(this, MemoryProvider.getInstance().getCategories()); + expListView.setAdapter(listAdapter); + + expListView.setOnChildClickListener(new OnChildClickListener() { + @Override + public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long itemID) { + int ID = (int) itemID; + ArrayList reco = MemoryProvider.getInstance().getCategories().get(groupPosition).getData(); + int i = traitement.comparaison(reco.get(ID).getName()); + pretraitement(MemoryProvider.getInstance().getCommandes().get(i),i); + return false; + } + }); + } + + ArrayAdapter modeAdapter = new CommandeAdapter(this,traitement.commandes_a); + commandesListView.setAdapter(modeAdapter); + + commandesListView.setOnItemClickListener(new OnItemClickListener() { + public void onItemClick(AdapterView arg0, View view, int arg2, long itemID) { + int ID = (int) itemID; + int i = traitement.comparaison(traitement.commandes_a.get(ID).getName()); + pretraitement(MemoryProvider.getInstance().getCommandes().get(i), i); + } + }); + } + + void commandes_actu() { // Ici on va actualiser la liste des commandes + ConnectivityManager cm = (ConnectivityManager) getApplicationContext() + .getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); + Parameter params = new Parameter("",""); + + if (commande_actu && !configuration.getToken().equals("")) { + if (activeNetwork != null) { + if (traitement.pick_JSON(iPadress.getText().toString(), configuration.getToken())) { // Commence le protocole de reception et les enregistre dans une ArrayList + Toast toast = Toast.makeText(getApplicationContext(), + "Update fait !", Toast.LENGTH_LONG); + toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 80); + toast.show(); + } else { + Toast toast = Toast.makeText(getApplicationContext(), // En cas d'�chec, il pr�vient l'utilisateur + MemoryProvider.getInstance().getCommandes().get(MemoryProvider.getInstance().getCommandes().size() - 1).getName(), Toast.LENGTH_LONG); + toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 80); + toast.show(); + traitement.commandes_a = new ArrayList(MemoryProvider.getInstance().getCommandes()); + } + } else { + Toast toast = Toast.makeText(getApplicationContext(), // En cas d'�chec, il pr�vient l'utilisateur + "Vous n'avez pas de connexion internet !", Toast.LENGTH_LONG); + toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 80); + toast.show(); + traitement.commandes_a = new ArrayList(MemoryProvider.getInstance().getCommandes()); + } + } else if (configuration.getToken().isEmpty() && !configuration.isAi()) { + + MemoryProvider.getInstance().getCommandes().clear(); + + MemoryProvider.getInstance().initData(false); + + Commande command = new Commande("Vous n'avez pas entr� le Token. L'application ne peut pas communiquer avec votre Raspberry Pi.",params); + MemoryProvider.getInstance().getCommandes().add(command); + + + Toast toast = Toast.makeText(getApplicationContext(), // En cas d'�chec, il pr�vient l'utilisateur + MemoryProvider.getInstance().getCommandes().get(MemoryProvider.getInstance().getCommandes().size() - 1).getName(), Toast.LENGTH_LONG); + toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 80); + toast.show(); + + traitement.commandes_a = new ArrayList(MemoryProvider.getInstance().getCommandes()); + } else { + commande_actu = true; + MemoryProvider.getInstance().getCommandes().clear(); + + MemoryProvider.getInstance().initData(false); + + Commande command = new Commande("Vous n'avez pas encore actualisé vos commandes.",params); + MemoryProvider.getInstance().getCommandes().add(command); + + traitement.commandes_a = new ArrayList(MemoryProvider.getInstance().getCommandes()); + } + + commandes_Layout(); + } + + void pretraitement(final Commande commande, final int n) { // Ici, on va analyser la r�ponse si elle est traitable localement. Sinon, on l'envoie au RPi + conversation(commande.getName(), "envoi"); + + if (n > 0) { + Parameter params = commande.getParameter(); + Log.d("", "Params : " + params); + + if (params.getType() != null) { + String reponse = ""; + String type = params.getType(); + if (type.equals("talk")) { + reponse = params.getContenu(); + if (box_TTS == true && !traitement.sons) { // Lance la synth�se vocale si les options l'autorisent + mTts = new TextToSpeech(this, this); + } + } else if (type.equals("sound")) { + String son = params.getContenu(); + reponse = "*" + son + "*"; + try { + int ID = getResources().getIdentifier(son, "raw", "fr.nover.yana"); + + MediaPlayer mp = MediaPlayer.create(this, ID); + mp.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); + mp.start(); + } catch (Exception e) { + } + } + + if (reponse.compareTo("") == 0) conversation(reponse, "reponse"); + } + } + + myHandler.postDelayed(new Runnable() { + + @Override + public void run() { + pretraitement2(commande, n); + } + }, 250); + } + + void pretraitement2(Commande commande, int n) { // Deuxi�me partie du Pr�traitement (MyHandler l'oblige pour afficher l'ordre avant le traitement) + rep = ""; + + if (traitement.verif_aux(commande.getName(), this)) rep = traitement.rep; // V�rification auxiliaire + else if (n == -1) + rep = "Je ne vois aucun ordre qui ressemble à ce que vous avez dit..."; // Si Ordre=Recrep alors c'est que la reconnaissance par pertinence a �chou� + else if (commande.getParameter().getUrl().compareTo("") == 0) + rep = ""; // Si l'ordre ne contient aucun URL, �a n'est pas utile de l'envoyer au serveur + else { + ConnectivityManager cm = (ConnectivityManager) getApplicationContext() + .getSystemService(Context.CONNECTIVITY_SERVICE); + + NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); + + if (activeNetwork != null) { // V�rifie le r�seau + Log.d("Ordre", "" + commande.getName()); + rep = traitement.HTTP_Contact(configuration.getCommandUrl(commande), getApplicationContext()); + } // Envoie au RPi et enregistre sa r�ponse + else { + Toast toast = Toast.makeText(getApplicationContext(), // En cas d'�chec, il pr�vient l'utilisateur + "Vous n'avez pas de connexion internet !", Toast.LENGTH_LONG); + toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 80); + toast.show(); + } + } + + Log.d(LOG_TAG, "Rep : " + rep); + + if (rep.compareTo("") != 0) { // Si la r�ponse n'est pas valide, �a ne sert � rien de la dire ni de l'�noncer + conversation(rep, "reponse"); + + if (box_TTS == true && rep.length() < 300 && !traitement.sons) { // Lance la synth�se vocale si les options l'autorisent et si la r�ponse n'est pas trop longue + mTts = new TextToSpeech(this, this); + } + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/fr/nover/yana/gui/adapter/CommandeAdapter.java b/app/src/main/java/fr/nover/yana/gui/adapter/CommandeAdapter.java new file mode 100644 index 0000000..8f655e6 --- /dev/null +++ b/app/src/main/java/fr/nover/yana/gui/adapter/CommandeAdapter.java @@ -0,0 +1,49 @@ +package fr.nover.yana.gui.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.TextView; + +import java.util.ArrayList; +import java.util.List; + +import fr.nover.yana.R; +import fr.nover.yana.gui.Yana; +import fr.nover.yana.model.Commande; + +/** + * Created by sylvain on 29/08/15. + */ +public class CommandeAdapter extends ArrayAdapter { + + private List commandes; + private Context context; + + public CommandeAdapter(Context context, List commandes) { + super(context, R.layout.command_list,commandes); + this.commandes = commandes; + this.context = context; + } + + + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + LayoutInflater inflater = (LayoutInflater) context + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View rowView = inflater.inflate( R.layout.command_list, parent, false); + Commande commande = null; + if (commandes != null) { + commande = commandes.get(position); + TextView textV = (TextView) rowView.findViewById(android.R.id.text1); + textV.setText(commande.getName()); + + } + return rowView; + } + + +} diff --git a/src/fr/nover/yana/passerelles/ExpandableListAdapter.java b/app/src/main/java/fr/nover/yana/gui/adapter/ExpandableListAdapter.java similarity index 82% rename from src/fr/nover/yana/passerelles/ExpandableListAdapter.java rename to app/src/main/java/fr/nover/yana/gui/adapter/ExpandableListAdapter.java index c82ca12..75b7c13 100644 --- a/src/fr/nover/yana/passerelles/ExpandableListAdapter.java +++ b/app/src/main/java/fr/nover/yana/gui/adapter/ExpandableListAdapter.java @@ -1,10 +1,11 @@ -package fr.nover.yana.passerelles; +package fr.nover.yana.gui.adapter; import java.util.ArrayList; import java.util.HashMap; import fr.nover.yana.R; - +import fr.nover.yana.model.Category; + import android.content.Context; import android.graphics.Typeface; import android.view.LayoutInflater; @@ -16,20 +17,17 @@ public class ExpandableListAdapter extends BaseExpandableListAdapter { private Context _context; - private ArrayList _listDataHeader; // header titles + private ArrayList _listDataHeader; // header titles // child data in format of header title, child title - private HashMap> _listDataChild; - public ExpandableListAdapter(Context context, ArrayList listDataHeader, - HashMap> listChildData) { + public ExpandableListAdapter(Context context, ArrayList listDataHeader) { this._context = context; this._listDataHeader = listDataHeader; - this._listDataChild = listChildData; } @Override public Object getChild(int groupPosition, int childPosititon) { - return this._listDataChild.get(this._listDataHeader.get(groupPosition)) + return this._listDataHeader.get(groupPosition).getData() .get(childPosititon); } @@ -59,13 +57,13 @@ public View getChildView(int groupPosition, final int childPosition, @Override public int getChildrenCount(int groupPosition) { - return this._listDataChild.get(this._listDataHeader.get(groupPosition)) + return this._listDataHeader.get(groupPosition).getData() .size(); } @Override public Object getGroup(int groupPosition) { - return this._listDataHeader.get(groupPosition); + return this._listDataHeader.get(groupPosition).getName(); } @Override diff --git a/app/src/main/java/fr/nover/yana/gui/installation/AIConfiguration.java b/app/src/main/java/fr/nover/yana/gui/installation/AIConfiguration.java new file mode 100644 index 0000000..49c57ee --- /dev/null +++ b/app/src/main/java/fr/nover/yana/gui/installation/AIConfiguration.java @@ -0,0 +1,51 @@ +package fr.nover.yana.gui.installation; + +import fr.nover.yana.R; + +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.ListPreference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceManager; + +public class AIConfiguration extends PreferenceActivity { + + String[] Values = {"Mademoiselle", "Madame", "Monsieur"}; + public static String nom, prenom, pseudonyme, ipAdress, ipAdress_ext, ssid; + public static boolean tts, shakeService, update_Com, externe, eventService; + public static int sexe; + + SharedPreferences.Editor geted; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.option); + + geted = PreferenceManager.getDefaultSharedPreferences(this).edit(); + geted.putBoolean("AI", false); + geted.putString("name", nom); + geted.putString("surname", prenom); + geted.putString("nickname", pseudonyme); + + geted.putString("IPadress", ipAdress); + if (externe) { + geted.putBoolean("externe", true); + geted.putString("IPadress_ext", ipAdress_ext); + geted.putString("SSID", ssid); + } else { + geted.putBoolean("externe", false); + } + geted.putBoolean("shake", shakeService); + geted.putBoolean("event", eventService); + geted.putBoolean("tts_pref", tts); + geted.putBoolean("update", update_Com); + geted.commit(); + + ListPreference lp = (ListPreference) findPreference("sexe"); + lp.setEntries(Values); + lp.setEntryValues(Values); + if (sexe < 3) lp.setValue(Values[sexe]); + + finish(); + } +} \ No newline at end of file diff --git a/src/fr/nover/yana/assistant_installation/Assistant_Installation.java b/app/src/main/java/fr/nover/yana/gui/installation/Assistant_Installation.java similarity index 93% rename from src/fr/nover/yana/assistant_installation/Assistant_Installation.java rename to app/src/main/java/fr/nover/yana/gui/installation/Assistant_Installation.java index f63660e..ca98003 100644 --- a/src/fr/nover/yana/assistant_installation/Assistant_Installation.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/Assistant_Installation.java @@ -14,15 +14,15 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation; +package fr.nover.yana.gui.installation; import fr.nover.yana.R; -import fr.nover.yana.assistant_installation.wizard.model.AbstractWizardModel; -import fr.nover.yana.assistant_installation.wizard.model.ModelCallbacks; -import fr.nover.yana.assistant_installation.wizard.model.Page; -import fr.nover.yana.assistant_installation.wizard.ui.PageFragmentCallbacks; -import fr.nover.yana.assistant_installation.wizard.ui.ReviewFragment; -import fr.nover.yana.assistant_installation.wizard.ui.StepPagerStrip; +import fr.nover.yana.gui.installation.wizard.model.AbstractWizardModel; +import fr.nover.yana.gui.installation.wizard.model.ModelCallbacks; +import fr.nover.yana.gui.installation.wizard.model.Page; +import fr.nover.yana.gui.installation.wizard.ui.PageFragmentCallbacks; +import fr.nover.yana.gui.installation.wizard.ui.ReviewFragment; +import fr.nover.yana.gui.installation.wizard.ui.StepPagerStrip; import android.content.Intent; import android.os.Bundle; @@ -36,6 +36,7 @@ import android.view.ViewGroup; import android.widget.Button; +import java.util.ArrayList; import java.util.List; public class Assistant_Installation extends FragmentActivity implements @@ -54,10 +55,10 @@ public class Assistant_Installation extends FragmentActivity implements private Button mNextButton; private Button mPrevButton; - private List mCurrentPageSequence; + private List mCurrentPageSequence = new ArrayList<>(); private StepPagerStrip mStepPagerStrip; - Intent Config; + Intent config; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -100,7 +101,7 @@ public void onPageSelected(int position) { } }); - final Intent get_config = new Intent(this, get_config.class); + final Intent get_config = new Intent(this, AIConfiguration.class); mNextButton.setOnClickListener(new View.OnClickListener() { @Override diff --git a/src/fr/nover/yana/assistant_installation/Stockage_AI.java b/app/src/main/java/fr/nover/yana/gui/installation/Stockage_AI.java similarity index 62% rename from src/fr/nover/yana/assistant_installation/Stockage_AI.java rename to app/src/main/java/fr/nover/yana/gui/installation/Stockage_AI.java index 91041ee..a32b61b 100644 --- a/src/fr/nover/yana/assistant_installation/Stockage_AI.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/Stockage_AI.java @@ -14,16 +14,16 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation; +package fr.nover.yana.gui.installation; -import fr.nover.yana.assistant_installation.wizard.model.AbstractWizardModel; -import fr.nover.yana.assistant_installation.wizard.model.BranchPage; -import fr.nover.yana.assistant_installation.wizard.model.CustomerInfoPage; -import fr.nover.yana.assistant_installation.wizard.model.IPAdressInfoPage; -import fr.nover.yana.assistant_installation.wizard.model.IPAdress_ExtInfoPage; -import fr.nover.yana.assistant_installation.wizard.model.MultipleFixedChoicePage; -import fr.nover.yana.assistant_installation.wizard.model.PageList; -import fr.nover.yana.assistant_installation.wizard.model.SingleFixedChoicePage; +import fr.nover.yana.gui.installation.wizard.model.AbstractWizardModel; +import fr.nover.yana.gui.installation.wizard.model.BranchPage; +import fr.nover.yana.gui.installation.wizard.model.CustomerInfoPage; +import fr.nover.yana.gui.installation.wizard.model.IPAdressInfoPage; +import fr.nover.yana.gui.installation.wizard.model.IPAdress_ExtInfoPage; +import fr.nover.yana.gui.installation.wizard.model.MultipleFixedChoicePage; +import fr.nover.yana.gui.installation.wizard.model.PageList; +import fr.nover.yana.gui.installation.wizard.model.SingleFixedChoicePage; import android.content.Context; @@ -35,9 +35,9 @@ public Stockage_AI(Context context) { @Override protected PageList onNewRootPageList() { return new PageList( - new CustomerInfoPage(this, "Qui êtes-vous ?") + new CustomerInfoPage(this, "Qui �tes-vous ?") .setRequired(true), - new SingleFixedChoicePage(this, "Vous êtes un(e)...") + new SingleFixedChoicePage(this, "Vous �tes un(e)...") .setChoices("Mademoiselle", "Madame", "Monsieur") .setRequired(true), new BranchPage(this, "Voulez-vous utiliser Yana sur Internet ?") @@ -51,7 +51,7 @@ protected PageList onNewRootPageList() { ) .setRequired(true), new MultipleFixedChoicePage(this, "Vous voulez activer ...") - .setChoices("Le ShakeService", "Les événements", "La synthèse vocale", "La mise à jour des commandes au démarrage") + .setChoices("Le ShakeService", "Les �v�nements", "La synth�se vocale", "La mise � jour des commandes au d�marrage") ); } } diff --git a/src/fr/nover/yana/assistant_installation/wizard/model/AbstractWizardModel.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/AbstractWizardModel.java similarity index 98% rename from src/fr/nover/yana/assistant_installation/wizard/model/AbstractWizardModel.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/model/AbstractWizardModel.java index 0274e02..46e200d 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/model/AbstractWizardModel.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/AbstractWizardModel.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.model; +package fr.nover.yana.gui.installation.wizard.model; import android.content.Context; import android.os.Bundle; diff --git a/src/fr/nover/yana/assistant_installation/wizard/model/BranchPage.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/BranchPage.java similarity index 96% rename from src/fr/nover/yana/assistant_installation/wizard/model/BranchPage.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/model/BranchPage.java index 4b41a81..5665f57 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/model/BranchPage.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/BranchPage.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.model; +package fr.nover.yana.gui.installation.wizard.model; -import fr.nover.yana.assistant_installation.wizard.ui.SingleChoiceFragment; +import fr.nover.yana.gui.installation.wizard.ui.SingleChoiceFragment; import android.support.v4.app.Fragment; import android.text.TextUtils; diff --git a/src/fr/nover/yana/assistant_installation/wizard/model/CustomerInfoPage.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/CustomerInfoPage.java similarity index 84% rename from src/fr/nover/yana/assistant_installation/wizard/model/CustomerInfoPage.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/model/CustomerInfoPage.java index 1ec9f5d..35902ef 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/model/CustomerInfoPage.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/CustomerInfoPage.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.model; +package fr.nover.yana.gui.installation.wizard.model; -import fr.nover.yana.assistant_installation.wizard.ui.CustomerInfoFragment; +import fr.nover.yana.gui.installation.wizard.ui.CustomerInfoFragment; import android.support.v4.app.Fragment; import android.text.TextUtils; @@ -28,7 +28,7 @@ */ public class CustomerInfoPage extends Page { public static final String NAME_DATA_KEY = "nom"; - public static final String SURNAME_DATA_KEY = "prénom"; + public static final String SURNAME_DATA_KEY = "pr�nom"; public static final String NICKNAME_DATA_KEY = "pseudonyme"; public CustomerInfoPage(ModelCallbacks callbacks, String title) { @@ -43,7 +43,7 @@ public Fragment createFragment() { @Override public void getReviewItems(ArrayList dest) { dest.add(new ReviewItem("Nom", mData.getString(NAME_DATA_KEY), getKey(), -1)); - dest.add(new ReviewItem("Prénom", mData.getString(SURNAME_DATA_KEY), getKey(), -1)); + dest.add(new ReviewItem("Pr�nom", mData.getString(SURNAME_DATA_KEY), getKey(), -1)); dest.add(new ReviewItem("Pseudonyme", mData.getString(NICKNAME_DATA_KEY), getKey(), -1)); } diff --git a/src/fr/nover/yana/assistant_installation/wizard/model/IPAdressInfoPage.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/IPAdressInfoPage.java similarity index 91% rename from src/fr/nover/yana/assistant_installation/wizard/model/IPAdressInfoPage.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/model/IPAdressInfoPage.java index 25ad844..6844a85 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/model/IPAdressInfoPage.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/IPAdressInfoPage.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.model; +package fr.nover.yana.gui.installation.wizard.model; -import fr.nover.yana.assistant_installation.wizard.ui.IPAdressInfoFragment; +import fr.nover.yana.gui.installation.wizard.ui.IPAdressInfoFragment; import android.support.v4.app.Fragment; import android.text.TextUtils; diff --git a/src/fr/nover/yana/assistant_installation/wizard/model/IPAdress_ExtInfoPage.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/IPAdress_ExtInfoPage.java similarity index 88% rename from src/fr/nover/yana/assistant_installation/wizard/model/IPAdress_ExtInfoPage.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/model/IPAdress_ExtInfoPage.java index dd6eb9d..6fa410d 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/model/IPAdress_ExtInfoPage.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/IPAdress_ExtInfoPage.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.model; +package fr.nover.yana.gui.installation.wizard.model; -import fr.nover.yana.assistant_installation.wizard.ui.IPAdress_ExtInfoFragment; +import fr.nover.yana.gui.installation.wizard.ui.IPAdress_ExtInfoFragment; import android.support.v4.app.Fragment; import android.text.TextUtils; @@ -28,7 +28,7 @@ */ public class IPAdress_ExtInfoPage extends Page { public static final String IPADRESS_DATA_KEY = "Lien interne"; - public static final String SSID_DATA_KEY = "Nom du réseau local"; + public static final String SSID_DATA_KEY = "Nom du r�seau local"; public static final String IPADRESS_EXT_DATA_KEY = "Lien externe"; public IPAdress_ExtInfoPage(ModelCallbacks callbacks, String title) { diff --git a/src/fr/nover/yana/assistant_installation/wizard/model/ModelCallbacks.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/ModelCallbacks.java similarity index 85% rename from src/fr/nover/yana/assistant_installation/wizard/model/ModelCallbacks.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/model/ModelCallbacks.java index 59d03d8..2f87935 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/model/ModelCallbacks.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/ModelCallbacks.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.model; +package fr.nover.yana.gui.installation.wizard.model; /** * Callback interface connecting {@link Page}, {@link AbstractWizardModel}, and model container - * objects (e.g. {@link fr.nover.yana.assistant_installation.MainActivity}. + * objects (e.g. {@link fr.nover.yana.gui.installation.MainActivity}. */ public interface ModelCallbacks { void onPageDataChanged(Page page); diff --git a/src/fr/nover/yana/assistant_installation/wizard/model/MultipleFixedChoicePage.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/MultipleFixedChoicePage.java similarity index 92% rename from src/fr/nover/yana/assistant_installation/wizard/model/MultipleFixedChoicePage.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/model/MultipleFixedChoicePage.java index 931a86b..10d58fb 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/model/MultipleFixedChoicePage.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/MultipleFixedChoicePage.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.model; +package fr.nover.yana.gui.installation.wizard.model; -import fr.nover.yana.assistant_installation.wizard.ui.MultipleChoiceFragment; +import fr.nover.yana.gui.installation.wizard.ui.MultipleChoiceFragment; import android.support.v4.app.Fragment; diff --git a/src/fr/nover/yana/assistant_installation/wizard/model/Page.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/Page.java similarity index 97% rename from src/fr/nover/yana/assistant_installation/wizard/model/Page.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/model/Page.java index 2625122..cfd6404 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/model/Page.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/Page.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.model; +package fr.nover.yana.gui.installation.wizard.model; import android.os.Bundle; import android.support.v4.app.Fragment; diff --git a/src/fr/nover/yana/assistant_installation/wizard/model/PageList.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/PageList.java similarity index 95% rename from src/fr/nover/yana/assistant_installation/wizard/model/PageList.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/model/PageList.java index e3fc09c..45a7cf8 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/model/PageList.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/PageList.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.model; +package fr.nover.yana.gui.installation.wizard.model; import java.util.ArrayList; diff --git a/src/fr/nover/yana/assistant_installation/wizard/model/PageTreeNode.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/PageTreeNode.java similarity index 93% rename from src/fr/nover/yana/assistant_installation/wizard/model/PageTreeNode.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/model/PageTreeNode.java index ac38837..d2e95a2 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/model/PageTreeNode.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/PageTreeNode.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.model; +package fr.nover.yana.gui.installation.wizard.model; import java.util.ArrayList; diff --git a/src/fr/nover/yana/assistant_installation/wizard/model/ReviewItem.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/ReviewItem.java similarity index 93% rename from src/fr/nover/yana/assistant_installation/wizard/model/ReviewItem.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/model/ReviewItem.java index d0d4743..1aec1dd 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/model/ReviewItem.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/ReviewItem.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.model; +package fr.nover.yana.gui.installation.wizard.model; /** * Represents a single line item on the final review page. * - * @see fr.nover.yana.assistant_installation.wizard.ui.ReviewFragment + * @see fr.nover.yana.gui.installation.wizard.ui.ReviewFragment */ public class ReviewItem { public static final int DEFAULT_WEIGHT = 0; diff --git a/src/fr/nover/yana/assistant_installation/wizard/model/SingleFixedChoicePage.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/SingleFixedChoicePage.java similarity index 93% rename from src/fr/nover/yana/assistant_installation/wizard/model/SingleFixedChoicePage.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/model/SingleFixedChoicePage.java index 9c99b2d..77d6eb0 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/model/SingleFixedChoicePage.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/model/SingleFixedChoicePage.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.model; +package fr.nover.yana.gui.installation.wizard.model; -import fr.nover.yana.assistant_installation.wizard.ui.SingleChoiceFragment; +import fr.nover.yana.gui.installation.wizard.ui.SingleChoiceFragment; import android.support.v4.app.Fragment; import android.text.TextUtils; diff --git a/src/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/CustomerInfoFragment.java similarity index 97% rename from src/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/CustomerInfoFragment.java index 643a47f..398d556 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/CustomerInfoFragment.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.ui; +package fr.nover.yana.gui.installation.wizard.ui; import fr.nover.yana.R; -import fr.nover.yana.assistant_installation.wizard.model.CustomerInfoPage; +import fr.nover.yana.gui.installation.wizard.model.CustomerInfoPage; import android.app.Activity; import android.content.Context; diff --git a/src/fr/nover/yana/assistant_installation/wizard/ui/IPAdressInfoFragment.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/IPAdressInfoFragment.java similarity index 96% rename from src/fr/nover/yana/assistant_installation/wizard/ui/IPAdressInfoFragment.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/IPAdressInfoFragment.java index 7a57bd1..0862503 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/ui/IPAdressInfoFragment.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/IPAdressInfoFragment.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.ui; +package fr.nover.yana.gui.installation.wizard.ui; import fr.nover.yana.R; -import fr.nover.yana.assistant_installation.wizard.model.IPAdressInfoPage; +import fr.nover.yana.gui.installation.wizard.model.IPAdressInfoPage; import android.app.Activity; import android.content.Context; diff --git a/src/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/IPAdress_ExtInfoFragment.java similarity index 97% rename from src/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/IPAdress_ExtInfoFragment.java index a1d155f..dfffc62 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/IPAdress_ExtInfoFragment.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.ui; +package fr.nover.yana.gui.installation.wizard.ui; import fr.nover.yana.R; -import fr.nover.yana.assistant_installation.wizard.model.IPAdress_ExtInfoPage; +import fr.nover.yana.gui.installation.wizard.model.IPAdress_ExtInfoPage; import android.app.Activity; import android.content.Context; diff --git a/src/fr/nover/yana/assistant_installation/wizard/ui/MultipleChoiceFragment.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/MultipleChoiceFragment.java similarity index 95% rename from src/fr/nover/yana/assistant_installation/wizard/ui/MultipleChoiceFragment.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/MultipleChoiceFragment.java index fdc0d9b..1d28cdf 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/ui/MultipleChoiceFragment.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/MultipleChoiceFragment.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.ui; +package fr.nover.yana.gui.installation.wizard.ui; import fr.nover.yana.R; -import fr.nover.yana.assistant_installation.wizard.model.MultipleFixedChoicePage; -import fr.nover.yana.assistant_installation.wizard.model.Page; +import fr.nover.yana.gui.installation.wizard.model.MultipleFixedChoicePage; +import fr.nover.yana.gui.installation.wizard.model.Page; import android.app.Activity; import android.os.Bundle; diff --git a/src/fr/nover/yana/assistant_installation/wizard/ui/PageFragmentCallbacks.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/PageFragmentCallbacks.java similarity index 84% rename from src/fr/nover/yana/assistant_installation/wizard/ui/PageFragmentCallbacks.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/PageFragmentCallbacks.java index da324ba..c890482 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/ui/PageFragmentCallbacks.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/PageFragmentCallbacks.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.ui; +package fr.nover.yana.gui.installation.wizard.ui; -import fr.nover.yana.assistant_installation.wizard.model.Page; +import fr.nover.yana.gui.installation.wizard.model.Page; public interface PageFragmentCallbacks { Page onGetPage(String key); diff --git a/src/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/ReviewFragment.java similarity index 80% rename from src/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/ReviewFragment.java index 7d19f17..f420ebb 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/ReviewFragment.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.ui; +package fr.nover.yana.gui.installation.wizard.ui; import fr.nover.yana.R; -import fr.nover.yana.assistant_installation.get_config; -import fr.nover.yana.assistant_installation.wizard.model.AbstractWizardModel; -import fr.nover.yana.assistant_installation.wizard.model.ModelCallbacks; -import fr.nover.yana.assistant_installation.wizard.model.Page; -import fr.nover.yana.assistant_installation.wizard.model.ReviewItem; +import fr.nover.yana.gui.installation.AIConfiguration; +import fr.nover.yana.gui.installation.wizard.model.AbstractWizardModel; +import fr.nover.yana.gui.installation.wizard.model.ModelCallbacks; +import fr.nover.yana.gui.installation.wizard.model.Page; +import fr.nover.yana.gui.installation.wizard.model.ReviewItem; import android.app.Activity; import android.content.Intent; @@ -178,56 +178,62 @@ public View getView(int position, View view, ViewGroup container) { if(value.compareTo("(None)")==0){value="";} if(type.compareTo("Nom")==0){ - get_config.Nom=value;} + AIConfiguration.nom=value;} - else if(type.compareTo("Prénom")==0){ - get_config.Prénom=value;} + else if(type.compareTo("Pr�nom")==0){ + AIConfiguration.prenom=value;} else if(type.compareTo("Pseudonyme")==0){ - get_config.Pseudonyme=value;} + AIConfiguration.pseudonyme=value;} - else if(type.compareTo("Vous êtes un(e)...")==0){ - Log.d("Réussite !", value); + else if(type.compareTo("Vous �tes un(e)...")==0){ + Log.d("R�ussite !", value); if(value.compareTo("")==0){ - get_config.Sexe=3;} + AIConfiguration.sexe=3;} else if(value.compareTo("Mademoiselle")==0){ - get_config.Sexe=0;} + AIConfiguration.sexe=0;} else if(value.compareTo("Madame")==0){ - get_config.Sexe=1;} + AIConfiguration.sexe=1;} else if(value.compareTo("Monsieur")==0){ - get_config.Sexe=2;}} + AIConfiguration.sexe=2;}} else if(type.compareTo("Lien interne")==0){ - get_config.IPAdress=value;} + AIConfiguration.ipAdress =value;} else if(type.contains("local")){ Log.d("SSID",value); - get_config.SSID=value;} + AIConfiguration.ssid=value;} else if(type.compareTo("Lien externe")==0){ - get_config.IPadress_ext=value;} + AIConfiguration.ipAdress_ext =value;} else if(type.compareTo("Vous voulez activer ...")==0){ if(value.contains("ShakeService")){ - get_config.ShakeService=true;} - else{get_config.ShakeService=false;} + AIConfiguration.shakeService=true;} + else{ + AIConfiguration.shakeService=false;} - if(value.contains("événements")){ - get_config.EventService=true;} - else{get_config.EventService=false;} + if(value.contains("�v�nements")){ + AIConfiguration.eventService=true;} + else{ + AIConfiguration.eventService=false;} - if(value.contains("synthèse")){ - get_config.TTS=true;} - else{get_config.TTS=false;} + if(value.contains("synth�se")){ + AIConfiguration.tts=true;} + else{ + AIConfiguration.tts=false;} if(value.contains("commandes")){ - get_config.Update_Com=true;} - else{get_config.Update_Com=false;}} + AIConfiguration.update_Com=true;} + else{ + AIConfiguration.update_Com=false;}} else if(type.contains("Internet")){ - if(value.compareTo("Oui")==0){get_config.externe=true;} - else{get_config.externe=false;}} + if(value.compareTo("Oui")==0){ + AIConfiguration.externe=true;} + else{ + AIConfiguration.externe=false;}} return rootView;} diff --git a/src/fr/nover/yana/assistant_installation/wizard/ui/SingleChoiceFragment.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/SingleChoiceFragment.java similarity index 95% rename from src/fr/nover/yana/assistant_installation/wizard/ui/SingleChoiceFragment.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/SingleChoiceFragment.java index e30fb39..1d6fe26 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/ui/SingleChoiceFragment.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/SingleChoiceFragment.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.ui; +package fr.nover.yana.gui.installation.wizard.ui; import fr.nover.yana.R; -import fr.nover.yana.assistant_installation.wizard.model.Page; -import fr.nover.yana.assistant_installation.wizard.model.SingleFixedChoicePage; +import fr.nover.yana.gui.installation.wizard.model.Page; +import fr.nover.yana.gui.installation.wizard.model.SingleFixedChoicePage; import android.app.Activity; import android.os.Bundle; diff --git a/src/fr/nover/yana/assistant_installation/wizard/ui/StepPagerStrip.java b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/StepPagerStrip.java similarity index 99% rename from src/fr/nover/yana/assistant_installation/wizard/ui/StepPagerStrip.java rename to app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/StepPagerStrip.java index b107484..e7a16df 100644 --- a/src/fr/nover/yana/assistant_installation/wizard/ui/StepPagerStrip.java +++ b/app/src/main/java/fr/nover/yana/gui/installation/wizard/ui/StepPagerStrip.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package fr.nover.yana.assistant_installation.wizard.ui; +package fr.nover.yana.gui.installation.wizard.ui; import fr.nover.yana.R; diff --git a/app/src/main/java/fr/nover/yana/model/Category.java b/app/src/main/java/fr/nover/yana/model/Category.java new file mode 100644 index 0000000..826bfe3 --- /dev/null +++ b/app/src/main/java/fr/nover/yana/model/Category.java @@ -0,0 +1,45 @@ +package fr.nover.yana.model; + +import java.util.ArrayList; + +/** + * Created by sylvain on 29/08/15. + */ +public class Category { + + private String name; + private String identifiant; + + + + private ArrayList data= new ArrayList(); + + public Category(String name, String identifiant) { + this.name = name; + this.identifiant = identifiant; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getIdentifiant() { + return identifiant; + } + + public void setIdentifiant(String identifiant) { + this.identifiant = identifiant; + } + + public ArrayList getData() { + return data; + } + + public void setData(ArrayList data) { + this.data = data; + } +} diff --git a/app/src/main/java/fr/nover/yana/model/Commande.java b/app/src/main/java/fr/nover/yana/model/Commande.java new file mode 100644 index 0000000..4aeb06f --- /dev/null +++ b/app/src/main/java/fr/nover/yana/model/Commande.java @@ -0,0 +1,36 @@ +package fr.nover.yana.model; + +/** + * Created by sylvain on 29/08/15. + */ +public class Commande { + + private String name; + private Parameter parameter; + + public Commande(String name) { + this.name = name; + this.parameter = new Parameter("",""); + } + + public Commande(String name, Parameter params) { + this(name); + this.parameter = params; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Parameter getParameter() { + return parameter; + } + + public void setParameter(Parameter parameter) { + this.parameter = parameter; + } +} diff --git a/app/src/main/java/fr/nover/yana/model/Parameter.java b/app/src/main/java/fr/nover/yana/model/Parameter.java new file mode 100644 index 0000000..4b3bf27 --- /dev/null +++ b/app/src/main/java/fr/nover/yana/model/Parameter.java @@ -0,0 +1,52 @@ +package fr.nover.yana.model; + +/** + * Created by sylvain on 29/08/15. + */ +public class Parameter { + + private String url; + private String confidence; + private String type; + + + + private String contenu; + + public Parameter(String url, String confidence) { + this.url = url; + this.confidence = confidence; + } + + public String getUrl() { + return url; + } + + public String getConfidence() { + return confidence; + } + + public void setUrl(String url) { + this.url = url; + } + + public void setConfidence(String confidence) { + this.confidence = confidence; + } + + public String getContenu() { + return contenu; + } + + public void setContenu(String contenu) { + this.contenu = contenu; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/app/src/main/java/fr/nover/yana/model/User.java b/app/src/main/java/fr/nover/yana/model/User.java new file mode 100644 index 0000000..a7fbbb8 --- /dev/null +++ b/app/src/main/java/fr/nover/yana/model/User.java @@ -0,0 +1,9 @@ +package fr.nover.yana.model; + +public class User { + + public String nom; // Pour l'identité de l'utilisateur + public String prenom; + public String sexe; + public String pseudo; +} diff --git a/app/src/main/java/fr/nover/yana/model/YanaConfiguration.java b/app/src/main/java/fr/nover/yana/model/YanaConfiguration.java new file mode 100644 index 0000000..19013c8 --- /dev/null +++ b/app/src/main/java/fr/nover/yana/model/YanaConfiguration.java @@ -0,0 +1,151 @@ +package fr.nover.yana.model; + +import android.content.Context; +import android.content.SharedPreferences; + +import java.util.ArrayList; +import java.util.Random; + +import fr.nover.yana.utils.Helper; + +/** + * Created by sylvain on 29/08/15. + */ +public class YanaConfiguration { + private Random random = new Random(); // Pour un message aléatoire + + private User user; // Pour l'identité de l'utilisateur + + + private String token=""; + + + + + private double voiceSens; + private String ip; + + private boolean ai; + + + + private float shakeSens; + + + + private boolean tts; // Permet de savoir si le TTS est autoris� + private boolean speechContinu; + + public YanaConfiguration(){ + + } + + public YanaConfiguration(SharedPreferences preferences,Context context) { + initFromPreference(preferences,context); + } + + private void initFromPreference(SharedPreferences preferences,Context context) { + user = new User(); + user.nom=preferences.getString("name", ""); // Importe l'identité de la personne + user.prenom=preferences.getString("surname", ""); + user.sexe=preferences.getString("sexe", ""); + user.pseudo = preferences.getString("nickname", ""); + + ai = preferences.getBoolean("AI", true); + + token=preferences.getString("token", ""); + + if(Helper.verif_Reseau(context)) ip=preferences.getString("IPadress", "");// Importe l'adresse du RPi + else ip=preferences.getString("IPadress_ext", "");// Importe l'adresse du RPi + + shakeSens=Float.parseFloat(preferences.getString("shake_sens", "3.0f")); // Importe la sensibilit� du Shake + + tts=preferences.getBoolean("tts_pref", true); + speechContinu=preferences.getBoolean("continu", true); + + voiceSens = Double.parseDouble(preferences.getString("Voice_sens", "3.0")) * Math.pow(10.0, -2.0); // Importe la sensibilit� de la comparaison des chaines de caract�res + } + + public double getVoiceSens() { + return voiceSens; + } + + public User getUser() { + return user; + } + + public float getShakeSens() { + return shakeSens; + } + + public String getToken() { + return token; + } + + public boolean isAi() { + return ai; + } + + public String getIp() { + return ip; + } + + public boolean isTts() { + return tts; + } + + public boolean isSpeechContinu() { + return speechContinu; + } + + public String randomWelcome(){ // Choisit une chaine de caract�res au hasard + ArrayList list = new ArrayList(); + list.add("Bonjour !"); + + if(!isAi()){ + if(getUser().prenom != ""){ + list.add("Salut "+getUser().prenom+" !");} + + if(getUser().nom != ""){ + list.add("Sinc�res salutations, ma�tre "+getUser().nom+".");} + + if(getUser().sexe != ""){ + list.add("Bonjour "+getUser().sexe+" "+getUser().nom+". Heureux de vous revoir.");} + + if(getUser().pseudo!= ""){ + list.add("Coucou mon petit "+getUser().pseudo+". Heureux de te revoir !");}} + + int randomInt = random.nextInt(list.size()); + String retour = list.get(randomInt).toString(); + + return retour;} + + public String randomAsk(){ // Choisit une chaine de caract�res au hasard + ArrayList list = new ArrayList(); + list.add("Comment puis-je vous aider, boss ?"); + list.add("Un truc � dire, ma poule ?!"); + + if(user.prenom!= ""){ + list.add("Oui, "+user.prenom+" ?");} + + if(user.nom!= ""){ + list.add("Que voulez-vous, ma�tre "+user.nom+" ?");} + + if(user.sexe !=""){ + list.add("Puis-je faire quelque chose pour vous, "+ user.sexe+" ?");} + + if(user.nom.compareTo("")!=0 && user.sexe.compareTo("")!=0){ + list.add(user.sexe+" "+user.nom+", je suis tout � vous !");} + + if(user.pseudo!=""){ + list.add("Que veux-tu, mon petit "+user.pseudo+" ?");} + + int randomInt = random.nextInt(list.size()); + String retour = list.get(randomInt).toString(); + + return retour;} + + public String getCommandUrl(Commande commande) { + return "http://" + ip + "?" + commande.getParameter().getUrl() + "&token=" + token; + } +} diff --git a/app/src/main/java/fr/nover/yana/passerelles/JsonConverter.java b/app/src/main/java/fr/nover/yana/passerelles/JsonConverter.java new file mode 100644 index 0000000..b556865 --- /dev/null +++ b/app/src/main/java/fr/nover/yana/passerelles/JsonConverter.java @@ -0,0 +1,44 @@ +package fr.nover.yana.passerelles; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.StringTokenizer; + +import fr.nover.yana.model.Parameter; + +/** + * Created by sylvain on 29/08/15. + */ +public class JsonConverter { + public Parameter convertParameters(JSONObject emp) throws JSONException { + Parameter params = new Parameter("",""); + + String URL = emp.getString("url"); + URL = URL.replace("{", "%7B"); + URL = URL.replace("}", "%7D"); + StringTokenizer tokens = new StringTokenizer(URL, "?"); + tokens.nextToken(); + URL = tokens.nextToken(); + params.setUrl(URL); + + params.setConfidence(emp.getString("confidence")); + + String type = "", contenu = ""; + try { + emp.getString("PreAction"); + type = emp.getString("type"); + if (type.compareTo("talk") == 0) contenu = emp.getString("sentence"); + else if (type.compareTo("sound") == 0) { + contenu = emp.getString("file"); + contenu = contenu.replace(".wav", ""); + contenu = contenu.replace(".mp3", ""); + } + params.setType(type); + params.setContenu(contenu); + } catch (Exception e) { + } + + return params; + } +} diff --git a/src/fr/nover/yana/passerelles/JsonParser.java b/app/src/main/java/fr/nover/yana/passerelles/JsonParser.java similarity index 76% rename from src/fr/nover/yana/passerelles/JsonParser.java rename to app/src/main/java/fr/nover/yana/passerelles/JsonParser.java index b4ee6e4..d9f77db 100644 --- a/src/fr/nover/yana/passerelles/JsonParser.java +++ b/app/src/main/java/fr/nover/yana/passerelles/JsonParser.java @@ -22,10 +22,17 @@ public class JsonParser extends AsyncTask { + private static final String LOG_TAG = JsonParser.class.getName(); + static JSONObject jObj = null; static String json = ""; + private Traitement traitement; + + public JsonParser(Traitement traitement) { + this.traitement = traitement; + } - protected JSONObject doInBackground(String... URL) { + protected JSONObject doInBackground(String... URL) { try { jObj=null; @@ -43,26 +50,26 @@ protected JSONObject doInBackground(String... URL) { json="{\"responses\":[{\"type\":\"talk\",\"sentence\":\"\"}]}";} json = json.replace("'", "'"); - json = json.replace("eteint", "éteint"); + json = json.replace("eteint", "éteint"); - Log.d("Résultat sous forme de JSON"," "+json); + Log.d(LOG_TAG," "+json); } catch (UnsupportedEncodingException e) { Log.d("JsonParser","UnsupportedEncoding"); - e.printStackTrace();Traitement.retour=false;} + e.printStackTrace();traitement.retour=false;} catch (ClientProtocolException e) { Log.d("JsonParser","Client"); - e.printStackTrace();Traitement.retour=false;} + e.printStackTrace();traitement.retour=false;} catch (IOException e) { Log.d("JsonParser","IOException"); - e.printStackTrace();Traitement.retour=false;} + e.printStackTrace();traitement.retour=false;} catch (Exception e) { Log.d("JsonParser","Exception"); - e.printStackTrace();Traitement.retour=false;} + e.printStackTrace();traitement.retour=false;} - // convertir le résultat qui est sous format d'un String en un JSONObject + // convertir le r�sultat qui est sous format d'un String en un JSONObject try {jObj = new JSONObject(json);} - catch (JSONException e) {Log.e("JSON Parser", "Error parsing data " + e.toString());Traitement.retour=false;} + catch (JSONException e) {Log.e("JSON Parser", "Error parsing data " + e.toString());traitement.retour=false;} // retourner un JSONObject return jObj;} diff --git a/src/fr/nover/yana/passerelles/LevenshteinDistance.java b/app/src/main/java/fr/nover/yana/passerelles/LevenshteinDistance.java similarity index 100% rename from src/fr/nover/yana/passerelles/LevenshteinDistance.java rename to app/src/main/java/fr/nover/yana/passerelles/LevenshteinDistance.java diff --git a/src/fr/nover/yana/passerelles/ScreenReceiver.java b/app/src/main/java/fr/nover/yana/passerelles/ScreenReceiver.java similarity index 84% rename from src/fr/nover/yana/passerelles/ScreenReceiver.java rename to app/src/main/java/fr/nover/yana/passerelles/ScreenReceiver.java index fbbdd1b..d2b4de3 100644 --- a/src/fr/nover/yana/passerelles/ScreenReceiver.java +++ b/app/src/main/java/fr/nover/yana/passerelles/ScreenReceiver.java @@ -7,6 +7,8 @@ public class ScreenReceiver extends BroadcastReceiver { + private static final String LOG_TAG = ScreenReceiver.class.getName(); + public static boolean wasScreenOn = true; public void onReceive(final Context context, final Intent intent) { @@ -17,6 +19,6 @@ public void onReceive(final Context context, final Intent intent) { // and do whatever you need to do here wasScreenOn = true; } - Log.d("Screen","On ? - "+wasScreenOn); + Log.d(LOG_TAG,"On ? - "+wasScreenOn); } } \ No newline at end of file diff --git a/src/fr/nover/yana/passerelles/ShakeDetector.java b/app/src/main/java/fr/nover/yana/passerelles/ShakeDetector.java similarity index 100% rename from src/fr/nover/yana/passerelles/ShakeDetector.java rename to app/src/main/java/fr/nover/yana/passerelles/ShakeDetector.java diff --git a/src/fr/nover/yana/passerelles/SpeechRecognizerWrapper.java b/app/src/main/java/fr/nover/yana/passerelles/SpeechRecognizerWrapper.java similarity index 98% rename from src/fr/nover/yana/passerelles/SpeechRecognizerWrapper.java rename to app/src/main/java/fr/nover/yana/passerelles/SpeechRecognizerWrapper.java index 299892b..ff4d98c 100644 --- a/src/fr/nover/yana/passerelles/SpeechRecognizerWrapper.java +++ b/app/src/main/java/fr/nover/yana/passerelles/SpeechRecognizerWrapper.java @@ -28,10 +28,10 @@ public class SpeechRecognizerWrapper implements RecognitionListener{ private RecognizerFinishedCallback mCallback; private RecognizerState mRecognitonState; - // Temps avant arrêt de la reconnaissance + // Temps avant arrêt de la reconnaissance private Timer speechTimeout = null; - private BroadcastReceiver Post_speech = new BroadcastReceiver() { + private BroadcastReceiver post_speech = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Start();}}; @@ -45,7 +45,7 @@ public enum RecognizerState { } public void Broad(Context context){ - LocalBroadcastManager.getInstance(context).registerReceiver(Post_speech, + LocalBroadcastManager.getInstance(context).registerReceiver(post_speech, new IntentFilter("Post_speech")); } diff --git a/app/src/main/java/fr/nover/yana/passerelles/Traitement.java b/app/src/main/java/fr/nover/yana/passerelles/Traitement.java new file mode 100644 index 0000000..d0d3ea4 --- /dev/null +++ b/app/src/main/java/fr/nover/yana/passerelles/Traitement.java @@ -0,0 +1,300 @@ +/** + * Cette application a �t� d�velopp�e par Nicolas -Nover- Guilloux. + * Elle a �t� cr��e afin d'interagir avec YANA, lui-m�me cr�� par Idleman. + * Trouvez les travaux d'Idleman ici : http://blog.idleman.fr/?p=1788 + * Vous pouvez me contacter � cette adresse : Etsu@live.fr + */ + +package fr.nover.yana.passerelles; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.StringTokenizer; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import fr.nover.yana.MemoryProvider; +import fr.nover.yana.model.Category; +import fr.nover.yana.model.Commande; +import fr.nover.yana.model.Parameter; +import fr.nover.yana.model.YanaConfiguration; +import fr.nover.yana.services.EventService; +import fr.nover.yana.gui.Yana; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.SharedPreferences; +import android.media.MediaPlayer; +import android.os.PowerManager; +import android.preference.PreferenceManager; +import android.util.Log; + +@SuppressLint("DefaultLocale") +public class Traitement { + + private static final String LOG_TAG = Traitement.class.getName(); + + private String reponse = ""; // D�clare la variable de r�ponse + + public String rep; + public boolean sons; + public boolean retour; // D�clare le retour pour la passerelles JsonParser + + public List commandes_a = new ArrayList(); + + + + public int comparaison(String enregistrement) { // Processus de comparaison pour faire une reconnaissance par pertinence + YanaConfiguration configuration = MemoryProvider.getInstance().getConfiguration(); + int n = -1; + double c = 0, co; + try { + for (int i = 0; i < MemoryProvider.getInstance().getCommandes().size(); i++) { + String confidence = MemoryProvider.getInstance().getCommandes().get(i).getParameter().getConfidence(); + if (confidence.equals("")) confidence = "0.8"; + co = LevenshteinDistance.similarity(enregistrement, MemoryProvider.getInstance().getCommandes().get(i).getName()); + if (co > c && co > Double.parseDouble(confidence) - configuration.getVoiceSens()) { + c = co; + n = i; + } + } + } catch (Exception e) { + Log.e("log_tag", "Erreur pour la comparaison : " + e.toString()); + } + Log.d(LOG_TAG, "c=" + configuration.getVoiceSens()); + Log.d(LOG_TAG, "n=" + n); + if (c < configuration.getVoiceSens()) { + n = -1; + } // Compare en fonction de la sensibilit� (cf option) + return n; + } // Retourne le r�sultat + + public String HTTP_Contact(String URL, Context context) { + Log.d("Echange avec le serveur", "" + URL); + retour = true; + JSONObject json= null; + try { + json = new JsonParser(this).execute(URL).get(); + } catch (Exception e) { + Log.d(LOG_TAG, "Le server n'a pas pu �tre contact�"); + } + + if (!retour) return "Il y a eu une erreur lors du contact avec Yana-Serveur."; + + try { + JSONArray commands = json.getJSONArray("responses"); + JSONObject Rep = commands.getJSONObject(0); // Importe la premi�re valeur + String type = Rep.getString("type"); + + if (type.compareTo("talk") == 0) reponse = Rep.getString("sentence"); + + else if (Rep.getString("type").compareTo("sound") == 0) { + String Son = Rep.getString("file"); + Son = Son.replace(".wav", ""); + reponse = "*" + Son + "*"; + media_Player(Son, context); + } + + for (int i = 1; i < commands.length(); i++) { // Importe les autres valeurs s'il y en a + JSONObject emp = commands.getJSONObject(i); + if ("talk".compareTo(emp.getString("type")) == 0) { + reponse = reponse + " \n" + emp.getString("sentence"); + } else if (Rep.getString("type").compareTo("sound") == 0) { + String Son = emp.getString("file"); + Son = Son.replace(".wav", ""); + reponse = reponse + " \n" + "*" + Son + "*"; + media_Player(Son, context); + } + } + } catch (JSONException e) { + e.printStackTrace(); + } catch (Exception e) { + try { + JSONArray commands = json.getJSONArray("error"); + JSONObject Rep = commands.getJSONObject(0); // Importe la premi�re valeur + reponse = Rep.getString("error"); + } catch (JSONException x) { + e.printStackTrace(); + } catch (Exception x) { + reponse = "Il y a eu une erreur lors du contact avec le Raspberry Pi."; + } + } + + return reponse; + } + + public boolean pick_JSON(String iPadress, String token) { + retour = true; + + MemoryProvider.getInstance().clear(); + JSONObject json = null; + + commandes_a.clear(); + String speechUrl ="http://" + iPadress + "?action=GET_SPEECH_COMMAND&token=" + token; + try { + json = new JsonParser(this).execute(speechUrl).get(); + } catch (Exception e) { + } + + ArrayList links = new ArrayList(); + JsonConverter jsonConverter = new JsonConverter(); + + if (retour) { + Log.d(LOG_TAG, "Début du traitement du JSON"); + try { + JSONArray commands = json.getJSONArray("commands"); + for (int i = 0; i < commands.length(); i++) { + JSONObject emp = commands.getJSONObject(i); + + String command = emp.getString("command"); + command = command.replace("'", "'"); + command = command.replace("eteint", "�teint"); + + Parameter params = jsonConverter.convertParameters(emp); + + if (!params.getUrl().contains("vocalinfo_devmod")) { + MemoryProvider.getInstance().getCommandes().add(new Commande(command,params)); + links.add(params.getUrl()); + } + } + } catch (JSONException e) { + verification_erreur(); + retour = false; + } catch (Exception e) { + verification_erreur(); + retour = false; + } + + MemoryProvider.getInstance().initData(true); + + commandes_a = new ArrayList(MemoryProvider.getInstance().getCommandes()); + + int x = 0; + while (commandes_a.size() != links.size()) { + links.add(x, ""); + x++; + } + + for (int y = MemoryProvider.getInstance().getCategories().size() - 1; y >= 0; y--) { + ArrayList reco = new ArrayList(); + Category category = MemoryProvider.getInstance().getCategories().get(y); + for (int i = commandes_a.size() - 1; i >= 0; i--) { + if (links.get(i).toLowerCase().contains(category.getIdentifiant().toLowerCase()) || commandes_a.get(i).getName().toLowerCase().contains(category.getIdentifiant().toLowerCase())) { + reco.add(commandes_a.get(i)); + commandes_a.remove(i); + links.remove(i); + } + } + Log.d(LOG_TAG, "Reco : " + reco); + if (reco.size() > 0) { + Collections.reverse(reco); + MemoryProvider.getInstance().getCategories().get(y).setData(reco); + } else { + Log.d(LOG_TAG, "Remove : " + MemoryProvider.getInstance().getCategories().get(y)); + MemoryProvider.getInstance().getCategories().remove(y); + } + } + } else { + Parameter params = new Parameter("",""); + String command = "Echec du contact avec le serveur. Veuillez v�rifier votre syst�me et l'adresse entr�e. Il est possible aussi que votre connexion est trop lente."; + MemoryProvider.getInstance().getCommandes().add(new Commande(command, params)); + + MemoryProvider.getInstance().initData(false); + } + + return retour; + } + + private boolean verification_erreur() { + Log.d(LOG_TAG, "Regarde s'il n'y a pas une erreur disponible."); + JSONObject json = null; + Parameter params = new Parameter("",""); + String command = null; + + + try { + if (json.getString("error").compareTo("insufficient permissions") == 0 || json == null) + command = "Vous n'avez pas les droits n�c�ssaires pour effectuer cette action. Contactez votre administrateur."; + if (json.getString("error").compareTo("invalid or missing token") == 0 || json == null) + command = "Votre Token est invalide. Veuillez le v�rifier."; + } catch (JSONException x) { + } catch (Exception x) { + } + + Log.d(LOG_TAG, "Echec de toute compr�hension."); + if (command == null) + command = "Echec de compr�hension par rapport � la r�ponse du Raspberry Pi. Veuillez pr�senter le probl�me � Nover."; + + MemoryProvider.getInstance().getCommandes().add(new Commande(command, params)); + return false; + } + + + public boolean verif_aux(String commande, Context context) { + SharedPreferences.Editor geted = PreferenceManager.getDefaultSharedPreferences(context).edit(); + + if (commande.contains("cache-toi")) { + geted.putBoolean("shake", false); + geted.commit(); + if (Yana.servstate == true) { + context.stopService(Yana.mShakeService); + rep = "Le ShakeService est maintenant d�sactiv�."; + } else { + rep = "Votre service est d�j� d�sactiv�."; + } + return true; + } else if (commande.contains("montre-toi")) { + geted.putBoolean("shake", true); + geted.commit(); + if (Yana.servstate == false) { + context.startService(Yana.mShakeService); + rep = "Le ShakeService est maintenant activ�."; + } else { + rep = "Votre service est d�j� activ�."; + } + return true; + } else if (commande.contains("d�sactive les �v�nements")) { + geted.putBoolean("event", false); + geted.commit(); + if (Yana.eventstate == true) { + context.stopService(Yana.mEventService); + rep = "Les �v�nements sont maintenant d�sactiv�s."; + } else { + rep = "Les �v�nements sont d�j� d�sactiv�s."; + } + return true; + } else if (commande.contains("active les �v�nements")) { + geted.putBoolean("event", true); + geted.commit(); + if (Yana.eventstate == false) { + context.startService(Yana.mEventService); + EventService.first = false; + rep = "Les �v�nements sont maintenant activ�s."; + } else { + rep = "Les �v�nements sont d�j� activ�s."; + } + return true; + } else if (commande.contains("Changelog_do")) { + geted.putString("version", Yana.version); + geted.commit(); + return true; + } + + return false; + } + + + + public void media_Player(String son, Context context) { + sons = true; + int ID = context.getResources().getIdentifier(son, "raw", "fr.nover.yana"); + + MediaPlayer mp = MediaPlayer.create(context, ID); + mp.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK); + mp.start(); + } + +} \ No newline at end of file diff --git a/src/fr/nover/yana/EventService.java b/app/src/main/java/fr/nover/yana/services/EventService.java similarity index 62% rename from src/fr/nover/yana/EventService.java rename to app/src/main/java/fr/nover/yana/services/EventService.java index 7559352..8f6fcd4 100644 --- a/src/fr/nover/yana/EventService.java +++ b/app/src/main/java/fr/nover/yana/services/EventService.java @@ -1,4 +1,4 @@ -package fr.nover.yana; +package fr.nover.yana.services; import java.util.ArrayList; import java.util.HashMap; @@ -8,8 +8,12 @@ import org.json.JSONException; import org.json.JSONObject; +import fr.nover.yana.R; +import fr.nover.yana.gui.Yana; import fr.nover.yana.passerelles.JsonParser; import fr.nover.yana.passerelles.Traitement; +import fr.nover.yana.utils.Helper; + import android.annotation.SuppressLint; import android.app.Notification; import android.app.NotificationManager; @@ -34,22 +38,25 @@ import android.widget.Toast; public class EventService extends Service implements OnUtteranceCompletedListener, OnInitListener { - - private TextToSpeech mTts; // Déclare le TTS + + private static final String LOG_TAG = ShakeService.class.getName(); + + private TextToSpeech mTts; // D�clare le TTS HashMap myHashAlarm; - ArrayList Talk = new ArrayList(); - ArrayList Contenu = new ArrayList(); + ArrayList talk = new ArrayList(); + ArrayList contenu = new ArrayList(); JSONObject json_prec = null; Handler myHandler = new Handler(),myHandler2 = new Handler(); - Runnable Runnable, Runnable2; + Runnable runnable, runnable2; Timer t; + Traitement traitement = new Traitement(); - boolean Sound,Toasts,Notifs,Toast_ready=true, Traitement_ready=true; + boolean sound,toasts,notifs,toast_ready=true, traitement_ready=true; public static boolean first=true; int i,j=0; - String Phrase; + String phrase; Toast toast; TextView textView; @@ -57,6 +64,7 @@ public class EventService extends Service implements OnUtteranceCompletedListene @Override public void onCreate(){ super.onCreate(); + LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); View layout = layoutInflater.inflate(R.layout.toast_layout, null); @@ -74,37 +82,37 @@ public void onCreate(){ public void onDestroy(){ super.onDestroy(); Yana.eventstate=false; - myHandler.removeCallbacks(Runnable); - myHandler2.removeCallbacks(Runnable2);} + myHandler.removeCallbacks(runnable); + myHandler2.removeCallbacks(runnable2);} void pick_JSON(){ - String IPadress="", Token=""; - int Time=0; + String IPadress="", token=""; + int time=0; boolean entree=false; JSONObject json=null; SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(this); - if(Traitement.Verif_Reseau(getApplicationContext())){ + if(Helper.verif_Reseau(getApplicationContext())){ IPadress=preferences.getString("IPadress", "");} // Importe l'adresse du RPi else{IPadress=preferences.getString("IPadress_ext", "");} - Token=preferences.getString("token", ""); - try{Time=Integer.valueOf(preferences.getString("event_temp", ""))*1000;} - catch(Exception e){Time=20;} - Sound=preferences.getBoolean("event_sound", true); - Toasts=preferences.getBoolean("event_toast", true); - Notifs=preferences.getBoolean("event_notif", true); + token=preferences.getString("token", ""); + try{time=Integer.valueOf(preferences.getString("event_temp", ""))*1000;} + catch(Exception e){time=20;} + sound=preferences.getBoolean("event_sound", true); + toasts=preferences.getBoolean("event_toast", true); + notifs=preferences.getBoolean("event_notif", true); - Talk.clear(); - Contenu.clear(); + talk.clear(); + contenu.clear(); if(!first){ - Contenu.add("Service des événements en route."); - Talk.add(true);} + contenu.add("Service des �v�nements en route."); + talk.add(true);} - try{json = new JsonParser().execute("http://"+IPadress+"?action=GET_EVENT&token="+Token).get();} + try{json = new JsonParser(traitement).execute("http://"+IPadress+"?action=GET_EVENT&token="+token).get();} catch(Exception e){ - Toast("Echec du contact avec le Raspberry Pi.");} + toast("Echec du contact avec le Raspberry Pi.");} try{ if((""+json_prec).compareTo(""+json)!=0){ @@ -113,53 +121,53 @@ void pick_JSON(){ JSONObject emp = commands.getJSONObject(y); String type=emp.getString("type"); if(type.compareTo("talk")==0){ - Talk.add(true); - Contenu.add(emp.getString("sentence")); + talk.add(true); + contenu.add(emp.getString("sentence")); entree=true;} else if(type.compareTo("sound")==0){ - Talk.add(false); - String Son = emp.getString("file"); - Son = Son.replace(".wav", ""); - Son = Son.replace(".mp3", ""); - Contenu.add(Son); + talk.add(false); + String son = emp.getString("file"); + son = son.replace(".wav", ""); + son = son.replace(".mp3", ""); + contenu.add(son); entree=true;} } } } - catch(JSONException e){Log.d("Echec du JSON (Get_Event)","Echec du parsing JSON");} - catch(Exception e){Log.d("Echec du JSON (Get_Event)","Echec du parsing JSON");} + catch(JSONException e){Log.d(LOG_TAG,"Echec du parsing JSON");} + catch(Exception e){Log.d(LOG_TAG, "Echec du parsing JSON");} json_prec=json; i=0; - if(entree || !first) Traitement(); + if(entree || !first) traitement(); - Runnable = new Runnable(){ + runnable = new Runnable(){ @Override public void run() { pick_JSON(); }}; - myHandler.postDelayed(Runnable, Time);} + myHandler.postDelayed(runnable, time);} public void onInit(int status) { mTts.setOnUtteranceCompletedListener(this); myHashAlarm = new HashMap(); myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM)); - myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "Enonciation terminée"); - mTts.speak(Phrase,TextToSpeech.QUEUE_FLUSH, myHashAlarm);} + myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "Enonciation termin�e"); + mTts.speak(phrase,TextToSpeech.QUEUE_FLUSH, myHashAlarm);} @Override - public void onUtteranceCompleted(String uttid) {Traitement();} + public void onUtteranceCompleted(String uttid) {traitement();} - boolean Launch_son(String Son){ - try{int ID = getResources().getIdentifier(Son, "raw", "fr.nover.yana"); + boolean launch_son(String son){ + try{int ID = getResources().getIdentifier(son, "raw", "fr.nover.yana"); MediaPlayer mp = MediaPlayer.create(this, ID); mp.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer mediaPlayer) { - Traitement(); + traitement(); } }); mp.start(); @@ -167,61 +175,61 @@ public void onCompletion(MediaPlayer mediaPlayer) { catch(Exception e){return false;} } - void Traitement(){ - if(i myHashAlarm = new HashMap(); + myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM)); + myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "Enonciation termin�e"); + + //AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE); + //int amStreamMusicMaxVol = am.getStreamMaxVolume(am.STREAM_MUSIC); + //am.setStreamVolume(am.STREAM_MUSIC, amStreamMusicMaxVol, 0); + + mTts.speak(a_dire, TextToSpeech.QUEUE_FLUSH, myHashAlarm); + } // Il dicte sa phrase + } + + @Override + public void onUtteranceCompleted(String utteranceId) { + + if (!Yana.servstate) { + fin(); + mSpeechRecognizerWrapper.Stop(); + last_init = true; + } else if (configuration.isSpeechContinu()) { // Si il n'a pas d�j� initialis� le processus de reconnaissance vocale + myHandler.postDelayed(new Runnable() { + @Override + public void run() { + LocalBroadcastManager.getInstance(context).sendBroadcast(post_speech); + } + }, 250); + } else { + fin(); + } // Sinon il remet tout � 0 + } + + public void getTTS() { + mTts = new TextToSpeech(this, this); + } // Initialise le TTS + + public IBinder onBind(Intent arg0) { + return null; + } + + + public void getConfig() { // Importe les options + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); + configuration = new YanaConfiguration(preferences, getApplicationContext()); + } + + public void onEvent(int arg0, Bundle arg1) { + } + + public void fin() { // Finalise le processus + if (speech != null) { + speech.cancel(); + speech.destroy(); + speech = null; + } + + last_shake = last_init = false; + if (n == 0) { // Si "Yana, cache-toi" + this.stopSelf(); + } else if (configuration.isSpeechContinu()) { + last_shake = true; + last_init = true; + } + } + + public void onRecognizerFinished(String Resultat) { + Log.d(LOG_TAG, "Ordre : " + Resultat); + + if (!configuration.isSpeechContinu()) { + mSpeechRecognizerWrapper.Stop(); + last_init = true; + } + + if (speech != null) { + speech.destroy(); + speech = null; + } + + a_dire = ""; + + Commande commande = null; + String url = ""; + n = traitement.comparaison(Resultat); // Compare les deux chaines de caract�res + Log.d(LOG_TAG, "Num�ro sortant : " + n); + if (n < 0) { // Si �chec, Ordre=Resultat + commande = MemoryProvider.getInstance().findCommande(Resultat); + a_dire = "Aucun ordre ne semble �tre identifi� au votre."; + } else { // Sinon... + commande = MemoryProvider.getInstance().getCommandes().get(n); + } // Ordre prend la valeur de la commande choisie + + newRecrep.putExtra("contenu", commande.getName()); // Envoie l'ordre � l'interface + LocalBroadcastManager.getInstance(this).sendBroadcast(newRecrep); + + if (n > 0) { // Si l'ordre est valable + if (traitement.verif_aux(commande.getName(), context)) a_dire = traitement.rep; + else { + + Parameter params = commande.getParameter(); + + if (params.getType() != null) { + String Reponse = ""; + String type = params.getType(); + if (type.compareTo("talk") == 0) { + Reponse = params.getContenu(); + if (!traitement.sons) getTTS(); + } else if (type.compareTo("sound") == 0) { + String Son = params.getContenu(); + Reponse = "*" + Son + "*"; + try { + int ID = getResources().getIdentifier(Son, "raw", "fr.nover.yana"); + + MediaPlayer mp = MediaPlayer.create(this, ID); + mp.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); + mp.start(); + } catch (Exception e) { + } + } + + if (Reponse.compareTo("") == 0) { + newRep.putExtra("contenu", Reponse); // Envoie de la r�ponse � l'interface + LocalBroadcastManager.getInstance(this).sendBroadcast(newRep); + } + } + + + url = commande.getParameter().getUrl(); + + ConnectivityManager cm = (ConnectivityManager) getApplicationContext() + .getSystemService(Context.CONNECTIVITY_SERVICE); + + NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); + + if (activeNetwork != null) { // V�rifie le r�seau + a_dire = traitement.HTTP_Contact("http://" + configuration.getIp() + "?" + url + "&token=" + configuration.getToken(), getApplicationContext()); + } // Envoie au RPi et enregistre sa r�ponse + else { + Toast toast = Toast.makeText(getApplicationContext(), // En cas d'�chec, il pr�vient l'utilisateur + "Vous n'avez pas de connexion internet !", Toast.LENGTH_LONG); + toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 80); + toast.show(); + } + } + } + + if (a_dire.compareTo("") != 0) { + newRep.putExtra("contenu", a_dire); // Envoie de la r�ponse � l'interface + LocalBroadcastManager.getInstance(this).sendBroadcast(newRep); + } else { + a_dire = " "; + } + if (!traitement.sons) getTTS(); + else traitement.sons = false; + } + + @Override + public void onRecognizerStateChanged(RecognizerState state) { + Log.d(LOG_TAG, state.toString()); + + if (state == RecognizerState.Error) { + Toast.makeText(this, state.toString(), Toast.LENGTH_SHORT).show(); + fin(); + } + } + + public void onRmsChanged(float rmsdB) { + ; + } + +} \ No newline at end of file diff --git a/app/src/main/java/fr/nover/yana/utils/Helper.java b/app/src/main/java/fr/nover/yana/utils/Helper.java new file mode 100644 index 0000000..180efb9 --- /dev/null +++ b/app/src/main/java/fr/nover/yana/utils/Helper.java @@ -0,0 +1,42 @@ +package fr.nover.yana.utils; + +import android.content.Context; +import android.content.SharedPreferences; +import android.net.ConnectivityManager; +import android.net.wifi.WifiInfo; +import android.net.wifi.WifiManager; +import android.preference.PreferenceManager; +import android.util.Log; +import android.widget.Toast; + +/** + * Created by sylvain on 29/08/15. + */ +public class Helper { + + private static final String LOG_TAG = Helper.class.getName(); + + public static boolean verif_Reseau(Context context){ // Vérifie le réseau local + try{WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); + WifiInfo wifiInfo = wifiManager.getConnectionInfo(); + ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + android.net.NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI); + String SSID_wifi=wifiInfo.getSSID(); + if(SSID_wifi!=null && SSID_wifi.contains("\"")){ + SSID_wifi = SSID_wifi.replaceAll("\"", "");} + Log.d(LOG_TAG, "SSID actuelle : " + SSID_wifi); + + SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(context); + String SSID_local=preferences.getString("SSID", ""); + Log.d(LOG_TAG,"SSID enregistr� : "+SSID_local); + if(wifi.isConnected()){ + if(SSID_wifi.compareTo(SSID_local)==0 || SSID_local.compareTo("")==0){ + Log.d(LOG_TAG,"local true"); + return true;}}} + catch(Exception e){ + Toast toast= Toast.makeText(context, + "Echec de la v�rification du r�seau. Mise en local par d�faut", Toast.LENGTH_SHORT); + toast.show();} + return false; + } +} diff --git a/res/drawable-hdpi/above_shadow.xml b/app/src/main/res/drawable-hdpi/above_shadow.xml similarity index 100% rename from res/drawable-hdpi/above_shadow.xml rename to app/src/main/res/drawable-hdpi/above_shadow.xml diff --git a/res/drawable-hdpi/envoi.png b/app/src/main/res/drawable-hdpi/envoi.png similarity index 100% rename from res/drawable-hdpi/envoi.png rename to app/src/main/res/drawable-hdpi/envoi.png diff --git a/res/drawable-hdpi/graphic.png b/app/src/main/res/drawable-hdpi/graphic.png similarity index 100% rename from res/drawable-hdpi/graphic.png rename to app/src/main/res/drawable-hdpi/graphic.png diff --git a/res/drawable-hdpi/ic_launcher.png b/app/src/main/res/drawable-hdpi/ic_launcher.png similarity index 100% rename from res/drawable-hdpi/ic_launcher.png rename to app/src/main/res/drawable-hdpi/ic_launcher.png diff --git a/res/drawable-hdpi/ip_adress.png b/app/src/main/res/drawable-hdpi/ip_adress.png similarity index 100% rename from res/drawable-hdpi/ip_adress.png rename to app/src/main/res/drawable-hdpi/ip_adress.png diff --git a/res/drawable-hdpi/reponse.png b/app/src/main/res/drawable-hdpi/reponse.png similarity index 100% rename from res/drawable-hdpi/reponse.png rename to app/src/main/res/drawable-hdpi/reponse.png diff --git a/res/drawable-ldpi/above_shadow.xml b/app/src/main/res/drawable-ldpi/above_shadow.xml similarity index 100% rename from res/drawable-ldpi/above_shadow.xml rename to app/src/main/res/drawable-ldpi/above_shadow.xml diff --git a/res/drawable-ldpi/envoi.png b/app/src/main/res/drawable-ldpi/envoi.png similarity index 100% rename from res/drawable-ldpi/envoi.png rename to app/src/main/res/drawable-ldpi/envoi.png diff --git a/res/drawable-ldpi/graphic.png b/app/src/main/res/drawable-ldpi/graphic.png similarity index 100% rename from res/drawable-ldpi/graphic.png rename to app/src/main/res/drawable-ldpi/graphic.png diff --git a/res/drawable-ldpi/reponse.png b/app/src/main/res/drawable-ldpi/reponse.png similarity index 100% rename from res/drawable-ldpi/reponse.png rename to app/src/main/res/drawable-ldpi/reponse.png diff --git a/res/drawable-mdpi/above_shadow.xml b/app/src/main/res/drawable-mdpi/above_shadow.xml similarity index 100% rename from res/drawable-mdpi/above_shadow.xml rename to app/src/main/res/drawable-mdpi/above_shadow.xml diff --git a/res/drawable-mdpi/envoi.png b/app/src/main/res/drawable-mdpi/envoi.png similarity index 100% rename from res/drawable-mdpi/envoi.png rename to app/src/main/res/drawable-mdpi/envoi.png diff --git a/res/drawable-mdpi/graphic.png b/app/src/main/res/drawable-mdpi/graphic.png similarity index 100% rename from res/drawable-mdpi/graphic.png rename to app/src/main/res/drawable-mdpi/graphic.png diff --git a/res/drawable-mdpi/ic_launcher.png b/app/src/main/res/drawable-mdpi/ic_launcher.png similarity index 100% rename from res/drawable-mdpi/ic_launcher.png rename to app/src/main/res/drawable-mdpi/ic_launcher.png diff --git a/res/drawable-mdpi/ip_adress.png b/app/src/main/res/drawable-mdpi/ip_adress.png similarity index 100% rename from res/drawable-mdpi/ip_adress.png rename to app/src/main/res/drawable-mdpi/ip_adress.png diff --git a/res/drawable-mdpi/reponse.png b/app/src/main/res/drawable-mdpi/reponse.png similarity index 100% rename from res/drawable-mdpi/reponse.png rename to app/src/main/res/drawable-mdpi/reponse.png diff --git a/res/drawable-xhdpi/above_shadow.xml b/app/src/main/res/drawable-xhdpi/above_shadow.xml similarity index 100% rename from res/drawable-xhdpi/above_shadow.xml rename to app/src/main/res/drawable-xhdpi/above_shadow.xml diff --git a/res/drawable-xhdpi/envoi.png b/app/src/main/res/drawable-xhdpi/envoi.png similarity index 100% rename from res/drawable-xhdpi/envoi.png rename to app/src/main/res/drawable-xhdpi/envoi.png diff --git a/res/drawable-xhdpi/graphic.png b/app/src/main/res/drawable-xhdpi/graphic.png similarity index 100% rename from res/drawable-xhdpi/graphic.png rename to app/src/main/res/drawable-xhdpi/graphic.png diff --git a/res/drawable-xhdpi/ic_launcher.png b/app/src/main/res/drawable-xhdpi/ic_launcher.png similarity index 100% rename from res/drawable-xhdpi/ic_launcher.png rename to app/src/main/res/drawable-xhdpi/ic_launcher.png diff --git a/res/drawable-xhdpi/ip_adress.png b/app/src/main/res/drawable-xhdpi/ip_adress.png similarity index 100% rename from res/drawable-xhdpi/ip_adress.png rename to app/src/main/res/drawable-xhdpi/ip_adress.png diff --git a/res/drawable-xhdpi/item_focused.9.png b/app/src/main/res/drawable-xhdpi/item_focused.9.png similarity index 100% rename from res/drawable-xhdpi/item_focused.9.png rename to app/src/main/res/drawable-xhdpi/item_focused.9.png diff --git a/res/drawable-xhdpi/item_pressed.9.png b/app/src/main/res/drawable-xhdpi/item_pressed.9.png similarity index 100% rename from res/drawable-xhdpi/item_pressed.9.png rename to app/src/main/res/drawable-xhdpi/item_pressed.9.png diff --git a/res/drawable-xhdpi/reponse.png b/app/src/main/res/drawable-xhdpi/reponse.png similarity index 100% rename from res/drawable-xhdpi/reponse.png rename to app/src/main/res/drawable-xhdpi/reponse.png diff --git a/res/drawable-xxhdpi/above_shadow.xml b/app/src/main/res/drawable-xxhdpi/above_shadow.xml similarity index 100% rename from res/drawable-xxhdpi/above_shadow.xml rename to app/src/main/res/drawable-xxhdpi/above_shadow.xml diff --git a/res/drawable-xxhdpi/envoi.png b/app/src/main/res/drawable-xxhdpi/envoi.png similarity index 100% rename from res/drawable-xxhdpi/envoi.png rename to app/src/main/res/drawable-xxhdpi/envoi.png diff --git a/res/drawable-xxhdpi/graphic.png b/app/src/main/res/drawable-xxhdpi/graphic.png similarity index 100% rename from res/drawable-xxhdpi/graphic.png rename to app/src/main/res/drawable-xxhdpi/graphic.png diff --git a/res/drawable-xxhdpi/ic_launcher.png b/app/src/main/res/drawable-xxhdpi/ic_launcher.png similarity index 100% rename from res/drawable-xxhdpi/ic_launcher.png rename to app/src/main/res/drawable-xxhdpi/ic_launcher.png diff --git a/res/drawable-xxhdpi/ip_adress.png b/app/src/main/res/drawable-xxhdpi/ip_adress.png similarity index 100% rename from res/drawable-xxhdpi/ip_adress.png rename to app/src/main/res/drawable-xxhdpi/ip_adress.png diff --git a/res/drawable-xxhdpi/reponse.png b/app/src/main/res/drawable-xxhdpi/reponse.png similarity index 100% rename from res/drawable-xxhdpi/reponse.png rename to app/src/main/res/drawable-xxhdpi/reponse.png diff --git a/res/drawable/above_shadow.xml b/app/src/main/res/drawable/above_shadow.xml similarity index 100% rename from res/drawable/above_shadow.xml rename to app/src/main/res/drawable/above_shadow.xml diff --git a/res/drawable/finish_background.xml b/app/src/main/res/drawable/finish_background.xml similarity index 100% rename from res/drawable/finish_background.xml rename to app/src/main/res/drawable/finish_background.xml diff --git a/res/drawable/graphic.png b/app/src/main/res/drawable/graphic.png similarity index 100% rename from res/drawable/graphic.png rename to app/src/main/res/drawable/graphic.png diff --git a/res/drawable/layout_selector.xml b/app/src/main/res/drawable/layout_selector.xml similarity index 100% rename from res/drawable/layout_selector.xml rename to app/src/main/res/drawable/layout_selector.xml diff --git a/res/drawable/linearborder.xml b/app/src/main/res/drawable/linearborder.xml similarity index 100% rename from res/drawable/linearborder.xml rename to app/src/main/res/drawable/linearborder.xml diff --git a/res/drawable/list_group.xml b/app/src/main/res/drawable/list_group.xml similarity index 100% rename from res/drawable/list_group.xml rename to app/src/main/res/drawable/list_group.xml diff --git a/res/drawable/list_item.xml b/app/src/main/res/drawable/list_item.xml similarity index 100% rename from res/drawable/list_item.xml rename to app/src/main/res/drawable/list_item.xml diff --git a/res/drawable/selectable_item_background.xml b/app/src/main/res/drawable/selectable_item_background.xml similarity index 100% rename from res/drawable/selectable_item_background.xml rename to app/src/main/res/drawable/selectable_item_background.xml diff --git a/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml similarity index 97% rename from res/layout/activity_main.xml rename to app/src/main/res/layout/activity_main.xml index 6a5e54b..0e50159 100644 --- a/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -19,7 +19,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - + + + + + + + + + + diff --git a/res/layout/toast_layout.xml b/app/src/main/res/layout/toast_layout.xml similarity index 100% rename from res/layout/toast_layout.xml rename to app/src/main/res/layout/toast_layout.xml diff --git a/res/menu/menu.xml b/app/src/main/res/menu/menu.xml similarity index 100% rename from res/menu/menu.xml rename to app/src/main/res/menu/menu.xml diff --git a/res/raw/changelog.txt b/app/src/main/res/raw/changelog.txt similarity index 100% rename from res/raw/changelog.txt rename to app/src/main/res/raw/changelog.txt diff --git a/res/raw/cris.mp3 b/app/src/main/res/raw/cris.mp3 similarity index 100% rename from res/raw/cris.mp3 rename to app/src/main/res/raw/cris.mp3 diff --git a/res/raw/eternuement.mp3 b/app/src/main/res/raw/eternuement.mp3 similarity index 100% rename from res/raw/eternuement.mp3 rename to app/src/main/res/raw/eternuement.mp3 diff --git a/res/raw/pet.mp3 b/app/src/main/res/raw/pet.mp3 similarity index 100% rename from res/raw/pet.mp3 rename to app/src/main/res/raw/pet.mp3 diff --git a/res/raw/pleur.mp3 b/app/src/main/res/raw/pleur.mp3 similarity index 100% rename from res/raw/pleur.mp3 rename to app/src/main/res/raw/pleur.mp3 diff --git a/res/raw/poule.mp3 b/app/src/main/res/raw/poule.mp3 similarity index 100% rename from res/raw/poule.mp3 rename to app/src/main/res/raw/poule.mp3 diff --git a/res/raw/rire.mp3 b/app/src/main/res/raw/rire.mp3 similarity index 100% rename from res/raw/rire.mp3 rename to app/src/main/res/raw/rire.mp3 diff --git a/res/raw/rot.mp3 b/app/src/main/res/raw/rot.mp3 similarity index 100% rename from res/raw/rot.mp3 rename to app/src/main/res/raw/rot.mp3 diff --git a/res/raw/sifflement.mp3 b/app/src/main/res/raw/sifflement.mp3 similarity index 100% rename from res/raw/sifflement.mp3 rename to app/src/main/res/raw/sifflement.mp3 diff --git a/res/values-v11/styles.xml b/app/src/main/res/values-v11/styles.xml similarity index 100% rename from res/values-v11/styles.xml rename to app/src/main/res/values-v11/styles.xml diff --git a/res/values-v14/styles.xml b/app/src/main/res/values-v14/styles.xml similarity index 100% rename from res/values-v14/styles.xml rename to app/src/main/res/values-v14/styles.xml diff --git a/app/src/main/res/values/array.xml b/app/src/main/res/values/array.xml new file mode 100644 index 0000000..7427eab --- /dev/null +++ b/app/src/main/res/values/array.xml @@ -0,0 +1,9 @@ + + + + Mademoiselle + Madame + Monsieur + + + \ No newline at end of file diff --git a/res/values/attrs.xml b/app/src/main/res/values/attrs.xml similarity index 100% rename from res/values/attrs.xml rename to app/src/main/res/values/attrs.xml diff --git a/res/values/color.xml b/app/src/main/res/values/color.xml similarity index 100% rename from res/values/color.xml rename to app/src/main/res/values/color.xml diff --git a/res/values/dimens.xml b/app/src/main/res/values/dimens.xml similarity index 100% rename from res/values/dimens.xml rename to app/src/main/res/values/dimens.xml diff --git a/res/values/strings.xml b/app/src/main/res/values/strings.xml similarity index 94% rename from res/values/strings.xml rename to app/src/main/res/values/strings.xml index 59496aa..20656c0 100644 --- a/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -31,6 +31,10 @@ Importer Lien externe + + Yana + DIY application + Mademoiselle Madame Monsieur diff --git a/res/values/styles.xml b/app/src/main/res/values/styles.xml similarity index 100% rename from res/values/styles.xml rename to app/src/main/res/values/styles.xml diff --git a/res/xml/option.xml b/app/src/main/res/xml/option.xml similarity index 98% rename from res/xml/option.xml rename to app/src/main/res/xml/option.xml index 691a7e2..4733eb9 100644 --- a/res/xml/option.xml +++ b/app/src/main/res/xml/option.xml @@ -144,7 +144,9 @@ + android:key="sexe" + android:entries="@array/listSexes" + android:entryValues="@array/listSexes" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bin/MainActivity(Conflict - 2013-07-27 13-47-56).apk b/bin/MainActivity(Conflict - 2013-07-27 13-47-56).apk deleted file mode 100644 index 0cf1cde..0000000 Binary files a/bin/MainActivity(Conflict - 2013-07-27 13-47-56).apk and /dev/null differ diff --git a/bin/MainActivity.apk b/bin/MainActivity.apk deleted file mode 100644 index 5ada864..0000000 Binary files a/bin/MainActivity.apk and /dev/null differ diff --git a/bin/YANA.apk b/bin/YANA.apk deleted file mode 100644 index 5fa6da5..0000000 Binary files a/bin/YANA.apk and /dev/null differ diff --git a/bin/Yana 4+.apk b/bin/Yana 4+.apk deleted file mode 100644 index 805452e..0000000 Binary files a/bin/Yana 4+.apk and /dev/null differ diff --git a/bin/Yana for Android.apk b/bin/Yana for Android.apk deleted file mode 100644 index e32afa3..0000000 Binary files a/bin/Yana for Android.apk and /dev/null differ diff --git a/bin/classes.dex b/bin/classes.dex deleted file mode 100644 index 0db175c..0000000 Binary files a/bin/classes.dex and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Bug.class b/bin/classes/fr/nover/yana/Bug.class deleted file mode 100644 index 144f339..0000000 Binary files a/bin/classes/fr/nover/yana/Bug.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/BuildConfig.class b/bin/classes/fr/nover/yana/BuildConfig.class deleted file mode 100644 index 90bd88c..0000000 Binary files a/bin/classes/fr/nover/yana/BuildConfig.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Configuration$1.class b/bin/classes/fr/nover/yana/Configuration$1.class deleted file mode 100644 index 5c8554c..0000000 Binary files a/bin/classes/fr/nover/yana/Configuration$1.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Configuration.class b/bin/classes/fr/nover/yana/Configuration.class deleted file mode 100644 index cfa6343..0000000 Binary files a/bin/classes/fr/nover/yana/Configuration.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/EventService$1.class b/bin/classes/fr/nover/yana/EventService$1.class deleted file mode 100644 index cbd704a..0000000 Binary files a/bin/classes/fr/nover/yana/EventService$1.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/EventService$2.class b/bin/classes/fr/nover/yana/EventService$2.class deleted file mode 100644 index 5a74f99..0000000 Binary files a/bin/classes/fr/nover/yana/EventService$2.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/EventService$3.class b/bin/classes/fr/nover/yana/EventService$3.class deleted file mode 100644 index 48f397c..0000000 Binary files a/bin/classes/fr/nover/yana/EventService$3.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/EventService.class b/bin/classes/fr/nover/yana/EventService.class deleted file mode 100644 index 22d8ed5..0000000 Binary files a/bin/classes/fr/nover/yana/EventService.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$array.class b/bin/classes/fr/nover/yana/R$array.class deleted file mode 100644 index dbb50b5..0000000 Binary files a/bin/classes/fr/nover/yana/R$array.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$attr.class b/bin/classes/fr/nover/yana/R$attr.class deleted file mode 100644 index a0e97f4..0000000 Binary files a/bin/classes/fr/nover/yana/R$attr.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$color.class b/bin/classes/fr/nover/yana/R$color.class deleted file mode 100644 index fb06084..0000000 Binary files a/bin/classes/fr/nover/yana/R$color.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$dimen.class b/bin/classes/fr/nover/yana/R$dimen.class deleted file mode 100644 index e4577a8..0000000 Binary files a/bin/classes/fr/nover/yana/R$dimen.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$drawable.class b/bin/classes/fr/nover/yana/R$drawable.class deleted file mode 100644 index 11ddd8f..0000000 Binary files a/bin/classes/fr/nover/yana/R$drawable.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$id.class b/bin/classes/fr/nover/yana/R$id.class deleted file mode 100644 index 0cd201a..0000000 Binary files a/bin/classes/fr/nover/yana/R$id.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$layout.class b/bin/classes/fr/nover/yana/R$layout.class deleted file mode 100644 index b764750..0000000 Binary files a/bin/classes/fr/nover/yana/R$layout.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$menu.class b/bin/classes/fr/nover/yana/R$menu.class deleted file mode 100644 index d24ef69..0000000 Binary files a/bin/classes/fr/nover/yana/R$menu.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$raw.class b/bin/classes/fr/nover/yana/R$raw.class deleted file mode 100644 index 9ab1b4b..0000000 Binary files a/bin/classes/fr/nover/yana/R$raw.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$string.class b/bin/classes/fr/nover/yana/R$string.class deleted file mode 100644 index 35a85c4..0000000 Binary files a/bin/classes/fr/nover/yana/R$string.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$style.class b/bin/classes/fr/nover/yana/R$style.class deleted file mode 100644 index 2d58435..0000000 Binary files a/bin/classes/fr/nover/yana/R$style.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$styleable.class b/bin/classes/fr/nover/yana/R$styleable.class deleted file mode 100644 index 4c2e76c..0000000 Binary files a/bin/classes/fr/nover/yana/R$styleable.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R$xml.class b/bin/classes/fr/nover/yana/R$xml.class deleted file mode 100644 index a0a4e03..0000000 Binary files a/bin/classes/fr/nover/yana/R$xml.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/R.class b/bin/classes/fr/nover/yana/R.class deleted file mode 100644 index 2e2addc..0000000 Binary files a/bin/classes/fr/nover/yana/R.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/ShakeService$1.class b/bin/classes/fr/nover/yana/ShakeService$1.class deleted file mode 100644 index c93262a..0000000 Binary files a/bin/classes/fr/nover/yana/ShakeService$1.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/ShakeService$2.class b/bin/classes/fr/nover/yana/ShakeService$2.class deleted file mode 100644 index 550ee42..0000000 Binary files a/bin/classes/fr/nover/yana/ShakeService$2.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/ShakeService$3.class b/bin/classes/fr/nover/yana/ShakeService$3.class deleted file mode 100644 index 4521aaa..0000000 Binary files a/bin/classes/fr/nover/yana/ShakeService$3.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/ShakeService$SilenceTimer.class b/bin/classes/fr/nover/yana/ShakeService$SilenceTimer.class deleted file mode 100644 index 4353b08..0000000 Binary files a/bin/classes/fr/nover/yana/ShakeService$SilenceTimer.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/ShakeService.class b/bin/classes/fr/nover/yana/ShakeService.class deleted file mode 100644 index bc4ac86..0000000 Binary files a/bin/classes/fr/nover/yana/ShakeService.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$1.class b/bin/classes/fr/nover/yana/Yana$1.class deleted file mode 100644 index 04b4905..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$1.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$10.class b/bin/classes/fr/nover/yana/Yana$10.class deleted file mode 100644 index ff1be26..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$10.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$11.class b/bin/classes/fr/nover/yana/Yana$11.class deleted file mode 100644 index 9346272..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$11.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$12.class b/bin/classes/fr/nover/yana/Yana$12.class deleted file mode 100644 index b5daa7f..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$12.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$13.class b/bin/classes/fr/nover/yana/Yana$13.class deleted file mode 100644 index db9d2ac..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$13.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$2.class b/bin/classes/fr/nover/yana/Yana$2.class deleted file mode 100644 index 5df21e1..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$2.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$3.class b/bin/classes/fr/nover/yana/Yana$3.class deleted file mode 100644 index da37e75..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$3.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$4.class b/bin/classes/fr/nover/yana/Yana$4.class deleted file mode 100644 index 779f04e..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$4.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$5.class b/bin/classes/fr/nover/yana/Yana$5.class deleted file mode 100644 index 0742204..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$5.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$6.class b/bin/classes/fr/nover/yana/Yana$6.class deleted file mode 100644 index 4b642e2..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$6.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$7.class b/bin/classes/fr/nover/yana/Yana$7.class deleted file mode 100644 index 78370ae..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$7.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$8.class b/bin/classes/fr/nover/yana/Yana$8.class deleted file mode 100644 index 71da4b8..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$8.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana$9.class b/bin/classes/fr/nover/yana/Yana$9.class deleted file mode 100644 index 6c0d533..0000000 Binary files a/bin/classes/fr/nover/yana/Yana$9.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/Yana.class b/bin/classes/fr/nover/yana/Yana.class deleted file mode 100644 index 9b91d2c..0000000 Binary files a/bin/classes/fr/nover/yana/Yana.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$1.class b/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$1.class deleted file mode 100644 index c9d4cf6..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$1.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$2.class b/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$2.class deleted file mode 100644 index a00efa5..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$2.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$3.class b/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$3.class deleted file mode 100644 index 50b84a9..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$3.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$4.class b/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$4.class deleted file mode 100644 index d401215..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$4.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$MyPagerAdapter.class b/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$MyPagerAdapter.class deleted file mode 100644 index f166975..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation$MyPagerAdapter.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation.class b/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation.class deleted file mode 100644 index b8ed03d..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/Assistant_Installation.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/Stockage_AI.class b/bin/classes/fr/nover/yana/assistant_installation/Stockage_AI.class deleted file mode 100644 index 65f09aa..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/Stockage_AI.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/get_config.class b/bin/classes/fr/nover/yana/assistant_installation/get_config.class deleted file mode 100644 index 097a7f6..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/get_config.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/AbstractWizardModel.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/AbstractWizardModel.class deleted file mode 100644 index 5b9df98..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/AbstractWizardModel.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/BranchPage$Branch.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/BranchPage$Branch.class deleted file mode 100644 index 330b23e..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/BranchPage$Branch.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/BranchPage.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/BranchPage.class deleted file mode 100644 index 2d540ec..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/BranchPage.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/CustomerInfoPage.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/CustomerInfoPage.class deleted file mode 100644 index ebb5989..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/CustomerInfoPage.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/IPAdressInfoPage.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/IPAdressInfoPage.class deleted file mode 100644 index e06f433..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/IPAdressInfoPage.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/IPAdress_ExtInfoPage.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/IPAdress_ExtInfoPage.class deleted file mode 100644 index 041880e..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/IPAdress_ExtInfoPage.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/ModelCallbacks.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/ModelCallbacks.class deleted file mode 100644 index b8423cb..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/ModelCallbacks.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/MultipleFixedChoicePage.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/MultipleFixedChoicePage.class deleted file mode 100644 index ec14dcc..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/MultipleFixedChoicePage.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/Page.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/Page.class deleted file mode 100644 index 0653680..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/Page.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/PageList.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/PageList.class deleted file mode 100644 index ae66b5c..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/PageList.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/PageTreeNode.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/PageTreeNode.class deleted file mode 100644 index 1dee1ce..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/PageTreeNode.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/ReviewItem.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/ReviewItem.class deleted file mode 100644 index 1a732db..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/ReviewItem.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/SingleFixedChoicePage.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/model/SingleFixedChoicePage.class deleted file mode 100644 index b6b0294..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/model/SingleFixedChoicePage.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment$1.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment$1.class deleted file mode 100644 index 310ab80..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment$1.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment$2.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment$2.class deleted file mode 100644 index b506ac1..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment$2.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment$3.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment$3.class deleted file mode 100644 index 4106cf7..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment$3.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment.class deleted file mode 100644 index dbfda10..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/CustomerInfoFragment.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdressInfoFragment$1.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdressInfoFragment$1.class deleted file mode 100644 index 90bd6c7..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdressInfoFragment$1.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdressInfoFragment.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdressInfoFragment.class deleted file mode 100644 index 6eeb008..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdressInfoFragment.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment$1.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment$1.class deleted file mode 100644 index fc42cad..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment$1.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment$2.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment$2.class deleted file mode 100644 index f3c1a66..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment$2.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment$3.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment$3.class deleted file mode 100644 index 8ff2aad..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment$3.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment.class deleted file mode 100644 index ee5afce..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/IPAdress_ExtInfoFragment.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/MultipleChoiceFragment$1.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/MultipleChoiceFragment$1.class deleted file mode 100644 index e8c4100..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/MultipleChoiceFragment$1.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/MultipleChoiceFragment.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/MultipleChoiceFragment.class deleted file mode 100644 index 0394b8c..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/MultipleChoiceFragment.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/PageFragmentCallbacks.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/PageFragmentCallbacks.class deleted file mode 100644 index bad0c76..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/PageFragmentCallbacks.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment$1.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment$1.class deleted file mode 100644 index 5058b5e..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment$1.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment$Callbacks.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment$Callbacks.class deleted file mode 100644 index 19f6e02..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment$Callbacks.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment$ReviewAdapter.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment$ReviewAdapter.class deleted file mode 100644 index 6cb5c3b..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment$ReviewAdapter.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment.class deleted file mode 100644 index 43d3c0f..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/ReviewFragment.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/SingleChoiceFragment$1.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/SingleChoiceFragment$1.class deleted file mode 100644 index fa286f9..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/SingleChoiceFragment$1.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/SingleChoiceFragment.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/SingleChoiceFragment.class deleted file mode 100644 index a183a9f..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/SingleChoiceFragment.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/StepPagerStrip$OnPageSelectedListener.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/StepPagerStrip$OnPageSelectedListener.class deleted file mode 100644 index c6ff37d..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/StepPagerStrip$OnPageSelectedListener.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/StepPagerStrip.class b/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/StepPagerStrip.class deleted file mode 100644 index 5c06360..0000000 Binary files a/bin/classes/fr/nover/yana/assistant_installation/wizard/ui/StepPagerStrip.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/passerelles/ExpandableListAdapter.class b/bin/classes/fr/nover/yana/passerelles/ExpandableListAdapter.class deleted file mode 100644 index 4d2bf3a..0000000 Binary files a/bin/classes/fr/nover/yana/passerelles/ExpandableListAdapter.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/passerelles/JsonParser.class b/bin/classes/fr/nover/yana/passerelles/JsonParser.class deleted file mode 100644 index 213eb35..0000000 Binary files a/bin/classes/fr/nover/yana/passerelles/JsonParser.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/passerelles/LevenshteinDistance.class b/bin/classes/fr/nover/yana/passerelles/LevenshteinDistance.class deleted file mode 100644 index b84ffc0..0000000 Binary files a/bin/classes/fr/nover/yana/passerelles/LevenshteinDistance.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/passerelles/ScreenReceiver.class b/bin/classes/fr/nover/yana/passerelles/ScreenReceiver.class deleted file mode 100644 index 615d51b..0000000 Binary files a/bin/classes/fr/nover/yana/passerelles/ScreenReceiver.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/passerelles/ShakeDetector$OnShakeListener.class b/bin/classes/fr/nover/yana/passerelles/ShakeDetector$OnShakeListener.class deleted file mode 100644 index 65936a2..0000000 Binary files a/bin/classes/fr/nover/yana/passerelles/ShakeDetector$OnShakeListener.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/passerelles/ShakeDetector.class b/bin/classes/fr/nover/yana/passerelles/ShakeDetector.class deleted file mode 100644 index f094d1b..0000000 Binary files a/bin/classes/fr/nover/yana/passerelles/ShakeDetector.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper$1.class b/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper$1.class deleted file mode 100644 index 3796b35..0000000 Binary files a/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper$1.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper$RecognizerFinishedCallback.class b/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper$RecognizerFinishedCallback.class deleted file mode 100644 index 2524c2e..0000000 Binary files a/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper$RecognizerFinishedCallback.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper$RecognizerState.class b/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper$RecognizerState.class deleted file mode 100644 index 7103e7a..0000000 Binary files a/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper$RecognizerState.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper$SilenceTimer.class b/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper$SilenceTimer.class deleted file mode 100644 index 4b058f1..0000000 Binary files a/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper$SilenceTimer.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper.class b/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper.class deleted file mode 100644 index 1241a06..0000000 Binary files a/bin/classes/fr/nover/yana/passerelles/SpeechRecognizerWrapper.class and /dev/null differ diff --git a/bin/classes/fr/nover/yana/passerelles/Traitement.class b/bin/classes/fr/nover/yana/passerelles/Traitement.class deleted file mode 100644 index 0c703f5..0000000 Binary files a/bin/classes/fr/nover/yana/passerelles/Traitement.class and /dev/null differ diff --git a/bin/dexedLibs/acra-4.5.0-4007c563eaf349554a920083d4e89f74.jar b/bin/dexedLibs/acra-4.5.0-4007c563eaf349554a920083d4e89f74.jar deleted file mode 100644 index ae316ca..0000000 Binary files a/bin/dexedLibs/acra-4.5.0-4007c563eaf349554a920083d4e89f74.jar and /dev/null differ diff --git a/bin/dexedLibs/acra-4.5.0-8d7f4daa37ab2b00b0291daf28ff8ffa.jar b/bin/dexedLibs/acra-4.5.0-8d7f4daa37ab2b00b0291daf28ff8ffa.jar deleted file mode 100644 index 52acbf2..0000000 Binary files a/bin/dexedLibs/acra-4.5.0-8d7f4daa37ab2b00b0291daf28ff8ffa.jar and /dev/null differ diff --git a/bin/dexedLibs/acra-4.5.0-d2d73c940522bdd19c574d9dff45d1a7.jar b/bin/dexedLibs/acra-4.5.0-d2d73c940522bdd19c574d9dff45d1a7.jar deleted file mode 100644 index 8d4d2ee..0000000 Binary files a/bin/dexedLibs/acra-4.5.0-d2d73c940522bdd19c574d9dff45d1a7.jar and /dev/null differ diff --git a/bin/dexedLibs/acra-4.5.0-sources-723aa1b26261f243bc36a4353b81a4f9.jar b/bin/dexedLibs/acra-4.5.0-sources-723aa1b26261f243bc36a4353b81a4f9.jar deleted file mode 100644 index 4de7059..0000000 Binary files a/bin/dexedLibs/acra-4.5.0-sources-723aa1b26261f243bc36a4353b81a4f9.jar and /dev/null differ diff --git a/bin/dexedLibs/android-support-v4-23f91fe613a166755ee2621f62cd43ca.jar b/bin/dexedLibs/android-support-v4-23f91fe613a166755ee2621f62cd43ca.jar deleted file mode 100644 index e3f0907..0000000 Binary files a/bin/dexedLibs/android-support-v4-23f91fe613a166755ee2621f62cd43ca.jar and /dev/null differ diff --git a/bin/dexedLibs/android-support-v4-2ccf07826aa627616705a198cebcc729.jar b/bin/dexedLibs/android-support-v4-2ccf07826aa627616705a198cebcc729.jar deleted file mode 100644 index efb5159..0000000 Binary files a/bin/dexedLibs/android-support-v4-2ccf07826aa627616705a198cebcc729.jar and /dev/null differ diff --git a/bin/dexedLibs/android-support-v4-ad95e963a7d3d3ffde254967a0b398f5.jar b/bin/dexedLibs/android-support-v4-ad95e963a7d3d3ffde254967a0b398f5.jar deleted file mode 100644 index 9cb85be..0000000 Binary files a/bin/dexedLibs/android-support-v4-ad95e963a7d3d3ffde254967a0b398f5.jar and /dev/null differ diff --git a/bin/dexedLibs/android-support-v4-ebd2f5b61af942b13d9b78fc701c5122.jar b/bin/dexedLibs/android-support-v4-ebd2f5b61af942b13d9b78fc701c5122.jar deleted file mode 100644 index cb73099..0000000 Binary files a/bin/dexedLibs/android-support-v4-ebd2f5b61af942b13d9b78fc701c5122.jar and /dev/null differ diff --git a/bin/dexedLibs/annotations-f50c5b48ce29ae7cac31b148afb43637.jar b/bin/dexedLibs/annotations-f50c5b48ce29ae7cac31b148afb43637.jar deleted file mode 100644 index c314e0a..0000000 Binary files a/bin/dexedLibs/annotations-f50c5b48ce29ae7cac31b148afb43637.jar and /dev/null differ diff --git a/bin/jarlist.cache b/bin/jarlist.cache deleted file mode 100644 index 0565465..0000000 --- a/bin/jarlist.cache +++ /dev/null @@ -1,3 +0,0 @@ -# cache for current jar dependency. DO NOT EDIT. -# format is -# Encoding is UTF-8 diff --git a/bin/res/drawable-hdpi/envoi.png b/bin/res/drawable-hdpi/envoi.png deleted file mode 100644 index 3b08997..0000000 Binary files a/bin/res/drawable-hdpi/envoi.png and /dev/null differ diff --git a/bin/res/drawable-hdpi/graphic.png b/bin/res/drawable-hdpi/graphic.png deleted file mode 100644 index 4fa3205..0000000 Binary files a/bin/res/drawable-hdpi/graphic.png and /dev/null differ diff --git a/bin/res/drawable-hdpi/ic_launcher.png b/bin/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index 6b7ff1c..0000000 Binary files a/bin/res/drawable-hdpi/ic_launcher.png and /dev/null differ diff --git a/bin/res/drawable-hdpi/ip_adress.png b/bin/res/drawable-hdpi/ip_adress.png deleted file mode 100644 index 35663ca..0000000 Binary files a/bin/res/drawable-hdpi/ip_adress.png and /dev/null differ diff --git a/bin/res/drawable-hdpi/reponse.png b/bin/res/drawable-hdpi/reponse.png deleted file mode 100644 index 59fa45c..0000000 Binary files a/bin/res/drawable-hdpi/reponse.png and /dev/null differ diff --git a/bin/res/drawable-ldpi/envoi.png b/bin/res/drawable-ldpi/envoi.png deleted file mode 100644 index 3b08997..0000000 Binary files a/bin/res/drawable-ldpi/envoi.png and /dev/null differ diff --git a/bin/res/drawable-ldpi/graphic.png b/bin/res/drawable-ldpi/graphic.png deleted file mode 100644 index 4fa3205..0000000 Binary files a/bin/res/drawable-ldpi/graphic.png and /dev/null differ diff --git a/bin/res/drawable-ldpi/reponse.png b/bin/res/drawable-ldpi/reponse.png deleted file mode 100644 index 59fa45c..0000000 Binary files a/bin/res/drawable-ldpi/reponse.png and /dev/null differ diff --git a/bin/res/drawable-mdpi/envoi.png b/bin/res/drawable-mdpi/envoi.png deleted file mode 100644 index 3b08997..0000000 Binary files a/bin/res/drawable-mdpi/envoi.png and /dev/null differ diff --git a/bin/res/drawable-mdpi/graphic.png b/bin/res/drawable-mdpi/graphic.png deleted file mode 100644 index 4fa3205..0000000 Binary files a/bin/res/drawable-mdpi/graphic.png and /dev/null differ diff --git a/bin/res/drawable-mdpi/ic_launcher.png b/bin/res/drawable-mdpi/ic_launcher.png deleted file mode 100644 index 373d154..0000000 Binary files a/bin/res/drawable-mdpi/ic_launcher.png and /dev/null differ diff --git a/bin/res/drawable-mdpi/ip_adress.png b/bin/res/drawable-mdpi/ip_adress.png deleted file mode 100644 index c949858..0000000 Binary files a/bin/res/drawable-mdpi/ip_adress.png and /dev/null differ diff --git a/bin/res/drawable-mdpi/reponse.png b/bin/res/drawable-mdpi/reponse.png deleted file mode 100644 index 59fa45c..0000000 Binary files a/bin/res/drawable-mdpi/reponse.png and /dev/null differ diff --git a/bin/res/drawable-xhdpi/envoi.png b/bin/res/drawable-xhdpi/envoi.png deleted file mode 100644 index 3b08997..0000000 Binary files a/bin/res/drawable-xhdpi/envoi.png and /dev/null differ diff --git a/bin/res/drawable-xhdpi/graphic.png b/bin/res/drawable-xhdpi/graphic.png deleted file mode 100644 index 4fa3205..0000000 Binary files a/bin/res/drawable-xhdpi/graphic.png and /dev/null differ diff --git a/bin/res/drawable-xhdpi/ic_launcher.png b/bin/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index 269a089..0000000 Binary files a/bin/res/drawable-xhdpi/ic_launcher.png and /dev/null differ diff --git a/bin/res/drawable-xhdpi/ip_adress.png b/bin/res/drawable-xhdpi/ip_adress.png deleted file mode 100644 index 3022ea1..0000000 Binary files a/bin/res/drawable-xhdpi/ip_adress.png and /dev/null differ diff --git a/bin/res/drawable-xhdpi/item_focused.9.png b/bin/res/drawable-xhdpi/item_focused.9.png deleted file mode 100644 index 3f28408..0000000 Binary files a/bin/res/drawable-xhdpi/item_focused.9.png and /dev/null differ diff --git a/bin/res/drawable-xhdpi/item_pressed.9.png b/bin/res/drawable-xhdpi/item_pressed.9.png deleted file mode 100644 index 8acdbf4..0000000 Binary files a/bin/res/drawable-xhdpi/item_pressed.9.png and /dev/null differ diff --git a/bin/res/drawable-xhdpi/reponse.png b/bin/res/drawable-xhdpi/reponse.png deleted file mode 100644 index 59fa45c..0000000 Binary files a/bin/res/drawable-xhdpi/reponse.png and /dev/null differ diff --git a/bin/res/drawable-xxhdpi/envoi.png b/bin/res/drawable-xxhdpi/envoi.png deleted file mode 100644 index 3b08997..0000000 Binary files a/bin/res/drawable-xxhdpi/envoi.png and /dev/null differ diff --git a/bin/res/drawable-xxhdpi/graphic.png b/bin/res/drawable-xxhdpi/graphic.png deleted file mode 100644 index 4fa3205..0000000 Binary files a/bin/res/drawable-xxhdpi/graphic.png and /dev/null differ diff --git a/bin/res/drawable-xxhdpi/ic_launcher.png b/bin/res/drawable-xxhdpi/ic_launcher.png deleted file mode 100644 index cb3ed79..0000000 Binary files a/bin/res/drawable-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/bin/res/drawable-xxhdpi/ip_adress.png b/bin/res/drawable-xxhdpi/ip_adress.png deleted file mode 100644 index 1ea32d6..0000000 Binary files a/bin/res/drawable-xxhdpi/ip_adress.png and /dev/null differ diff --git a/bin/res/drawable-xxhdpi/reponse.png b/bin/res/drawable-xxhdpi/reponse.png deleted file mode 100644 index 59fa45c..0000000 Binary files a/bin/res/drawable-xxhdpi/reponse.png and /dev/null differ diff --git a/bin/res/drawable/graphic.png b/bin/res/drawable/graphic.png deleted file mode 100644 index 4fa3205..0000000 Binary files a/bin/res/drawable/graphic.png and /dev/null differ diff --git a/bin/resources.ap_ b/bin/resources.ap_ deleted file mode 100644 index b10875d..0000000 Binary files a/bin/resources.ap_ and /dev/null differ diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..21e0503 --- /dev/null +++ b/build.gradle @@ -0,0 +1,21 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:1.1.3', + 'com.squareup.picasso:picasso:2.4.0' + 'com.jakewharton:butterknife:5.1.2' + // compile 'com.android.support:palette-v7:21.0.+' + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + jcenter() + } +} diff --git a/gen/fr/nover/yana/BuildConfig.java b/gen/fr/nover/yana/BuildConfig.java index cae2562..f9b7a70 100644 --- a/gen/fr/nover/yana/BuildConfig.java +++ b/gen/fr/nover/yana/BuildConfig.java @@ -1,6 +1,8 @@ -/** Automatically generated file. DO NOT MODIFY */ +/*___Generated_by_IDEA___*/ + package fr.nover.yana; +/* This stub is only used by the IDE. It is NOT the BuildConfig class actually packed into the APK */ public final class BuildConfig { - public final static boolean DEBUG = true; + public final static boolean DEBUG = Boolean.parseBoolean(null); } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..8c0fb64 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..0c71e76 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Apr 10 15:27:10 PDT 2013 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..91a7e26 --- /dev/null +++ b/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/libs/acra-4.5.0.jar b/libs/acra-4.5.0.jar deleted file mode 100644 index 81d8cd0..0000000 Binary files a/libs/acra-4.5.0.jar and /dev/null differ diff --git a/libs/android-support-v4.jar b/libs/android-support-v4.jar deleted file mode 100644 index feaf44f..0000000 Binary files a/libs/android-support-v4.jar and /dev/null differ diff --git a/local.properties b/local.properties new file mode 100644 index 0000000..827906a --- /dev/null +++ b/local.properties @@ -0,0 +1,11 @@ +## This file is automatically generated by Android Studio. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Sat Aug 29 11:41:22 CEST 2015 +sdk.dir=/home/sylvain/Android/Sdk diff --git a/res/drawable-hdpi/Thumbs.db b/res/drawable-hdpi/Thumbs.db deleted file mode 100644 index 36cfddf..0000000 Binary files a/res/drawable-hdpi/Thumbs.db and /dev/null differ diff --git a/res/drawable-ldpi/Thumbs.db b/res/drawable-ldpi/Thumbs.db deleted file mode 100644 index b120d32..0000000 Binary files a/res/drawable-ldpi/Thumbs.db and /dev/null differ diff --git a/res/drawable-mdpi/Thumbs.db b/res/drawable-mdpi/Thumbs.db deleted file mode 100644 index 6032ecd..0000000 Binary files a/res/drawable-mdpi/Thumbs.db and /dev/null differ diff --git a/res/drawable-xhdpi/Thumbs.db b/res/drawable-xhdpi/Thumbs.db deleted file mode 100644 index 69ee9a7..0000000 Binary files a/res/drawable-xhdpi/Thumbs.db and /dev/null differ diff --git a/res/drawable-xxhdpi/Thumbs.db b/res/drawable-xxhdpi/Thumbs.db deleted file mode 100644 index 341ea73..0000000 Binary files a/res/drawable-xxhdpi/Thumbs.db and /dev/null differ diff --git a/src/fr/nover/yana/Bug.java b/src/fr/nover/yana/Bug.java deleted file mode 100644 index 2e3dd06..0000000 --- a/src/fr/nover/yana/Bug.java +++ /dev/null @@ -1,24 +0,0 @@ -package fr.nover.yana; - -import org.acra.*; -import org.acra.annotation.*; - -import android.app.Application; - -@ReportsCrashes( - formKey = "", - formUri = "https://nover.cloudant.com/acra-storage/_design/acra-storage/_update/report", - reportType = org.acra.sender.HttpSender.Type.JSON, - httpMethod = org.acra.sender.HttpSender.Method.PUT, - formUriBasicAuthLogin="broundsoupserylingestalm", - formUriBasicAuthPassword="rVG7Ww8PrH0CSFoKLTCD1HGU" -) -public class Bug extends Application { - @Override - public void onCreate() { - super.onCreate(); - - // The following line triggers the initialization of ACRA - ACRA.init(this); - } -} \ No newline at end of file diff --git a/src/fr/nover/yana/ShakeService.java b/src/fr/nover/yana/ShakeService.java deleted file mode 100644 index 501fe9e..0000000 --- a/src/fr/nover/yana/ShakeService.java +++ /dev/null @@ -1,318 +0,0 @@ -/** -*Cette application a été développée par Nicolas -Nover- Guilloux. -*Elle a été créée afin d'interagir avec YANA, lui-même créé par Idleman. -*Trouvez les travaux d'Idleman ici : http://blog.idleman.fr/?p=1788 -*Vous pouvez me contacter à cette adresse : Etsu@live.fr -**/ - -package fr.nover.yana; - -import android.app.Service; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.SharedPreferences; -import android.hardware.Sensor; -import android.hardware.SensorManager; -import android.media.AudioManager; -import android.media.MediaPlayer; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; -import android.os.Handler; -import android.os.IBinder; -import android.os.PowerManager; -import android.speech.tts.TextToSpeech; -import android.speech.tts.TextToSpeech.OnUtteranceCompletedListener; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.speech.SpeechRecognizer; -import android.support.v4.content.LocalBroadcastManager; -import android.util.Log; -import android.view.Gravity; -import android.widget.Toast; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Random; - -import fr.nover.yana.passerelles.SpeechRecognizerWrapper.RecognizerFinishedCallback; -import fr.nover.yana.passerelles.SpeechRecognizerWrapper.RecognizerState; -import fr.nover.yana.passerelles.Traitement; -import fr.nover.yana.passerelles.ScreenReceiver; -import fr.nover.yana.passerelles.ShakeDetector; -import fr.nover.yana.passerelles.ShakeDetector.OnShakeListener; -import fr.nover.yana.passerelles.SpeechRecognizerWrapper; - -public class ShakeService extends Service implements TextToSpeech.OnInitListener, OnUtteranceCompletedListener, RecognizerFinishedCallback{ - - private ShakeDetector mShakeDetector; // Pour la détection du "shake" - private SensorManager mSensorManager; - private Sensor mAccelerometer; - SpeechRecognizerWrapper mSpeechRecognizerWrapper; - - private TextToSpeech mTts; // Déclare le TTS - boolean TTS_Box; // Permet de savoir si le TTS est autorisé - boolean Speech_continu; - Random random = new Random(); // Pour un message aléatoire - String Nom, Prénom, Sexe, Pseudo; // Pour l'identité de l'utilisateur - - String A_envoyer, A_dire="", IPadress, Token; // Déclare les deux variables de conversation et l'adresse IP - - Boolean last_init=false, last_shake=false; // Déclare les variables pour éviter les doublons d'initialisation et Shake - - Intent STT; - Handler myHandler = new Handler(); - Context context; - - // Logger tag - private static final String TAG=""; - // Déclare le SpeechRecognizer - private static SpeechRecognizer speech = null; - - // Déclare les contacts avec l'activité Yana - Intent NewRecrep = new Intent("NewRecrep"); - Intent NewRep = new Intent("NewRep"); - Intent Post_speech = new Intent("Post_speech"); - - // Valeur de retour de la Comparaison - int n=-1; - - final BroadcastReceiver mReceiver = new ScreenReceiver(); - - public void onCreate(){ - super.onCreate(); - - Yana.servstate=true; // Définit l'état du service pour Yana - - mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); // Définit tous les attributs du Shake - mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); - mShakeDetector = new ShakeDetector(); - mSensorManager.registerListener(mShakeDetector, mAccelerometer, SensorManager.SENSOR_DELAY_UI); - mShakeDetector.setOnShakeListener(new OnShakeListener() { - @Override - public void onShake(int count) { // En cas de Shake, si l'écran est allumé et qu'il n'y a pas déjà eu Shake - if(last_shake==false && ScreenReceiver.wasScreenOn){ - last_shake=true; - getConfig(); - A_dire=Random_String(); - getTTS();} - }}); - - mSpeechRecognizerWrapper = new SpeechRecognizerWrapper(getApplicationContext()); - mSpeechRecognizerWrapper.addRecognizerFinishedCallback(this); - - final IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); // Pour le contact avec l'interface de Yana - filter.addAction(Intent.ACTION_SCREEN_OFF); - registerReceiver(mReceiver, filter); - - context=this; - mSpeechRecognizerWrapper.Broad(this); - - fin(); - - SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(this); - Speech_continu=preferences.getBoolean("continu", false); - Log.d("Speech_continu","Speech_continu : "+Speech_continu);} - - public void onDestroy() { // En cas d'arrêt du service - super.onDestroy(); - Yana.servstate=false; // Définit l'état du service (éteint) - mSpeechRecognizerWrapper.Stop(); - unregisterReceiver(mReceiver); - mShakeDetector.setOnShakeListener(new OnShakeListener(){ // Arrête le Shake - @Override - public void onShake(int count) { - //Disable - } - }); - if (mTts != null){ // Arrête de TTS - mTts.stop(); - mTts.shutdown();} - fin();} - - public void onInit(int status) { // En cas d'initialisation (après avoir initialisé le TTS) - - Toast t = Toast.makeText(getApplicationContext(),A_dire,Toast.LENGTH_SHORT); // Affiche la phrase dites par votre téléphone - t.show(); - - if(TTS_Box && Yana.servstate){ // Si on autorise le TTS - mTts.setOnUtteranceCompletedListener(this); - HashMap myHashAlarm = new HashMap(); - myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM)); - myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "Enonciation terminée"); - - //AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE); - //int amStreamMusicMaxVol = am.getStreamMaxVolume(am.STREAM_MUSIC); - //am.setStreamVolume(am.STREAM_MUSIC, amStreamMusicMaxVol, 0); - - mTts.speak(A_dire,TextToSpeech.QUEUE_FLUSH, myHashAlarm);} // Il dicte sa phrase - } - - @Override - public void onUtteranceCompleted(String utteranceId) { - - if(!Yana.servstate){ - fin(); - mSpeechRecognizerWrapper.Stop(); - last_init=true;} - - else if(Speech_continu){ // Si il n'a pas déjà initialisé le processus de reconnaissance vocale - myHandler.postDelayed(new Runnable(){ - @Override - public void run() { - LocalBroadcastManager.getInstance(context).sendBroadcast(Post_speech); - }}, 250); - } - else{fin();} // Sinon il remet tout à 0 - } - - public void getTTS(){mTts = new TextToSpeech(this, this);} // Initialise le TTS - - public IBinder onBind(Intent arg0) {return null;} - - public String Random_String(){ // Choisit une chaine de caractères au hasard - ArrayList list = new ArrayList(); - list.add("Comment puis-je vous aider, boss ?"); - list.add("Un truc à dire, ma poule ?!"); - - if(Prénom.compareTo("")!=0){ - list.add("Oui, "+Prénom+" ?");} - - if(Nom.compareTo("")!=0){ - list.add("Que voulez-vous, maître "+Nom+" ?");} - - if(Sexe.compareTo("")!=0){ - list.add("Puis-je faire quelque chose pour vous, "+ Sexe+" ?");} - - if(Nom.compareTo("")!=0 && Sexe.compareTo("")!=0){ - list.add(Sexe+" "+Nom+", je suis tout à vous !");} - - if(Pseudo.compareTo("")!=0){ - list.add("Que veux-tu, mon petit "+Pseudo+" ?");} - - int randomInt = random.nextInt(list.size()); - String Retour = list.get(randomInt).toString(); - - return Retour;} - - public void getConfig(){ // Importe les options - SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(this); - if(Traitement.Verif_Reseau(getApplicationContext())){ - IPadress=preferences.getString("IPadress", "");} // Importe l'adresse du RPi - else{IPadress=preferences.getString("IPadress_ext", "");} - - Token=preferences.getString("token", ""); - TTS_Box=preferences.getBoolean("tts_pref", true); - Speech_continu=preferences.getBoolean("continu", true); - - Nom=preferences.getString("name", ""); // Importe l'identité de la personne - Prénom=preferences.getString("surname", ""); - Sexe=preferences.getString("sexe", ""); - Pseudo=preferences.getString("nickname", "");} - - public void onEvent(int arg0, Bundle arg1){} - - public void fin(){ // Finalise le processus - if (speech != null) { - speech.cancel(); - speech.destroy(); - speech = null;} - - last_shake=last_init=false; - if(n==0){ // Si "Yana, cache-toi" - this.stopSelf();} - - else if(Speech_continu){ - last_shake=true; - last_init=true;} - } - - public void onRecognizerFinished(String Resultat) { - Log.d(TAG,"Ordre : " + Resultat); - - if(!Speech_continu){ - mSpeechRecognizerWrapper.Stop(); - last_init=true;} - - if (speech != null) { - speech.destroy(); - speech = null;} - - A_dire=""; - - String Ordre="", URL=""; - n = Traitement.Comparaison(Resultat); // Compare les deux chaines de caractères - Log.d(TAG,"Numéro sortant : " + n); - if(n<0){ // Si échec, Ordre=Resultat - Ordre=Resultat; - A_dire="Aucun ordre ne semble être identifié au votre.";} - else{ // Sinon... - Ordre = Traitement.Commandes.get(n);} // Ordre prend la valeur de la commande choisie - - NewRecrep.putExtra("contenu", Ordre); // Envoie l'ordre à l'interface - LocalBroadcastManager.getInstance(this).sendBroadcast(NewRecrep); - - if(n>0){ // Si l'ordre est valable - if(Traitement.Verif_aux(Ordre,context)) A_dire=Traitement.Rep; - else{ - - ArrayList Params = Traitement.Parameter.get(Ordre); - - if(Params.size()>2){ - String Reponse=""; - String type = Params.get(2); - if(type.compareTo("talk")==0){ - Reponse = Params.get(3); - if(!Traitement.Sons) getTTS();} - else if(type.compareTo("sound")==0){ - String Son = Params.get(3); - Reponse = "*"+Son+"*"; - try{int ID = getResources().getIdentifier(Son, "raw", "fr.nover.yana"); - - MediaPlayer mp = MediaPlayer.create(this, ID); - mp.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); - mp.start();} - catch(Exception e){} - } - - if(Reponse.compareTo("")==0){ - NewRep.putExtra("contenu", Reponse); // Envoie de la réponse à l'interface - LocalBroadcastManager.getInstance(this).sendBroadcast(NewRep);} - } - - - URL = Traitement.Parameter.get(Ordre).get(0); - - ConnectivityManager cm = (ConnectivityManager) getApplicationContext() - .getSystemService(Context.CONNECTIVITY_SERVICE); - - NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); - - if(activeNetwork!=null){ // Vérifie le réseau - A_dire = Traitement.HTTP_Contact("http://"+IPadress+"?"+URL+"&token="+Token, getApplicationContext());} // Envoie au RPi et enregistre sa réponse - else{ - Toast toast= Toast.makeText(getApplicationContext(), // En cas d'échec, il prévient l'utilisateur - "Vous n'avez pas de connexion internet !", 4000); - toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 80); - toast.show();}}} - - if(A_dire.compareTo("")!=0){ - NewRep.putExtra("contenu", A_dire); // Envoie de la réponse à l'interface - LocalBroadcastManager.getInstance(this).sendBroadcast(NewRep);} - else{A_dire=" ";} - if(!Traitement.Sons) getTTS(); - else Traitement.Sons=false;} - - @Override - public void onRecognizerStateChanged(RecognizerState state) { - Log.d(TAG, state.toString()); - - if (state == RecognizerState.Error) { - Toast.makeText(this, state.toString(), Toast.LENGTH_SHORT).show(); - fin();} - } - - public void onRmsChanged(float rmsdB) {;} - -} \ No newline at end of file diff --git a/src/fr/nover/yana/Yana.java b/src/fr/nover/yana/Yana.java deleted file mode 100644 index ddc333c..0000000 --- a/src/fr/nover/yana/Yana.java +++ /dev/null @@ -1,586 +0,0 @@ -/** -*Cette application a été développée par Nicolas -Nover- Guilloux. -*Elle a été créée afin d'interagir avec YANA, lui-même créé par Idleman. -*Trouvez les travaux d'Idleman ici : http://blog.idleman.fr/?p=1788 -*Vous pouvez me contacter à cette adresse : Etsu@live.fr -**/ - -package fr.nover.yana; - -import android.app.Activity; -import android.app.AlertDialog; -import android.content.ActivityNotFoundException; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.SharedPreferences; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager.NameNotFoundException; -import android.content.res.Resources; -import android.media.MediaPlayer; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.os.PowerManager; -import android.preference.PreferenceManager; -import android.speech.RecognizerIntent; -import android.speech.tts.TextToSpeech; -import android.support.v4.content.LocalBroadcastManager; -import android.text.InputType; -import android.util.Log; -import android.view.Gravity; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.EditText; -import android.widget.ExpandableListView; -import android.widget.ExpandableListView.OnChildClickListener; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.ListView; -import android.widget.RelativeLayout; -import android.widget.ScrollView; -import android.widget.TextView; -import android.widget.Toast; -import android.widget.AdapterView.OnItemClickListener; - -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Locale; -import java.util.Random; - -import fr.nover.yana.assistant_installation.Assistant_Installation; -import fr.nover.yana.passerelles.Traitement; -import fr.nover.yana.passerelles.ShakeDetector; -import fr.nover.yana.passerelles.ExpandableListAdapter; - -public class Yana extends Activity implements TextToSpeech.OnInitListener{ - - static EditText IPadress; // Affiche et stocke l'adresse IP - static TextView tts_pref_false; // Affichage pour prévenir de l'état du TTS - ImageButton btnRec; // Bouton pour lancer l'initialisation - ImageView ip_adress; // Affichage et actions du bouton à côté de ip_adress - String Recrep="", Rep=""; // Déclare les variables correspondant aux divers éléments de la conversation avec le RPi - String Nom, Prénom, Sexe, Pseudo; // Pour l'identité de l'utilisateur - boolean bienvenue, changelog=false; - static boolean bienvenue_fait=false; - Random random = new Random(); // Pour un message aléatoire - - private TextToSpeech mTts;// Déclare le TTS - - static boolean testTTS = false, AI, Commande_actu=false; - - // A propos du Service (Intent pour le lancer et servstate pour savoir l'état du service) - public static Intent mShakeService,mEventService; - public static boolean servstate=false, eventstate=false; - boolean Box_TTS; - - String Token=""; - public static String version; - String version_ex; - - SharedPreferences preferences; - - // Conversation et liste de commandes - int n=1; - boolean update; - Handler myHandler = new Handler(); - - ExpandableListView expListView; - - // S'il reçoit un signal Broadcast du Service, il réagit en conséquence - private BroadcastReceiver NewRecrep = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - String contenu = intent.getStringExtra("contenu"); - conversation(contenu, "envoi");}}; - - private BroadcastReceiver NewRep = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - String contenu = intent.getStringExtra("contenu"); - conversation(contenu, "reponse");}}; - - // Juste une valeur fixe de référence pour le résultat d'Activités lancées - protected static final int RESULT_SPEECH = 1; - protected static final int OPTION = 2; - protected static final int TTS = 3; - - public void onCreate(Bundle savedInstanceState){ - super.onCreate(savedInstanceState); - setContentView(R.layout.interface_yana); // Définit la layout a utiliser - - LocalBroadcastManager.getInstance(this).registerReceiver(NewRecrep, // Déclare les liens Broadcast avec le Service - new IntentFilter("NewRecrep")); - LocalBroadcastManager.getInstance(this).registerReceiver(NewRep, - new IntentFilter("NewRep")); - - IPadress = (EditText)findViewById(R.id.IPadress); // Déclare les éléments visibles - tts_pref_false = (TextView) findViewById(R.id.tts_pref_false); - btnRec = (ImageButton) findViewById(R.id.btnRec); - ip_adress = (ImageView) findViewById(R.id.ip_adress); - expListView = (ExpandableListView) findViewById(R.id.ExpLV); - - preferences= PreferenceManager.getDefaultSharedPreferences(this); - - try { - PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); - version = pInfo.versionName; - Log.d("Version","Version de l'application : "+version);} - catch (NameNotFoundException e) {e.printStackTrace();} - - IPadress.setInputType(InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT); // Définit l'EditText comme un champ URL - - getConfig(); // Actualise la configuration - if(!Commande_actu){Commandes_actu();} - if(update){Commandes_actu();} // Actualise les commandes si la config correspond - - ip_adress.setOnClickListener(new View.OnClickListener() { // Lance la configuration si on clique sur l'image à côté de l'adresse IP - @Override - public void onClick(View v){ - String IP_Adress=IPadress.getText().toString(); - if(IP_Adress.contains("action.php")){ - IP_Adress = IP_Adress.replace("action.php", ""); - Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://"+IP_Adress)); - startActivity(browserIntent);} - else{ - Toast toast= Toast.makeText(getApplicationContext(), - "Votre adresse n'est pas bonne. :(", 4000); - toast.show();} - }}); - - btnRec.setOnClickListener(new View.OnClickListener() { // S'effectue lors d'un appui sur le bouton Rec - @Override - public void onClick(View v){ - Initialisation();}});} - - public void onStart(){ - super.onStart(); - - if(AI){ - Intent SetupWizard = new Intent(this, Assistant_Installation.class); - startActivityForResult(SetupWizard, OPTION);} - - else{ - if(bienvenue && Box_TTS && !bienvenue_fait){ - bienvenue_fait=true; - Rep = Random_String(); - mTts = new TextToSpeech(this, this);} - - if(changelog){ - String Changelog="Impossible de charger les changelogs."; - - try{Resources res = getResources(); - InputStream in_s = res.openRawResource(R.raw.changelog); - InputStreamReader in_r = new InputStreamReader(in_s, "UTF-8"); - - char[] b = new char[in_s.available()]; - in_r.read(b); - - Changelog = new String(b);} - catch (Exception e) {Log.d("Changelog",""+e);} - - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setMessage(Changelog) - .setTitle("Changelogs") - .setCancelable(false) - .setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - changelog=false; - Traitement.Verif_aux("Changelog_do", getApplicationContext());} - }); - AlertDialog alert = builder.create(); - alert.show(); - } - } - } - - public void onActivityResult(int requestCode, int resultCode, Intent data){ // S'exécute lors d'un retour d'activité - switch (requestCode) { - case RESULT_SPEECH: { // Dès que la reconnaissance vocale est terminée - if (resultCode == RESULT_OK && null != data) { - - ArrayList text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); - Recrep = text.get(0); // Enregistre le résultat dans RecRep - - String Ordre="", URL=""; // Déclare Ordre - int n = Traitement.Comparaison(Recrep); // Compare les String pour trouver un ordre - if(n<0){Ordre=Recrep;} // Si la comparaison a échoué - else{ // Sinon, la commande la plus proche de l'ordre est attribuée à Ordre - Ordre = Traitement.Commandes.get(n); - URL = Traitement.Parameter.get(Ordre).get(0);} - - Prétraitement(Ordre, URL, n); // Envoie en Prétraitement - break;}} - - case OPTION: // Dès un retour de la configuration, il la recharge - getConfig(); - break; - }} - - public void onInit(int i){ // S'exécute dès la création du mTts - try{ - if(mTts.isLanguageAvailable(Locale.FRENCH)!=TextToSpeech.LANG_AVAILABLE && !testTTS){ - new AlertDialog.Builder(this) - .setTitle("Le TTS n'est pas en Français.") - .setMessage("Android détecte que votre dispositif de Synthèse Vocale ne dispose pas du Français dans ses langues. Voulez-vous installer le Français ? Appuyez sur Non pour continuer quand même.") - .setNegativeButton("Non", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - testTTS=true;} - }) - .setPositiveButton("Oui", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - Intent installIntent = new Intent(); - installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); - startActivity(installIntent);} - }) - .show();} - else{ - testTTS=true; - mTts.setLanguage(Locale.FRENCH); - - if(Rep.compareTo("")!=0) mTts.speak(Rep,TextToSpeech.QUEUE_FLUSH, null); // Il dicte sa phrase - Rep="";} // Au cas où Rep reste le même à la prochaine déclaration du TTS - } - catch(Exception e){ - Toast t = Toast.makeText(getApplicationContext(), - "Impossible de vérifier les langues de votre TTS. Yana va tout de même essayer de le lancer.", - Toast.LENGTH_SHORT); - t.show(); - if(Rep.compareTo("")!=0) mTts.speak(Rep,TextToSpeech.QUEUE_FLUSH, null); // Il dicte sa phrase - Rep="";} - } - - public void onDestroy(){ // Quitte le TTS quand l'application se termine - if (mTts != null){ - mTts.stop(); - mTts.shutdown();} - super.onDestroy();} - - public void onResume(){ - getConfig(); - Commandes_Layout(); - super.onResume();} - - public boolean onCreateOptionsMenu(Menu menu) { // Il dit juste que y'a telle ou telle chose dans le menu - getMenuInflater().inflate(R.menu.menu, menu); - return super.onCreateOptionsMenu(menu);} - - public boolean onOptionsItemSelected(MenuItem item){ // Il dit que si on clique sur tel objet, on effectue telle action - if(item.getItemId() == R.id.Btnconfiguration){ - startActivityForResult(new Intent(this, Configuration.class), OPTION);} - if(item.getItemId() == R.id.updateCom){ - Commandes_actu();} - return super.onOptionsItemSelected(item);} - - void getConfig(){ // Importe les paramètres - String ip_adress; - if(Traitement.Verif_Reseau(getApplicationContext())) ip_adress=preferences.getString("IPadress", "");// Importe l'adresse du RPi - else ip_adress=preferences.getString("IPadress_ext", "");// Importe l'adresse du RPi - - if(ip_adress != "") IPadress.setText(ip_adress); - - AI = preferences.getBoolean("AI", true); - - Box_TTS=preferences.getBoolean("tts_pref", true); // Importe l'état de la box (autorise ou non le TTS) - if(Box_TTS==false) tts_pref_false.setText("Attention ! Votre TTS est désactivé."); - else tts_pref_false.setText(""); - - Log.d("","test"); - - bienvenue=preferences.getBoolean("bienvenue", true); - - version_ex=preferences.getString("version", ""); - if(version.compareTo(version_ex)!=0) changelog=true; - - update=preferences.getBoolean("update", false); - - Token=preferences.getString("token", ""); - - Nom=preferences.getString("name", ""); // Importe l'identité de la personne - Prénom=preferences.getString("surname", ""); - Sexe=preferences.getString("sexe", ""); - Pseudo=preferences.getString("nickname", ""); - - mShakeService=new Intent(Yana.this, ShakeService.class); // Démarre le service en fonction de l'état de la box - boolean Box_shake=preferences.getBoolean("shake", false); - if((Box_shake==true) && servstate==false){startService(mShakeService);} - else if((Box_shake==false) && servstate==true){stopService(mShakeService);} - else if((Box_shake==true) && servstate==true){ // Réactualise les variables au cas où on passe d'une reco en continu à une reco par Shake - stopService(mShakeService); - startService(mShakeService);} - - mEventService=new Intent(Yana.this, EventService.class); // Démarre le service en fonction de l'état de la box - boolean Box_Event=preferences.getBoolean("event", false); - if((Box_Event==true) && eventstate==false){ - startService(mEventService); - EventService.first=false;} - else if((Box_Event==false) && eventstate==true){stopService(mEventService);} - - Traitement.Voice_Sens = Double.parseDouble(preferences.getString("Voice_sens", "3.0"))* Math.pow(10.0,-2.0); // Importe la sensibilité de la comparaison des chaines de caractères - if (Traitement.Voice_Sens>=1){ - Toast t = Toast.makeText(getApplicationContext(), - "Attention ! La sensibilité d'analyse de la voix est trop forte. Votre programme choisira la commande la plus proche de votre ordre. Pour mettre une sensibilité, votre valeur dans les options doit être inférieure à 10. ", - Toast.LENGTH_SHORT); - t.show();} - - float Shake_sens=Float.parseFloat(preferences.getString("shake_sens", "3.0f")); // Importe la sensibilité du Shake - ShakeDetector.getConfig(Shake_sens); - - Log.d("End of Config","End Of Config");} - - void Initialisation(){ // Initialise le processus - Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); - intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "fr-FR"); - - try { - startActivityForResult(intent, RESULT_SPEECH);} // Lance l'acquisition vocale - - catch (ActivityNotFoundException a) { - Toast t = Toast.makeText(getApplicationContext(), - "Oh bah zut alors ! Ton Android n'a pas installé le STT ou ne le supporte pas. Regarde les options (langue et saisie).", - Toast.LENGTH_SHORT); - t.show();} - } - - void conversation(String Texte, String Envoi){ // Ici on inscrit la conversation entre l'utilisateur et le RPi - - final View Conversation_layout = findViewById(R.id.conversation); - - TextView valueTV = new TextView(this); // Créé le TextView pour afficher le message - valueTV.setText(Texte); - valueTV.setId(n); - - ImageView fleche = new ImageView(this); // Importe la petite flèche de droite ou de gauche - - RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); - RelativeLayout.LayoutParams params_fleche = new RelativeLayout.LayoutParams(20, 20); - - if(Envoi=="envoi"){ - fleche.setImageResource(R.drawable.envoi); - params_fleche.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); - params_fleche.addRule(RelativeLayout.ALIGN_BOTTOM, n); - - params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); - params.addRule(RelativeLayout.BELOW, (n-1)); - - valueTV.setBackgroundColor(getResources().getColor(R.color.envoi));} - - else{ - fleche.setImageResource(R.drawable.reponse); - params_fleche.addRule(RelativeLayout.ALIGN_PARENT_LEFT); - params_fleche.addRule(RelativeLayout.ALIGN_BOTTOM, n); - - params.addRule(RelativeLayout.ALIGN_PARENT_LEFT); - params.addRule(RelativeLayout.BELOW, (n-1)); - - valueTV.setBackgroundColor(getResources().getColor(R.color.recu));} - - n=n+1; - - valueTV.setPadding(10, 10, 10, 10); - params.setMargins(20, 0, 20, 20); - params_fleche.setMargins(0, 0, 0, 20); - - valueTV.setLayoutParams(params); - fleche.setLayoutParams(params_fleche); - ((ViewGroup) Conversation_layout).addView(valueTV); - ((ViewGroup) Conversation_layout).addView(fleche); - - ((ScrollView) findViewById(R.id.conversation_scroll)).post(new Runnable(){ - public void run(){((ScrollView) findViewById(R.id.conversation_scroll)).fullScroll(View.FOCUS_DOWN);}}); // Pour ancrer en bas à chaque nouvel ordre - } - - void Commandes_Layout(){ // Ici, on va inscrire les commandes sur le panel - - if(Traitement.Categories.size()>0 && Traitement.listDataChild.size()>0){ - ExpandableListAdapter listAdapter = new ExpandableListAdapter(this, Traitement.Categories, Traitement.listDataChild); - expListView.setAdapter(listAdapter); - - expListView.setOnChildClickListener(new OnChildClickListener() { - @Override - public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long itemID) { - int ID=(int)itemID; - ArrayList Reco = Traitement.listDataChild.get(Traitement.Categories.get(groupPosition)); - int i = Traitement.Comparaison(Reco.get(ID)); - Prétraitement(Traitement.Commandes.get(i), Traitement.Parameter.get(Traitement.Commandes.get(i)).get(0), i); - return false;} - }); - } - - ListView Commandes_List =(ListView) findViewById(R.id.commandes_layout); - ArrayAdapter modeAdapter = new ArrayAdapter(this, R.drawable.command_list, Traitement.Commandes_a); - Commandes_List.setAdapter(modeAdapter); - - Commandes_List.setOnItemClickListener(new OnItemClickListener() { - public void onItemClick(AdapterView arg0, View view, int arg2,long itemID) { - int ID=(int)itemID; - int i = Traitement.Comparaison(Traitement.Commandes_a.get(ID)); - Prétraitement(Traitement.Commandes.get(i), Traitement.Parameter.get(Traitement.Commandes.get(i)).get(0), i);} - });} - - void Commandes_actu(){ // Ici on va actualiser la liste des commandes - ConnectivityManager cm = (ConnectivityManager) getApplicationContext() - .getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); - ArrayList Params = new ArrayList(); - - if(Commande_actu && Token.compareTo("")!=0){ - if(activeNetwork!=null){ - if(Traitement.pick_JSON(IPadress.getText().toString(), Token)){ // Commence le protocole de reception et les enregistre dans une ArrayList - Toast toast= Toast.makeText(getApplicationContext(), - "Update fait !", 4000); - toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 80); - toast.show();} - - else{ - Toast toast= Toast.makeText(getApplicationContext(), // En cas d'échec, il prévient l'utilisateur - Traitement.Commandes.get(Traitement.Commandes.size()-1), 4000); - toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 80); - toast.show(); - Traitement.Commandes_a = new ArrayList(Traitement.Commandes);}} - else{ - Toast toast= Toast.makeText(getApplicationContext(), // En cas d'échec, il prévient l'utilisateur - "Vous n'avez pas de connexion internet !", 4000); - toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 80); - toast.show(); - Traitement.Commandes_a = new ArrayList(Traitement.Commandes);} - } - - else if (Token.compareTo("")==0 && !AI){ - - Traitement.Commandes.clear(); - Traitement.Parameter= new HashMap>(); - - Traitement.Add_Commandes(false); - - String Command = "Vous n'avez pas entré le Token. L'application ne peut pas communiquer avec votre Raspberry Pi."; - Traitement.Commandes.add(Command); - Params.add(""); - Params.add(""); - Traitement.Parameter.put(Command, Params); - - - Toast toast= Toast.makeText(getApplicationContext(), // En cas d'échec, il prévient l'utilisateur - Traitement.Commandes.get(Traitement.Commandes.size()-1), 4000); - toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 80); - toast.show(); - - Traitement.Commandes_a = new ArrayList(Traitement.Commandes);} - - else{ - Commande_actu=true; - Traitement.Commandes.clear(); - Traitement.Parameter = new HashMap>(); - - Traitement.Add_Commandes(false); - - String Command = "Vous n'avez pas encore actualisé vos commandes."; - Traitement.Commandes.add(Command); - Params.add(""); - Params.add(""); - Traitement.Parameter.put(Command, Params); - - Traitement.Commandes_a = new ArrayList(Traitement.Commandes);} - - Commandes_Layout();} - - void Prétraitement(final String Ordre, final String URL, final int n){ // Ici, on va analyser la réponse si elle est traitable localement. Sinon, on l'envoie au RPi - conversation(Ordre, "envoi"); - - if(n>0){ - ArrayList Params = Traitement.Parameter.get(Ordre); - Log.d("","Params : "+Params); - - if(Params.size()>2){ - String Reponse=""; - String type = Params.get(2); - if(type.compareTo("talk")==0){ - Reponse = Params.get(3); - if(Box_TTS==true && !Traitement.Sons){ // Lance la synthèse vocale si les options l'autorisent - mTts = new TextToSpeech(this, this);}} - else if(type.compareTo("sound")==0){ - String Son = Params.get(3); - Reponse = "*"+Son+"*"; - try{int ID = getResources().getIdentifier(Son, "raw", "fr.nover.yana"); - - MediaPlayer mp = MediaPlayer.create(this, ID); - mp.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); - mp.start();} - catch(Exception e){} - } - - if(Reponse.compareTo("")==0) conversation(Reponse, "reponse");} - } - - myHandler.postDelayed(new Runnable(){ - - @Override - public void run() { - Prétraitement2(Ordre,URL, n); - }}, 250); - } - - void Prétraitement2 (String Ordre, String URL, int n){ // Deuxième partie du Prétraitement (MyHandler l'oblige pour afficher l'ordre avant le traitement) - Rep=""; - - if(Traitement.Verif_aux(Ordre, this)) Rep = Traitement.Rep; // Vérification auxiliaire - else if(n==-1) Rep="Je ne vois aucun ordre qui ressemble à ce que vous avez dit..."; // Si Ordre=Recrep alors c'est que la reconnaissance par pertinence a échoué - else if(URL.compareTo("")==0) Rep=""; // Si l'ordre ne contient aucun URL, ça n'est pas utile de l'envoyer au serveur - else{ - ConnectivityManager cm = (ConnectivityManager) getApplicationContext() - .getSystemService(Context.CONNECTIVITY_SERVICE); - - NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); - - if(activeNetwork!=null){ // Vérifie le réseau - Log.d("Ordre",""+Ordre); - Rep = Traitement.HTTP_Contact("http://"+IPadress.getText().toString()+"?"+URL+"&token="+Token, getApplicationContext());} // Envoie au RPi et enregistre sa réponse - else{ - Toast toast= Toast.makeText(getApplicationContext(), // En cas d'échec, il prévient l'utilisateur - "Vous n'avez pas de connexion internet !", 4000); - toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 80); - toast.show();} - } - - Log.d("","Rep : "+Rep); - - if(Rep.compareTo("")!=0){ // Si la réponse n'est pas valide, ça ne sert à rien de la dire ni de l'énoncer - conversation(Rep, "reponse"); - - if(Box_TTS==true && Rep.length()<300 && !Traitement.Sons){ // Lance la synthèse vocale si les options l'autorisent et si la réponse n'est pas trop longue - mTts = new TextToSpeech(this, this);} - }} - - public String Random_String(){ // Choisit une chaine de caractères au hasard - ArrayList list = new ArrayList(); - list.add("Bonjour !"); - - if(!AI){ - if(Prénom.compareTo("")!=0){ - list.add("Salut "+Prénom+" !");} - - if(Nom.compareTo("")!=0){ - list.add("Sincères salutations, maître "+Nom+".");} - - if(Sexe.compareTo("")!=0){ - list.add("Bonjour "+Sexe+" "+Nom+". Heureux de vous revoir.");} - - if(Pseudo.compareTo("")!=0){ - list.add("Coucou mon petit "+Pseudo+". Heureux de te revoir !");}} - - int randomInt = random.nextInt(list.size()); - String Retour = list.get(randomInt).toString(); - - return Retour;} - -} \ No newline at end of file diff --git a/src/fr/nover/yana/assistant_installation/get_config.java b/src/fr/nover/yana/assistant_installation/get_config.java deleted file mode 100644 index a712e3d..0000000 --- a/src/fr/nover/yana/assistant_installation/get_config.java +++ /dev/null @@ -1,47 +0,0 @@ -package fr.nover.yana.assistant_installation; - -import fr.nover.yana.R; -import android.content.SharedPreferences; -import android.os.Bundle; -import android.preference.ListPreference; -import android.preference.PreferenceActivity; -import android.preference.PreferenceManager; - -public class get_config extends PreferenceActivity { - - String [] Values = {"Mademoiselle" , "Madame", "Monsieur"}; - public static String Nom, Prénom, Pseudonyme, IPAdress, IPadress_ext, SSID; - public static boolean TTS, ShakeService, Update_Com, externe, EventService; - public static int Sexe; - - SharedPreferences.Editor geted; - - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.option); - - geted = PreferenceManager.getDefaultSharedPreferences(this).edit(); - geted.putBoolean("AI", false); - geted.putString("name", Nom); - geted.putString("surname", Prénom); - geted.putString("nickname", Pseudonyme); - - geted.putString("IPadress", IPAdress); - if(externe){ - geted.putBoolean("externe", true); - geted.putString("IPadress_ext", IPadress_ext); - geted.putString("SSID", SSID);} - else{geted.putBoolean("externe", false);} - geted.putBoolean("shake", ShakeService); - geted.putBoolean("event", EventService); - geted.putBoolean("tts_pref", TTS); - geted.putBoolean("update", Update_Com); - geted.commit(); - - ListPreference lp = (ListPreference) findPreference("sexe"); - lp.setEntries(Values); - lp.setEntryValues(Values); - if(Sexe<3) lp.setValue(Values[Sexe]); - - finish();} -} \ No newline at end of file diff --git a/src/fr/nover/yana/passerelles/Traitement.java b/src/fr/nover/yana/passerelles/Traitement.java deleted file mode 100644 index dfe1f46..0000000 --- a/src/fr/nover/yana/passerelles/Traitement.java +++ /dev/null @@ -1,370 +0,0 @@ -/** -*Cette application a été développée par Nicolas -Nover- Guilloux. -*Elle a été créée afin d'interagir avec YANA, lui-même créé par Idleman. -*Trouvez les travaux d'Idleman ici : http://blog.idleman.fr/?p=1788 -*Vous pouvez me contacter à cette adresse : Etsu@live.fr -**/ - -package fr.nover.yana.passerelles; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.StringTokenizer; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import fr.nover.yana.EventService; -import fr.nover.yana.Yana; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.SharedPreferences; -import android.media.MediaPlayer; -import android.net.ConnectivityManager; -import android.net.wifi.WifiInfo; -import android.net.wifi.WifiManager; -import android.os.PowerManager; -import android.preference.PreferenceManager; -import android.util.Log; -import android.widget.Toast; - -@SuppressLint("DefaultLocale") -public class Traitement { - - static String Reponse=""; // Déclare la variable de réponse - - private static final String TAG=""; // Logger tag - public static double Voice_Sens; // Sensibilité de la comparaison entre ordres et commandes - static public String URL="", Rep; - static public boolean Sons; - - - - // Déclare les ArraList utilisées pour stocker les éléments de commandes - public static ArrayList Commandes = new ArrayList(); - public static HashMap> Parameter; - - public static ArrayList Categories = new ArrayList(); - public static ArrayList Identifiant_cat = new ArrayList(); - - public static HashMap> listDataChild; - public static ArrayList Commandes_a = new ArrayList(); - - static boolean retour; // Déclare le retour pour la passerelles JsonParser - - static JSONObject json; - - public static int Comparaison(String Enregistrement){ // Processus de comparaison pour faire une reconnaissance par pertinence - int n=-1; - double c=0,co; - try{ - for (int i = 0; i < Commandes.size(); i++){ - String Confidence = Parameter.get(Commandes.get(i)).get(1); - if (Confidence.compareTo("")==0) Confidence="0.8"; - co=LevenshteinDistance.similarity(Enregistrement, Commandes.get(i)); - if(co>c && co>Double.parseDouble(Confidence)-Voice_Sens){ - c=co; - n=i;} - }} - catch(Exception e){Log.e("log_tag", "Erreur pour la comparaison : "+e.toString());} - Log.d("Traitement - Comparaison", "c="+Voice_Sens); - Log.d("Traitement - Comparaison", "n="+n); - if(c>(); - - Categories.clear(); - Identifiant_cat.clear(); - - listDataChild = new HashMap>(); - Commandes_a.clear(); - - try{json = new JsonParser().execute("http://"+IPadress+"?action=GET_SPEECH_COMMAND&token="+Token).get();} - catch(Exception e){} - - ArrayList Links = new ArrayList(); - - if(retour){ - Log.d("","Début du traitement du JSON"); - try{JSONArray commands = json.getJSONArray("commands"); - for(int i = 0; i < commands.length(); i++) { - JSONObject emp = commands.getJSONObject(i); - - ArrayList Params = new ArrayList(); - - String Command=emp.getString("command"); - Command = Command.replace("'", "'"); - Command = Command.replace("eteint", "éteint"); - - String URL = emp.getString("url"); - URL = URL.replace("{", "%7B"); - URL = URL.replace("}", "%7D"); - StringTokenizer tokens = new StringTokenizer(URL, "?"); - tokens.nextToken(); - URL = tokens.nextToken(); - Params.add(URL); - - Params.add(emp.getString("confidence")); - - String type="", contenu=""; - try{ - emp.getString("PreAction"); - type=emp.getString("type"); - if(type.compareTo("talk")==0) contenu=emp.getString("sentence"); - else if(type.compareTo("sound")==0){ - contenu = emp.getString("file"); - contenu = contenu.replace(".wav", ""); - contenu = contenu.replace(".mp3", "");} - Params.add(type); - Params.add(contenu);} - catch(Exception e){} - - if(!URL.contains("vocalinfo_devmod")){ - Commandes.add(Command); - Links.add(URL); - Parameter.put(Command,Params);} - } - } - - catch(JSONException e){ - Verification_erreur(); - retour=false;} - - catch(Exception e){ - Verification_erreur(); - retour=false;} - - Add_Commandes(true); - - Commandes_a = new ArrayList(Commandes); - - int x=0; - while(Commandes_a.size()!=Links.size()){ - Links.add(x, ""); - x++;} - - for (int y=Categories.size()-1; y>=0; y--){ - ArrayList Reco = new ArrayList(); - for(int i=Commandes_a.size()-1; i>=0; i--){ - if(Links.get(i).toLowerCase().contains(Identifiant_cat.get(y).toLowerCase()) || Commandes_a.get(i).toLowerCase().contains(Identifiant_cat.get(y).toLowerCase())){ - Reco.add(Commandes_a.get(i)); - Commandes_a.remove(i); - Links.remove(i);} - } - Log.d("Reco","Reco : "+Reco); - if(Reco.size()>0){ - Collections.reverse(Reco); - listDataChild.put(Categories.get(y), Reco);} - else{ - Log.d("Remove","Remove : "+Categories.get(y)); - Categories.remove(y);} - } - } - else{ - ArrayList Params = new ArrayList(); - String Command = "Echec du contact avec le serveur. Veuillez vérifier votre système et l'adresse entrée. Il est possible aussi que votre connexion est trop lente."; - Commandes.add(Command); - Params.add(""); // Initialise un URL - Params.add(""); // Initialise une confidence - Parameter.put(Command, Params); - - Add_Commandes(false);} - - return retour;} - - static boolean Verification_erreur(){ - Log.d(TAG, "Regarde s'il n'y a pas une erreur disponible."); - - ArrayList Params = new ArrayList(); - String Command = null; - Params.add(""); // Initialise un URL - Params.add(""); // Initialise une confidence - - try{ - if(json.getString("error").compareTo("insufficient permissions")==0 || json==null) Command = "Vous n'avez pas les droits nécéssaires pour effectuer cette action. Contactez votre administrateur."; - if(json.getString("error").compareTo("invalid or missing token")==0 || json==null) Command = "Votre Token est invalide. Veuillez le vérifier."; - } - catch(JSONException x){} - catch(Exception x){} - - Log.d(TAG, "Echec de toute compréhension."); - if(Command==null) Command="Echec de compréhension par rapport à la réponse du Raspberry Pi. Veuillez présenter le problème à Nover."; - - Commandes.add(Command); - Parameter.put(Command, Params); - return false;} - - public static boolean Verif_Reseau(Context context){ // Vérifie le réseau local - try{WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); - WifiInfo wifiInfo = wifiManager.getConnectionInfo(); - ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - android.net.NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI); - String SSID_wifi=wifiInfo.getSSID(); - if(SSID_wifi!=null && SSID_wifi.contains("\"")){ - SSID_wifi = SSID_wifi.replaceAll("\"", "");} - Log.d("SSID","SSID actuelle : "+SSID_wifi); - - SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(context); - String SSID_local=preferences.getString("SSID", ""); - Log.d("SSID demandée","SSID enregistré : "+SSID_local); - if(wifi.isConnected()){ - if(SSID_wifi.compareTo(SSID_local)==0 || SSID_local.compareTo("")==0){ - Log.d("Local","true"); - return true;}}} - catch(Exception e){ - Toast toast= Toast.makeText(context, - "Echec de la vérification du réseau. Mise en local par défaut", Toast.LENGTH_SHORT); - toast.show();} - return false; - } - - public static boolean Verif_aux(String Commande, Context context){ - SharedPreferences.Editor geted = PreferenceManager.getDefaultSharedPreferences(context).edit(); - - if(Commande.contains("cache-toi")){ - geted.putBoolean("shake", false); - geted.commit(); - if(Yana.servstate==true){ - context.stopService(Yana.mShakeService); - Rep="Le ShakeService est maintenant désactivé.";} - else{Rep="Votre service est déjà désactivé.";} - return true;} - - else if(Commande.contains("montre-toi")){ - geted.putBoolean("shake", true); - geted.commit(); - if(Yana.servstate==false){ - context.startService(Yana.mShakeService); - Rep="Le ShakeService est maintenant activé.";} - else{Rep="Votre service est déjà activé.";} - return true;} - - else if(Commande.contains("désactive les événements")){ - geted.putBoolean("event", false); - geted.commit(); - if(Yana.eventstate==true){ - context.stopService(Yana.mEventService); - Rep="Les événements sont maintenant désactivés.";} - else{Rep="Les événements sont déjà désactivés.";} - return true;} - - else if(Commande.contains("active les événements")){ - geted.putBoolean("event", true); - geted.commit(); - if(Yana.eventstate==false){ - context.startService(Yana.mEventService); - EventService.first=false; - Rep="Les événements sont maintenant activés.";} - else{Rep="Les événements sont déjà activés.";} - return true;} - - else if(Commande.contains("Changelog_do")){ - geted.putString("version", Yana.version); - geted.commit(); - return true;} - - return false;} - - public static void Add_Commandes(boolean Full){ - int i=0; - ArrayList Params = new ArrayList(); - Params.add(""); - Params.add("0.7"); - String Command; - - Command = "YANA, montre-toi."; - Commandes.add(i, Command); - Parameter.put(Command, Params); - i++; - - Command = "YANA, cache-toi."; - Commandes.add(i, Command); - Parameter.put(Command, Params); - i++; - - Command = "YANA, active les événements."; - Commandes.add(i, Command); - Parameter.put(Command, Params); - i++; - - Command = "YANA, désactive les événements."; - Commandes.add(i, Command); - Parameter.put(Command, Params); - i++; - - if(Full){ - Categories.add("XBMC"); - Identifiant_cat.add("XBMC"); - - Categories.add("Sons"); - Identifiant_cat.add("vocalinfo_sound"); - - Categories.add("Relais radio"); - Identifiant_cat.add("radioRelay_change_state"); - - Categories.add("Ceci est ajouté uniquement pour éviter de faire des erreurs (car l'ArrayList serait vide)"); - Identifiant_cat.add("Ceci est ajouté uniquement pour éviter de faire des erreurs (car l'ArrayList serait vide)");} - } - - public static void Media_Player(String Son, Context context){ - Sons = true; - int ID = context.getResources().getIdentifier(Son, "raw", "fr.nover.yana"); - - MediaPlayer mp = MediaPlayer.create(context, ID); - mp.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK); - mp.start();} - -} \ No newline at end of file