François Gautrais 8 년 전
부모
커밋
9169d5d6e7
43개의 변경된 파일776개의 추가작업 그리고 594개의 파일을 삭제
  1. 41 115
      app/src/main/java/app/ara/activities/ARActivity.java
  2. 2 3
      app/src/main/java/app/ara/activities/EndActivity.java
  3. 1 1
      app/src/main/java/app/ara/activities/MARMenuActivity.java
  4. 223 0
      app/src/main/java/app/ara/activities/MediaAcitvity.java
  5. 11 26
      app/src/main/java/app/ara/activities/MenuActivity.java
  6. 2 3
      app/src/main/java/app/ara/activities/PermissionActivity.java
  7. 1 1
      app/src/main/java/app/ara/activities/PuzzleActivity.java
  8. 5 24
      app/src/main/java/app/ara/activities/ResourceListActivity.java
  9. 1 2
      app/src/main/java/app/ara/activities/SEMenuActivity.java
  10. 16 37
      app/src/main/java/app/ara/activities/SettingsActivity.java
  11. 3 5
      app/src/main/java/app/ara/activities/TransferActivity.java
  12. 47 64
      app/src/main/java/app/ara/activities/ViewerActivity.java
  13. 1 8
      app/src/main/java/app/ara/ui/CameraPreview.java
  14. 1 1
      app/src/main/java/app/ara/ui/CustomListView.java
  15. 3 3
      app/src/main/java/app/ara/ui/CustomToggleButton.java
  16. 176 0
      app/src/main/java/app/ara/ui/MediaView.java
  17. 1 1
      app/src/main/java/app/ara/ui/OnToggleListener.java
  18. 7 38
      app/src/main/java/app/ara/ui/ResourceArrayAdapter.java
  19. 1 1
      app/src/main/java/app/ara/ui/RotateButton.java
  20. 3 8
      app/src/main/java/app/ara/ui/SelectButton.java
  21. 22 6
      app/src/main/java/app/ara/utils/AndroidResources.java
  22. 1 1
      app/src/main/java/app/ara/utils/FontChangeCrawler.java
  23. 2 3
      app/src/main/java/app/ara/utils/GpsStub.java
  24. 1 2
      app/src/main/java/app/ara/utils/JSONLoader.java
  25. 65 13
      app/src/main/java/app/ara/utils/ResourceManager.java
  26. 10 74
      app/src/main/java/app/ara/utils/SensorsManager.java
  27. 1 3
      app/src/main/java/app/ara/utils/Settings.java
  28. 1 5
      app/src/main/java/app/ara/utils/SlideBuffer.java
  29. 3 5
      app/src/main/java/app/ara/utils/app/brest/game/Area.java
  30. 84 18
      app/src/main/java/app/ara/utils/app/brest/game/Game.java
  31. 1 1
      app/src/main/java/app/ara/utils/app/brest/game/LocatedResources.java
  32. 3 5
      app/src/main/java/app/ara/utils/app/brest/game/Place.java
  33. 4 5
      app/src/main/java/app/ara/utils/app/brest/game/Player.java
  34. 22 5
      app/src/main/java/app/ara/utils/app/brest/game/Resource.java
  35. 1 1
      app/src/main/java/app/ara/utils/app/brest/game/Stage.java
  36. 2 2
      app/src/main/java/app/ara/utils/files/FileManager.java
  37. 1 2
      app/src/main/java/app/ara/utils/files/JSONAssetsManager.java
  38. 2 4
      app/src/main/java/app/ara/utils/geometry/GPSPoint.java
  39. 1 1
      app/src/main/java/app/ara/utils/geometry/Point.java
  40. 1 3
      app/src/main/java/app/ara/utils/geometry/Shape.java
  41. 0 87
      app/src/main/java/app/brest/app/brest/ui/MediaView.java
  42. 1 3
      app/src/main/java/min3d/parser/AParser.java
  43. 1 4
      app/src/main/java/min3d/parser/ObjParser.java

+ 41 - 115
app/src/main/java/app/brest/testmin3d/ARActivity.java → app/src/main/java/app/ara/activities/ARActivity.java

@@ -1,40 +1,36 @@
-package app.brest.testmin3d;
-import android.Manifest;
-import android.app.Activity;
+package app.ara.activities;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
-import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.graphics.PixelFormat;
 import android.hardware.Camera;
 import android.os.Bundle;
 import android.os.Handler;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.ContextCompat;
 import android.util.Log;
 import android.view.View;
 import android.view.ViewTreeObserver;
+import android.view.Window;
 import android.view.WindowManager;
 import android.widget.Button;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
-import android.widget.Toast;
 
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
 import java.util.ArrayList;
-import java.util.List;
-
-import app.brest.app.brest.ui.CameraPreview;
-import app.brest.utils.app.brest.game.Area;
-import app.brest.utils.app.brest.game.Game;
-import app.brest.utils.app.brest.game.LocatedResources;
-import app.brest.utils.app.brest.game.Place;
-import app.brest.utils.app.brest.game.Resource;
-import app.brest.utils.app.brest.game.Stage;
-import app.brest.utils.geometry.GPSPoint;
+
+import app.ara.ui.CameraPreview;
+import app.ara.utils.AndroidResources;
+import app.ara.utils.Settings;
+import app.ara.utils.app.brest.game.Area;
+import app.ara.utils.app.brest.game.Game;
+import app.ara.utils.app.brest.game.LocatedResources;
+import app.ara.utils.app.brest.game.Place;
+import app.ara.utils.app.brest.game.Resource;
+import app.ara.utils.app.brest.game.Stage;
+import app.ara.utils.geometry.GPSPoint;
 import min3d.core.Object3d;
 import min3d.core.Object3dContainer;
 import min3d.core.RendererActivity;
@@ -42,7 +38,6 @@ import min3d.vos.CameraVo;
 import min3d.vos.Light;
 import min3d.vos.LightType;
 import min3d.vos.Number3d;
-import min3d.vos.Number3dManaged;
 
 
 public class ARActivity extends RendererActivity
@@ -77,6 +72,8 @@ public class ARActivity extends RendererActivity
     private  Boolean  mUpdate = true;
     private Handler mCustomHandler = new Handler();
 
+    private boolean mIsResource = false;
+
     public void init()
     {
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
@@ -221,6 +218,9 @@ public class ARActivity extends RendererActivity
         if(mGame.getmSettings().isARMode()) {
             double distCoef = (p.getDistance(mGame.getPlayer()) / 50) * 0.8;
             distCoef += 0.2;
+            double x = 0;
+
+
             if (distCoef > 1) distCoef = 1.0;
 
             double theta = -(-mGame.getPlayer().getOrientationY() + 135 - (0.5 * Math.atan(p.getDistance(mGame.getPlayer()) / 1.6) * 180 / Math.PI) % 360);
@@ -230,13 +230,13 @@ public class ARActivity extends RendererActivity
             oo.position().y = -25 + (float) (50 * Math.sin(-theta * Math.PI / 180.0));
 
             double alpha = ((float) (mGame.getPlayer().getAngleWith(p))-mGame.getPlayer().getOrientationX() );// - mGame.getPlayer().getOrientationZ();
-            oo.position().z = -20;//(float)(90*distCoef*Math.cos(alpha*Math.PI/180.0));
-            oo.position().x = (float) (90 * distCoef * Math.sin(alpha * Math.PI / 180.0));
+            oo.position().z = -(float)(90*distCoef*Math.cos(alpha*Math.PI/180.0));
+            oo.position().x = -(float) (90 * distCoef * Math.sin(alpha * Math.PI / 180.0));
 
             if (mGame.getmSettings().isAreaDebug()) {
 
                 toDisplay += "Azimuth: " + dts(alpha) + "°\nAngle:"+mGame.getPlayer().getAngleWith(p) +"\nPosition (" + dts(oo.position().x) + ", " + dts(oo.position().y)
-                        + ", " + dts(oo.position().z) + ")\n\n";
+                        + ", " + dts(oo.position().z) + ")\nAngle Rel:"+dts(alpha)+" : "+dts(mGame.getPlayer().getAngleWith(p))+" - "+dts(mGame.getPlayer().getOrientationX())+"\n";
             }
         }else
         {
@@ -251,90 +251,7 @@ public class ARActivity extends RendererActivity
         return toDisplay;
     }
 
-   /* protected void updateArSceneResource(Resource rr, Place p, String toDisplay)
-    {
-        Object3d oo = rr.get3DModel(this);
-        CameraVo v = new CameraVo();
-
-        if(mGame.getmSettings().isARMode()) {
-            double distCoef = (p.getDistance(mGame.getPlayer()) / 50) * 0.8;
-            distCoef += 0.2;
-            if (distCoef > 1) distCoef = 1.0;
-
-            double theta = -(-mGame.getPlayer().getOrientationY() + 135 - (0.5 * Math.atan(p.getDistance(mGame.getPlayer()) / 1.6) * 180 / Math.PI) % 360);
-            while (theta < -180) theta += 360;
-            while (theta > 180) theta -= 360;
-
-            oo.position().y = -25 + (float) (50 * Math.sin(-theta * Math.PI / 180.0));
-
-            double alpha = ((float) (mGame.getPlayer().getAngleWith(p) - mGame.getPlayer().getOrientationX())) + mGame.getPlayer().getOrientationZ();
-            oo.position().z = -20;//(float)(90*distCoef*Math.cos(alpha*Math.PI/180.0));
-            oo.position().x = (float) (90 * distCoef * Math.sin(alpha * Math.PI / 180.0));
 
-            if (mGame.getmSettings().isAreaDebug()) {
-
-                toDisplay += "Azimuth: " + dts(alpha) + "°\nPosition (" + dts(oo.position().x) + ", " + dts(oo.position().y)
-                        + ", " + dts(oo.position().z) + ")\n\n";
-            }
-        }else
-        {
-            oo.position().y = 0;
-            oo.position().z = -20;
-            oo.position().x = 0;
-        }
-
-        //vX = (float) (mGame.getPlayer().getAngleWith(p));
-        scene.camera(v);
-        scene.addChild(oo);
-    }*/
-
-
-    /*protected String updateArSceneResource(Resource rr, Place p, String toDisplay)
-    {
-        Object3d oo = rr.get3DModel(this);
-        CameraVo v = new CameraVo();
-        v.position.z=0;
-        v.position.y=0;
-        v.position.x=0;
-        //l.type(LightType.POSITIONAL);
-
-
-        double distCoef = (p.getDistance(mGame.getPlayer()) / 50) * 0.8;
-        distCoef += 0.2;
-        if (distCoef > 1) distCoef = 1.0;
-
-        double theta = -(-mGame.getPlayer().getOrientationY() + 135 - (0.5 * Math.atan(p.getDistance(mGame.getPlayer()) / 1.6) * 180 / Math.PI) % 360);
-        while (theta < -180) theta += 360;
-        while (theta > 180) theta -= 360;
-
-        oo.position().y = -25 + (float) (50 * Math.sin(-theta * Math.PI / 180.0));
-
-        double alpha = ((float) (mGame.getPlayer().getAngleWith(p) - mGame.getPlayer().getOrientationX())) - mGame.getPlayer().getOrientationZ();
-        oo.position().z = -20;//(float)(90*distCoef*Math.cos(alpha*Math.PI/180.0));
-        oo.position().x = -(float) (90 * distCoef * Math.sin(alpha * Math.PI / 180.0));
-
-        oo.position().x=(float)(150 * distCoef * Math.sin(mGame.getPlayer().getAngleWith(p) * Math.PI / 180.0));
-        oo.position().y=-20;
-        oo.position().z=(float)(150 * distCoef * Math.cos(mGame.getPlayer().getAngleWith(p) * Math.PI / 180.0));
-
-        v.target.x=(float) (45 * distCoef * Math.sin(mGame.getPlayer().getOrientationX() * Math.PI / 180.0));
-        v.target.z=(float) (45 * distCoef * Math.cos(mGame.getPlayer().getOrientationX() * Math.PI / 180.0));
-        v.target.y=-(float) (20  * Math.cos(mGame.getPlayer().getOrientationY() * Math.PI / 180.0));
-        oo.rotation().x=90-mGame.getPlayer().getOrientationY();
-
-
-        if (mGame.getmSettings().isAreaDebug()) {
-
-            toDisplay += "Azimuth: " + dts(alpha) + "°\nPosition (" + dts(oo.position().x) + ", " + dts(oo.position().y)
-                    + ", " + dts(oo.position().z) + ")\n\n";
-            toDisplay+="Target ("+v.target.x+", "+v.target.y+", "+v.target.z+")\n";
-        }
-
-        //vX = (float) (mGame.getPlayer().getAngleWith(p));
-        scene.camera(v);
-        scene.addChild(oo);
-        return toDisplay;
-    }*/
 
     protected boolean updateSceneResource()
     {
@@ -414,7 +331,10 @@ public class ARActivity extends RendererActivity
     protected void onCreate(Bundle savedInstanceState)
     {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+
+        requestWindowFeature(Window.FEATURE_NO_TITLE);
+        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
+        setContentView(R.layout.activity_ar);
         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
         //mGame = (Game) getIntent().getSerializableExtra("game");
         mGame = Game.game();
@@ -474,13 +394,12 @@ public class ARActivity extends RendererActivity
         synchronized (mUpdate)
         {
             if(!mUpdate) return;
-            boolean isResource = false;
 
             //Precache du modèle 3D
             synchronized (mLock) {
                 if (!isPausing) {
                     boolean b = mGame.precache3DResource(this);
-                    isResource = updateSceneResource();
+                    mIsResource = updateSceneResource();
                 }else
                 {
                     scene.clear();
@@ -488,7 +407,7 @@ public class ARActivity extends RendererActivity
                 }
             }
 
-            if(isResource) {
+            if(mIsResource) {
                 mOkButton.getHandler().post(new Runnable() {
                     public void run() {
                         mOkButton.setVisibility(View.VISIBLE);
@@ -623,10 +542,9 @@ public class ARActivity extends RendererActivity
                 startActivity(intent2);
             }
             System.out.println("Ressource: '"+s.getResourceName()+"' : "+!s.getResourceName().isEmpty());
-            if(!s.getResourceName().isEmpty())
+            if(!s.getResourceName().isEmpty() && s.isTransition())
             {
-                Intent intent = new Intent(this, ViewerActivity.class);
-                intent.putExtra("resource", stageRes);
+                Intent intent = AndroidResources.getViewerIntent(this, stageRes);
                 startActivity(intent);
             }
 
@@ -639,8 +557,7 @@ public class ARActivity extends RendererActivity
         }
         for(int i=0; i<res.size(); i++)
         {
-            Intent intent = new Intent(this, ViewerActivity.class);
-            intent.putExtra("resource", res.get(i) );
+            Intent intent = AndroidResources.getViewerIntent(this, res.get(i));
             startActivity(intent);
         }
         finish();
@@ -664,9 +581,18 @@ public class ARActivity extends RendererActivity
         return (int) (px / Resources.getSystem().getDisplayMetrics().density);
     }
 
-    public void onStub(View v)
+
+
+    public void onClickScreen(View v)
+
     {
-        mGame.getPlayer().nextStub();
+        if(mIsResource)
+            onClickPickUp(v);
+        else if(Settings.getSettings().isGPSDebug())
+            mGame.getPlayer().nextStub();
+        else {
+
+        }
     }
 
 }

+ 2 - 3
app/src/main/java/app/brest/testmin3d/EndActivity.java → app/src/main/java/app/ara/activities/EndActivity.java

@@ -1,10 +1,9 @@
-package app.brest.testmin3d;
+package app.ara.activities;
 
 import android.app.Activity;
-import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 
-import app.brest.utils.FontChangeCrawler;
+import app.ara.utils.FontChangeCrawler;
 
 public class EndActivity extends Activity {
 

+ 1 - 1
app/src/main/java/app/brest/testmin3d/MARMenuActivity.java → app/src/main/java/app/ara/activities/MARMenuActivity.java

@@ -1,4 +1,4 @@
-package app.brest.testmin3d;
+package app.ara.activities;
 
 import android.content.res.Resources;
 import android.util.TypedValue;

+ 223 - 0
app/src/main/java/app/ara/activities/MediaAcitvity.java

@@ -0,0 +1,223 @@
+package app.ara.activities;
+
+import android.content.Intent;
+import android.media.MediaPlayer;
+import android.os.Handler;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.FrameLayout;
+import android.widget.Button;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.SeekBar;
+import android.widget.TextView;
+
+import java.util.Timer;
+
+import app.ara.ui.MediaView;
+import app.ara.utils.AndroidResources;
+import app.ara.utils.app.brest.game.Resource;
+
+public class MediaAcitvity extends AppCompatActivity implements MediaPlayer.OnSeekCompleteListener,
+                                                                MediaView.OnStartListener,
+                                                                SeekBar.OnSeekBarChangeListener {
+    private Resource mResource;
+    private Button mInfo;
+    private TextView mTitle;
+
+    private FrameLayout mFrameLayout;
+    private ImageButton  mButton;
+    private MediaView mMediaView;
+    private ImageView mImageView;
+    private SeekBar mBar;
+    private Handler mHandler = new Handler();
+    private AutoSeek mAutoSeek;
+    private int mCurrentTime;
+    private int mEndTime;
+    private boolean mUserSeeks=false;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_media);
+
+        mFrameLayout = (FrameLayout) findViewById(R.id.media_viewer);
+        mButton = (ImageButton) findViewById(R.id.play);
+        mInfo = (Button) findViewById(R.id.info);
+        mBar = (SeekBar) findViewById(R.id.seekBar);
+        mBar.setOnSeekBarChangeListener(this);
+
+        mTitle = (TextView) findViewById(R.id.title);
+        mAutoSeek = new AutoSeek(mHandler);
+
+        mMediaView = new MediaView(this);
+        mMediaView.setOnStartListener(this);
+        mImageView = new ImageView(this);
+        mImageView.setImageResource(R.drawable.audio);
+
+        mFrameLayout.addView(mMediaView);
+        mFrameLayout.addView(mImageView);
+
+
+        if(getIntent().hasExtra("resource"))
+        {
+            mResource = (Resource) getIntent().getSerializableExtra("resource");
+            if(mResource==null) return;
+
+            mTitle.setText(mResource.getTitle());
+
+            String path=mResource.getName();
+            if(mResource.isAudio())
+            {
+                path+="_audio";
+                mImageView.setVisibility(View.VISIBLE);
+            }
+            else
+            {
+                path+="_video";
+                mImageView.setVisibility(View.GONE);
+            }
+
+            mMediaView.play(path);
+        }
+
+    }
+
+    public void onFullscreen(View v)
+    {
+        if(mTitle.getVisibility()==View.VISIBLE)
+        {
+            mTitle.setVisibility(View.GONE);
+            mInfo.setVisibility(View.GONE);
+        }else
+        {
+            mTitle.setVisibility(View.VISIBLE);
+            mInfo.setVisibility(View.VISIBLE);
+        }
+    }
+
+    public void onPlayPause(View v)
+    {
+        if(mMediaView.isPlaying())
+        {
+            mAutoSeek.stop();
+            mButton.setImageResource(android.R.drawable.ic_media_play);
+            mMediaView.pause();
+        }else
+        {
+            mAutoSeek.start();
+            mButton.setImageResource(android.R.drawable.ic_media_pause);
+            mMediaView.start();
+        }
+    }
+
+    public void onInfos(View v)
+    {
+        Intent intent = AndroidResources.getViewerIntent(this, mResource);
+        intent.putExtra("information", true);
+        startActivity(intent);
+    }
+
+    @Override
+    public void onSeekComplete(MediaPlayer mediaPlayer) {
+        mAutoSeek.start();
+        mButton.setImageResource(android.R.drawable.ic_media_pause);
+    }
+
+
+
+    public void onUpdateSeek()
+    {
+        if(mMediaView.isPlaying())
+        {
+            mCurrentTime=mMediaView.getTime()/1000;
+            mBar.setProgress(mCurrentTime);
+        }
+    }
+
+    @Override
+    public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
+        mUserSeeks=b;
+    }
+
+    @Override
+    public void onStartTrackingTouch(SeekBar seekBar) {
+
+    }
+
+    @Override
+    public void onStopTrackingTouch(SeekBar seekBar) {
+        if(mUserSeeks)
+        {
+            mCurrentTime=seekBar.getProgress();
+            mMediaView.seek(mCurrentTime*1000);
+            mAutoSeek.stop();
+            mUserSeeks=false;
+        }
+    }
+
+    @Override
+    public void onStart(MediaView mv) {
+        mCurrentTime=mv.getTime()/1000;
+        mEndTime=mv.getDuration()/1000;
+
+        mBar.setMax(mEndTime);
+        mBar.setProgress(mCurrentTime);
+        mMediaView.setOnSeekCompleteListener(this);
+
+        mAutoSeek.start();
+        mButton.setImageResource(android.R.drawable.ic_media_pause);
+    }
+
+    private class AutoSeek implements Runnable
+    {
+        private Handler mHandler;
+        AutoSeek(Handler h)
+        {
+            mHandler=h;
+        }
+
+        @Override
+        public void run() {
+            onUpdateSeek();
+            mHandler.postDelayed(this, 500);
+        }
+
+        public void start()
+        {
+            mHandler.postDelayed(this, 500);
+        }
+
+
+        public void stop()
+        {
+            mHandler.removeCallbacks(this);
+        }
+    }
+
+    protected  void onPause()
+    {
+        mAutoSeek.stop();
+        mMediaView.stop();
+        super.onPause();
+    }
+
+    protected  void onResume()
+    {
+        if(mMediaView!=null)
+            mMediaView.start();
+        super.onResume();
+    }
+
+    public void finish()
+    {
+        mAutoSeek.stop();
+        mMediaView.stop();
+        super.finish();
+    }
+
+}

+ 11 - 26
app/src/main/java/app/brest/testmin3d/MenuActivity.java → app/src/main/java/app/ara/activities/MenuActivity.java

@@ -1,34 +1,26 @@
-package app.brest.testmin3d;
+package app.ara.activities;
 
-import android.animation.ObjectAnimator;
 import android.app.Activity;
 import android.content.Intent;
 import android.content.res.Resources;
 import android.graphics.Point;
-import android.graphics.Typeface;
-import android.graphics.drawable.Drawable;
 import android.os.Handler;
-import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
-import android.text.Layout;
 import android.util.Log;
-import android.util.TypedValue;
 import android.view.Display;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.Toast;
 
-import app.brest.app.brest.ui.RotateButton;
-import app.brest.utils.FontChangeCrawler;
-import app.brest.utils.Settings;
-import app.brest.utils.app.brest.game.Game;
-import app.brest.utils.app.brest.game.Resource;
-import app.brest.utils.app.brest.game.Stage;
+import app.ara.ui.RotateButton;
+import app.ara.utils.AndroidResources;
+import app.ara.utils.FontChangeCrawler;
+import app.ara.utils.Settings;
+import app.ara.utils.app.brest.game.Game;
+import app.ara.utils.app.brest.game.Resource;
+import app.ara.utils.app.brest.game.Stage;
 
 public abstract class  MenuActivity extends Activity implements View.OnClickListener{
 
@@ -169,13 +161,9 @@ public abstract class  MenuActivity extends Activity implements View.OnClickList
 
 
     public void onInfoClick(View v) {
-        Intent intent = new Intent(this, ViewerActivity.class);
         Stage s = mGame.getCurrentStageObj();
         Resource r = (s!=null)?s.getResource(): null;
-        Log.e("_______", "Briefing\n"+s.toString());
-        Log.e("________", "Resource "+r);
-        Log.e("________", r+ "  ");
-        intent.putExtra("resource", r );
+        Intent intent = AndroidResources.getViewerIntent(this, r);
         startActivity(intent);
     }
 
@@ -194,15 +182,12 @@ public abstract class  MenuActivity extends Activity implements View.OnClickList
             startActivity(intent2);
         }
 
-        System.out.println("Ressource: '"+s.getResourceName()+"' : "+!s.getResourceName().isEmpty());
-        if(!s.getResourceName().isEmpty())
+        if(!s.getResourceName().isEmpty() && s.isTransition())
         {
-            Intent intent = new Intent(this, ViewerActivity.class);
-            intent.putExtra("resource", stageRes);
+            Intent intent = AndroidResources.getViewerIntent(this, stageRes);
             startActivity(intent);
         }
 
-        System.out.println("Transition: '"+s.isTransition());
         if(s.isTransition())
         {
             Intent intent2 = new Intent(this, TransferActivity.class);

+ 2 - 3
app/src/main/java/app/brest/testmin3d/PermissionActivity.java → app/src/main/java/app/ara/activities/PermissionActivity.java

@@ -1,4 +1,4 @@
-package app.brest.testmin3d;
+package app.ara.activities;
 
 import android.Manifest;
 import android.content.Intent;
@@ -11,8 +11,7 @@ import android.text.Html;
 import android.view.View;
 import android.widget.TextView;
 
-import app.brest.utils.FontChangeCrawler;
-import app.brest.utils.files.FileManager;
+import app.ara.utils.files.FileManager;
 
 public class PermissionActivity extends AppCompatActivity {
     private int m_nPerm=3;

+ 1 - 1
app/src/main/java/app/brest/testmin3d/PuzzleActivity.java → app/src/main/java/app/ara/activities/PuzzleActivity.java

@@ -1,4 +1,4 @@
-package app.brest.testmin3d;
+package app.ara.activities;
 
 import android.annotation.SuppressLint;
 import android.support.v7.app.ActionBar;

+ 5 - 24
app/src/main/java/app/brest/testmin3d/ResourceListActivity.java → app/src/main/java/app/ara/activities/ResourceListActivity.java

@@ -1,34 +1,15 @@
-package app.brest.testmin3d;
+package app.ara.activities;
 
-import android.annotation.SuppressLint;
 import android.app.Activity;
-import android.content.Intent;
-import android.graphics.Color;
-import android.graphics.Typeface;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
-import android.os.Handler;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.LinearLayout;
 import android.widget.ListView;
-import android.widget.ScrollView;
-import android.widget.TextView;
 
 import java.util.ArrayList;
-import java.util.List;
 
-import app.brest.app.brest.ui.CustomListView;
-import app.brest.app.brest.ui.ResourceArrayAdapter;
-import app.brest.utils.FontChangeCrawler;
-import app.brest.utils.app.brest.game.Game;
-import app.brest.utils.app.brest.game.Resource;
+import app.ara.ui.ResourceArrayAdapter;
+import app.ara.utils.FontChangeCrawler;
+import app.ara.utils.app.brest.game.Game;
+import app.ara.utils.app.brest.game.Resource;
 
 /**
  * An example full-screen activity that shows and hides the system UI (i.e.

+ 1 - 2
app/src/main/java/app/brest/testmin3d/SEMenuActivity.java → app/src/main/java/app/ara/activities/SEMenuActivity.java

@@ -1,10 +1,9 @@
-package app.brest.testmin3d;
+package app.ara.activities;
 
 import android.content.res.Resources;
 import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.View;
-import android.widget.Button;
 import android.widget.TextView;
 
 /**

+ 16 - 37
app/src/main/java/app/brest/testmin3d/SettingsActivity.java → app/src/main/java/app/ara/activities/SettingsActivity.java

@@ -1,43 +1,23 @@
-package app.brest.testmin3d;
+package app.ara.activities;
 
 
-import android.annotation.TargetApi;
 import android.app.Activity;
-import android.content.Context;
 import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.res.Configuration;
-import android.media.Ringtone;
-import android.media.RingtoneManager;
-import android.net.Uri;
-import android.os.Build;
 import android.os.Bundle;
-import android.preference.ListPreference;
-import android.preference.Preference;
 import android.preference.PreferenceActivity;
-import android.support.v7.app.ActionBar;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceManager;
-import android.preference.RingtonePreference;
 import android.support.v7.app.AlertDialog;
-import android.text.TextUtils;
-import android.view.MenuItem;
 import android.view.View;
 import android.widget.Button;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 import android.widget.Toast;
-import android.widget.ToggleButton;
 
-import java.util.List;
-
-import app.brest.app.brest.ui.CustomToggleButton;
-import app.brest.app.brest.ui.OnToggleListener;
-import app.brest.app.brest.ui.RotateButton;
-import app.brest.app.brest.ui.SelectButton;
-import app.brest.utils.FontChangeCrawler;
-import app.brest.utils.Settings;
-import app.brest.utils.app.brest.game.Game;
+import app.ara.ui.CustomToggleButton;
+import app.ara.ui.SelectButton;
+import app.ara.ui.OnToggleListener;
+import app.ara.utils.FontChangeCrawler;
+import app.ara.utils.Settings;
+import app.ara.utils.app.brest.game.Game;
 
 /**
  * A {@link PreferenceActivity} that presents a set of application settings. On
@@ -50,7 +30,7 @@ import app.brest.utils.app.brest.game.Game;
  * href="http://developer.android.com/guide/topics/ui/settings.html">Settings
  * API Guide</a> for more information on developing a Settings UI.
  */
-public class SettingsActivity extends Activity implements app.brest.app.brest.ui.OnToggleListener, View.OnClickListener {
+public class SettingsActivity extends Activity implements OnToggleListener, View.OnClickListener {
 
     protected Game         mGame;
     protected LinearLayout mRoot;
@@ -62,8 +42,8 @@ public class SettingsActivity extends Activity implements app.brest.app.brest.ui
     protected CustomToggleButton mDev;
     protected CustomToggleButton mRA;
     protected SelectButton mSensorLatency;
-    protected Button mReset;
-    protected Button mCheat;
+    protected View mReset;
+    protected View mCheat;
     protected Button mOk;
 
 
@@ -71,7 +51,6 @@ public class SettingsActivity extends Activity implements app.brest.app.brest.ui
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_settings);
-        FontChangeCrawler.setFont(this);
 
         mGame = Game.game();
         mRootDev=new LinearLayout(this);
@@ -79,7 +58,7 @@ public class SettingsActivity extends Activity implements app.brest.app.brest.ui
         mAccelerometer = new CustomToggleButton(this);
         mGPS = new CustomToggleButton(this);
         mDev = new CustomToggleButton(this);
-        mDev.setOnClickListener((app.brest.app.brest.ui.OnToggleListener)this);
+        mDev.setOnClickListener((OnToggleListener)this);
         mPlaces=new CustomToggleButton(this);
         mRA=new CustomToggleButton(this);
         mAreas=new CustomToggleButton(this);
@@ -98,13 +77,13 @@ public class SettingsActivity extends Activity implements app.brest.app.brest.ui
         addOptionBool("Afficher les ressources:", mPlaces, mRootDev);
         addAction("", mCheat, mRootDev);
         preset();
+        FontChangeCrawler.setFont(this);
     }
 
-    protected Button newButton(String text)
+    protected View newButton(String text)
     {
-        Button b = new Button(this);
+        TextView b = new TextView(this);
         b.setText(text);
-        b.setBackgroundResource(R.drawable.uibutton);
         b.setTextColor(getResources().getColor(R.color.dull_4));
         b.setOnClickListener(this);
         return b;
@@ -173,11 +152,11 @@ public class SettingsActivity extends Activity implements app.brest.app.brest.ui
         lp=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
         lp.setMargins(0, 0, 40 , 40);
         tv.setLayoutParams(lp);
-        v.setLayoutParams(new LinearLayout.LayoutParams(150, 60));
+        v.setLayoutParams(new LinearLayout.LayoutParams(150, 80));
         newSeparator(root);
     }
 
-    public void addAction(String name, Button v, LinearLayout root)
+    public void addAction(String name, View v, LinearLayout root)
     {
         LinearLayout ll = new LinearLayout(this);
         ll.setOrientation(LinearLayout.HORIZONTAL);

+ 3 - 5
app/src/main/java/app/brest/testmin3d/TransferActivity.java → app/src/main/java/app/ara/activities/TransferActivity.java

@@ -1,19 +1,17 @@
-package app.brest.testmin3d;
+package app.ara.activities;
 
 import android.app.Activity;
 import android.content.DialogInterface;
 import android.graphics.Color;
 import android.os.Handler;
 import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
-import android.util.Log;
 import android.widget.ImageButton;
 import android.widget.ProgressBar;
 import android.widget.Toast;
 
-import app.brest.utils.FontChangeCrawler;
-import app.brest.utils.app.brest.game.Game;
+import app.ara.utils.FontChangeCrawler;
+import app.ara.utils.app.brest.game.Game;
 
 public class TransferActivity extends Activity {
 

+ 47 - 64
app/src/main/java/app/brest/testmin3d/ViewerActivity.java → app/src/main/java/app/ara/activities/ViewerActivity.java

@@ -1,18 +1,11 @@
-package app.brest.testmin3d;
+package app.ara.activities;
 
-import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.graphics.Bitmap;
-import android.net.Uri;
-import android.provider.ContactsContract;
 import android.support.v4.view.MotionEventCompat;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
-import android.os.Handler;
 import android.util.Log;
 import android.view.MotionEvent;
-import android.view.VelocityTracker;
 import android.view.View;
 import android.view.WindowManager;
 import android.widget.Button;
@@ -22,24 +15,16 @@ import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.VideoView;
 
-import java.io.InputStream;
-import java.util.ArrayList;
-
-import app.brest.app.brest.ui.MediaView;
-import app.brest.utils.FontChangeCrawler;
-import app.brest.utils.app.brest.game.Resource;
-import app.brest.utils.files.FileManager;
-import app.brest.utils.geometry.Point;
+import app.ara.ui.MediaView;
+import app.ara.utils.FontChangeCrawler;
+import app.ara.utils.app.brest.game.Resource;
+import app.ara.utils.files.FileManager;
+import app.ara.utils.geometry.Point;
 import min3d.core.Object3d;
-import min3d.core.Object3dContainer;
 import min3d.core.RendererActivity;
-import min3d.parser.IParser;
-import min3d.parser.Parser;
 import min3d.vos.CameraVo;
 import min3d.vos.Light;
-import min3d.vos.Number3d;
 import uk.co.senab.photoview.PhotoViewAttacher;
-import uk.co.senab.photoview.log.LogManager;
 
 /**
  * An example full-screen activity that shows and hides the system UI (i.e.
@@ -54,7 +39,6 @@ public class ViewerActivity extends RendererActivity implements View.OnTouchList
     private Button mButton;
     private TextView mText;
     private PhotoViewAttacher mAttacher;
-    private MediaView       mMediaView;
 
     protected float mPreviousX;
     protected float mPreviousY;
@@ -62,36 +46,40 @@ public class ViewerActivity extends RendererActivity implements View.OnTouchList
     protected CameraVo mCamera = new CameraVo();
     protected boolean mIsZooming = false;
     protected boolean mIsMoving = false;
+
+    public static final int CONTENT_NULL=0;
+    public static final int CONTENT_MAP=1;
+    public static final int CONTENT_INFO=2;
+    public static final int CONTENT_IMAGE=3;
+    public static final int CONTENT_3D=4;
+    protected int mContent=CONTENT_NULL;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_viewer);
         FontChangeCrawler.setFont(this);
 
-
-        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
         mFrameLayout = (FrameLayout) findViewById(R.id.frame_viewer);
         mImageView = (ImageView) findViewById(R.id.imageView);
         mButton = (Button) findViewById(R.id.button_info);
         mText = (TextView) findViewById(R.id.tv_comment);
-        mMediaView = new MediaView(this);
-        mFrameLayout.addView(mMediaView);
         if(getIntent().hasExtra("resource"))
         {
             mResource = (Resource) getIntent().getSerializableExtra("resource");
             if(mResource!=null) setTitle(mResource.getTitle());
         }
 
-        VideoView m_c = (VideoView)findViewById(R.id.vv_media);
-        Button title = (Button)findViewById(R.id.b_title);
-        m_c.setVisibility(View.INVISIBLE);
-        mMediaView.setVisibility(View.INVISIBLE);
+        final TextView title = (TextView) findViewById(R.id.b_title);
+        title.setVisibility(View.VISIBLE);
+        mText.setVisibility(View.INVISIBLE);
+
         if(mResource != null && !getIntent().hasExtra("information") && !getIntent().hasExtra("map"))
         {
-            Log.e("______", "Type="+mResource.getType());
             title.setText(mResource.getTitle());
-            if(mResource.getType().compareTo("Image")==0)
+            if(mResource.isImage())
             {
+                mContent=CONTENT_IMAGE;
                 Bitmap bmp=null;
                 try {
                     bmp = FileManager.openImage(mResource.getName());
@@ -102,54 +90,34 @@ public class ViewerActivity extends RendererActivity implements View.OnTouchList
                 mImageView.setImageBitmap(bmp);
                 mAttacher = new PhotoViewAttacher(mImageView);
                 mAttacher.setMaximumScale(20);
+
             }
-            else if(mResource.getType().compareTo("3D")==0) {
+            else if(mResource.is3D()) {
+                mContent=CONTENT_3D;
                 mFrameLayout.addView(_glSurfaceView);
                 mImageView.setVisibility(View.INVISIBLE);
-                VideoView mc = (VideoView)findViewById(R.id.vv_media);
-                mc.setVisibility(View.INVISIBLE);
-            }else
-            {
-                String path=mResource.getName();
-                if(mResource.getType().compareTo("Audio")==0) path+="_audio";
-                else path+="_video";
-                mImageView.setVisibility(View.INVISIBLE);
-                _glSurfaceView.setVisibility(View.INVISIBLE);
-                _glSurfaceView.setOnTouchListener(this);
-                mMediaView.setVisibility(View.VISIBLE);
-                /*VideoView mc = (VideoView)findViewById(R.id.vv_media);
-
-                mc.setVisibility(View.VISIBLE);
-                Uri video = null;
-                try {
-                    video = FileManager.getUri(path);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-                //mc.setVideoURI(video);
-                mc.start();*/
-                mMediaView.play(path);
-
             }
 
         } else if(getIntent().hasExtra("map") )
         {
+            mContent=CONTENT_MAP;
             Bitmap bmp=null;
             try {
                 bmp = FileManager.openImage("map");
             } catch (Exception e) {
                 e.printStackTrace();
             }
-            title.setText("Carte");
+            title.setVisibility(View.GONE);
             mImageView.setImageBitmap(bmp);
             mAttacher = new PhotoViewAttacher(mImageView);
             mAttacher.setMaximumScale(20);
-            mButton.setVisibility(View.INVISIBLE);
+            mButton.setVisibility(View.GONE);
         }
         else if(mResource != null && getIntent().hasExtra("information"))
         {
+            mContent=CONTENT_INFO;
             title.setText(mResource.getTitle());
-            mButton.setVisibility(View.INVISIBLE);
+            mButton.setVisibility(View.GONE);
             mText.setVisibility(View.VISIBLE);
             mText.setText(mResource.getComment());
             //mFrameLayout.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
@@ -166,21 +134,17 @@ public class ViewerActivity extends RendererActivity implements View.OnTouchList
 
     protected  void onPause()
     {
-        mMediaView.stop();
         super.onPause();
 
     }
 
     public void finish()
     {
-
-        mMediaView.stop();
         super.finish();
     }
 
     public void onDestroy()
     {
-        mMediaView.stop();
         super.onDestroy();
     }
 
@@ -295,4 +259,23 @@ public class ViewerActivity extends RendererActivity implements View.OnTouchList
 
     }
 
+    public void onClick(View v)
+    {
+        if(mContent==CONTENT_IMAGE) {
+            Log.e("______________", "OnClick");
+
+            final TextView title = (TextView) findViewById(R.id.b_title);
+            if (title.getVisibility() == View.VISIBLE) {
+                Log.e("______________", "Visible -> Gone");
+                title.setVisibility(View.GONE);
+                mButton.setVisibility(View.GONE);
+            } else {
+                Log.e("______________", "Gone -> Visible");
+
+                title.setVisibility(View.VISIBLE);
+                mButton.setVisibility(View.VISIBLE);
+            }
+        }
+    }
+
 }

+ 1 - 8
app/src/main/java/app/brest/app/brest/ui/CameraPreview.java → app/src/main/java/app/ara/ui/CameraPreview.java

@@ -1,4 +1,4 @@
-package app.brest.app.brest.ui;
+package app.ara.ui;
 
 /**
  * Created by ptitcois on 17/08/16.
@@ -12,13 +12,6 @@ import android.util.Log;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 
-import android.hardware.Camera;
-import android.content.Context;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-
-import java.io.IOException;
-
 public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
 
     private Camera mCamera;

+ 1 - 1
app/src/main/java/app/brest/app/brest/ui/CustomListView.java → app/src/main/java/app/ara/ui/CustomListView.java

@@ -1,4 +1,4 @@
-package app.brest.app.brest.ui;
+package app.ara.ui;
 
 import android.content.Context;
 import android.util.AttributeSet;

+ 3 - 3
app/src/main/java/app/brest/app/brest/ui/CustomToggleButton.java → app/src/main/java/app/ara/ui/CustomToggleButton.java

@@ -1,11 +1,11 @@
-package app.brest.app.brest.ui;
+package app.ara.ui;
 
 import android.content.Context;
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.Button;
 
-import app.brest.testmin3d.R;
+import app.ara.activities.R;
 
 /**
  * Created by ptitcois on 31/10/16.
@@ -89,7 +89,7 @@ public class CustomToggleButton extends Button implements View.OnClickListener {
     }
 
 
-    public void setOnClickListener(app.brest.app.brest.ui.OnToggleListener l)
+    public void setOnClickListener(OnToggleListener l)
     {
         mListener=l;
     }

+ 176 - 0
app/src/main/java/app/ara/ui/MediaView.java

@@ -0,0 +1,176 @@
+package app.ara.ui;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.res.AssetFileDescriptor;
+import android.media.MediaPlayer;
+import android.util.Log;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.View;
+
+import java.io.IOException;
+
+import app.ara.utils.files.FileManager;
+
+/**
+ * Created by ptitcois on 27/03/17.
+ */
+public class MediaView extends SurfaceView implements View.OnClickListener,SurfaceHolder.Callback {
+    private MediaPlayer mPlayer;
+    private MediaView mThis;
+    private Context mContext;
+    private OnStartListener mOnStart;
+
+    public interface OnStartListener
+    {
+        public void onStart(MediaView mv);
+    }
+
+
+
+    public MediaView(Activity cont) {
+        super(cont);
+        setOnClickListener(this);
+        mThis=this;
+        mContext=cont;
+    }
+
+    public void surfaceCreated(SurfaceHolder holder)
+    {
+        if(mPlayer!=null)mPlayer.setDisplay(getHolder());
+    }
+
+    @Override
+    public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
+        if(mPlayer!=null)mPlayer.setDisplay(getHolder());
+
+    }
+
+    @Override
+    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
+
+    }
+
+    public void stop() {
+        if(mPlayer!=null && mPlayer.isPlaying())
+            mPlayer.stop();
+    }
+
+    public void play(String path)
+    {
+        final MediaView x=this;
+        AssetFileDescriptor afd;
+        mPlayer = new MediaPlayer();
+        mPlayer.setOnVideoSizeChangedListener(mOnVideoSizeChangedListener);
+        Log.e("MediaPlayer", "Play: '"+path+"'");
+        afd = FileManager.getAfdMedia(path);
+        try {
+            mPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        mPlayer.prepareAsync();
+        mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+
+            @Override
+            public void onPrepared(MediaPlayer mp) {
+                mp.setDisplay(mThis.getHolder());
+                mp.start();
+                if(mOnStart!=null)
+                    mOnStart.onStart(x);
+            }
+        });
+
+    }
+    @Override
+    public void onClick(View view) {
+        if(mPlayer!=null)
+        {
+            if(mPlayer.isPlaying())
+            {
+                mPlayer.pause();
+            }else{
+                mPlayer.start();
+            }
+
+        }
+    }
+
+    public boolean isPlaying()
+    {
+        return mPlayer!=null && mPlayer.isPlaying();
+    }
+
+    public void setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener o)
+    {
+        mPlayer.setOnSeekCompleteListener(o);
+    }
+
+    public int getDuration()
+    {
+        return mPlayer.getDuration();
+    }
+
+
+    public int getTime()
+    {
+        return mPlayer.getCurrentPosition();
+    }
+
+    public void start()
+    {
+        mPlayer.start();
+    }
+
+    public void pause()
+    {
+        mPlayer.pause();
+    }
+
+    public void seek(int x)
+    {
+        mPlayer.seekTo(x);
+    }
+
+    MediaPlayer.OnVideoSizeChangedListener mOnVideoSizeChangedListener = new MediaPlayer.OnVideoSizeChangedListener() {
+
+        @Override
+        public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
+
+            setFitToFillAspectRatio(mp, width, height);
+
+        }
+    };
+
+
+    private void setFitToFillAspectRatio(MediaPlayer mp, int videoWidth, int videoHeight)
+    {
+        if(mp != null)
+        {
+            Integer screenWidth = getWidth();
+            Integer screenHeight = getHeight();
+            android.view.ViewGroup.LayoutParams videoParams = getLayoutParams();
+
+
+            if (videoWidth > videoHeight)
+            {
+                videoParams.width = screenWidth;
+                videoParams.height = screenWidth * videoHeight / videoWidth;
+            }
+            else
+            {
+                videoParams.width = screenHeight * videoWidth / videoHeight;
+                videoParams.height = screenHeight;
+            }
+
+
+            setLayoutParams(videoParams);
+        }
+    }
+
+    public void setOnStartListener(OnStartListener mv)
+    {
+        mOnStart=mv;
+    }
+}

+ 1 - 1
app/src/main/java/app/brest/app/brest/ui/OnToggleListener.java → app/src/main/java/app/ara/ui/OnToggleListener.java

@@ -1,4 +1,4 @@
-package app.brest.app.brest.ui;
+package app.ara.ui;
 
 import android.view.View;
 

+ 7 - 38
app/src/main/java/app/brest/app/brest/ui/ResourceArrayAdapter.java → app/src/main/java/app/ara/ui/ResourceArrayAdapter.java

@@ -1,28 +1,22 @@
-package app.brest.app.brest.ui;
+package app.ara.ui;
 
-import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Color;
-import android.graphics.Typeface;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import java.util.List;
 
-import app.brest.testmin3d.R;
-import app.brest.testmin3d.ResourceListActivity;
-import app.brest.testmin3d.ViewerActivity;
-import app.brest.utils.FontChangeCrawler;
-import app.brest.utils.app.brest.game.Resource;
+import app.ara.activities.R;
+import app.ara.utils.AndroidResources;
+import app.ara.utils.FontChangeCrawler;
+import app.ara.utils.app.brest.game.Resource;
 
 /**
  * Created by ptitcois on 22/08/16.
@@ -41,30 +35,7 @@ public class ResourceArrayAdapter extends ArrayAdapter<Object> implements  Adapt
     public View getView(int position, View convertView,
                         ViewGroup parent) {
 
-        /*
-        View view =super.getView(position, convertView, parent);
 
-        TextView textView=(TextView) view.findViewById(android.R.id.text1);
-
-        textView.setTextColor(Color.rgb(0, 0, 0));
-
-        if(mList.get(position) instanceof String){
-            textView.setTextSize(30);
-            //textView.setTypeface(null, Typeface.BOLD);
-        }else{
-            textView.setTextSize(15);
-            //textView.setTypeface(null, Typeface.NORMAL);
-        }
-        LinearLayout ll = new LinearLayout(mContext);
-        ImageButton ib = new ImageButton(mContext);
-        ib.setImageResource(R.drawable.fleche);
-        ll.addView(ib);
-        ll.addView(view);
-        FontChangeCrawler.setFont(view, mContext);
-
-        return ll;*/
-        //Android nous fournit un convertView null lorsqu'il nous demande de la créer
-        //dans le cas contraire, cela veux dire qu'il nous fournit une vue recyclée
         if(convertView == null){
             //Nous récupérons notre row_tweet via un LayoutInflater,
             //qui va charger un layout xml dans un objet View
@@ -89,8 +60,7 @@ public class ResourceArrayAdapter extends ArrayAdapter<Object> implements  Adapt
 
                 @Override
                 public void onClick(View view) {
-                    Intent intent = new Intent(mContext, ViewerActivity.class);
-                    intent.putExtra("resource", re);
+                    Intent intent = AndroidResources.getViewerIntent(mContext, re);
                     mContext.startActivity(intent);
                 }
             });
@@ -113,8 +83,7 @@ public class ResourceArrayAdapter extends ArrayAdapter<Object> implements  Adapt
             Resource item = (Resource) adapterView.getItemAtPosition(i);
             Log.e("__________", "ItemClick: "+i+" "+l+ " Ressource");
 
-            Intent intent = new Intent(mContext, ViewerActivity.class);
-            intent.putExtra("resource", item);
+            Intent intent =AndroidResources.getViewerIntent(mContext, item);
             mContext.startActivity(intent);
 
         }else if(adapterView.getItemAtPosition(i) instanceof String)

+ 1 - 1
app/src/main/java/app/brest/app/brest/ui/RotateButton.java → app/src/main/java/app/ara/ui/RotateButton.java

@@ -1,4 +1,4 @@
-package app.brest.app.brest.ui;
+package app.ara.ui;
 
 import android.content.Context;
 import android.graphics.Canvas;

+ 3 - 8
app/src/main/java/app/brest/app/brest/ui/SelectButton.java → app/src/main/java/app/ara/ui/SelectButton.java

@@ -1,17 +1,12 @@
-package app.brest.app.brest.ui;
+package app.ara.ui;
 
 import android.content.Context;
-import android.util.AttributeSet;
-import android.view.Gravity;
 import android.view.View;
 import android.widget.Button;
 import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
 import android.widget.TextView;
 
-import java.util.ArrayList;
-
-import app.brest.testmin3d.R;
+import app.ara.activities.R;
 
 /**
  * Created by ptitcois on 31/10/16.
@@ -22,7 +17,7 @@ public class SelectButton extends LinearLayout implements View.OnClickListener {
     protected Button mRight;
     protected TextView mText;
     protected int mState = 0;
-    protected int mHeight=60;
+    protected int mHeight=70;
     protected void setLParams(View v, int w, int h)
     {
         LayoutParams l =new LayoutParams(w,h);

+ 22 - 6
app/src/main/java/app/brest/utils/AndroidResources.java → app/src/main/java/app/ara/utils/AndroidResources.java

@@ -1,14 +1,14 @@
-package app.brest.utils;
+package app.ara.utils;
 
 import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.view.View;
-import android.widget.VideoView;
 
-import java.net.URI;
-
-import app.brest.testmin3d.R;
+import app.ara.activities.MediaAcitvity;
+import app.ara.activities.ViewerActivity;
+import app.ara.utils.app.brest.game.Resource;
 import min3d.core.Object3d;
 import min3d.parser.IParser;
 import min3d.parser.Parser;
@@ -46,4 +46,20 @@ public class AndroidResources {
         return null;
     }
 
+
+    public static Intent getViewerIntent(Context c, Resource re)
+    {
+        Intent intent =null ;
+        if(re.isAudio() || re.isVideo())
+            intent = new Intent(c, MediaAcitvity.class);
+        else if(re.is3D())
+            intent= new Intent(c, ViewerActivity.class);
+        else if(re.isImage())
+            intent= new Intent(c, ViewerActivity.class);
+
+        intent.putExtra("resource", re);
+
+        return intent;
+    }
+    //ViewerActivity.class
 }

+ 1 - 1
app/src/main/java/app/brest/utils/FontChangeCrawler.java → app/src/main/java/app/ara/utils/FontChangeCrawler.java

@@ -1,4 +1,4 @@
-package app.brest.utils;
+package app.ara.utils;
 
 import android.app.Activity;
 import android.content.Context;

+ 2 - 3
app/src/main/java/app/brest/utils/GpsStub.java → app/src/main/java/app/ara/utils/GpsStub.java

@@ -1,11 +1,10 @@
-package app.brest.utils;
+package app.ara.utils;
 
 import android.util.Log;
 
 import java.util.ArrayList;
-import java.util.StringTokenizer;
 
-import app.brest.utils.geometry.GPSPoint;
+import app.ara.utils.geometry.GPSPoint;
 
 /**
  * Created by ptitcois on 24/10/16.

+ 1 - 2
app/src/main/java/app/brest/utils/JSONLoader.java → app/src/main/java/app/ara/utils/JSONLoader.java

@@ -1,9 +1,8 @@
-package app.brest.utils;
+package app.ara.utils;
 
 import android.app.Activity;
 import android.util.Log;
 
-import org.json.JSONArray;
 import org.json.JSONObject;
 
 import java.io.ByteArrayOutputStream;

+ 65 - 13
app/src/main/java/app/brest/utils/ResourceManager.java → app/src/main/java/app/ara/utils/ResourceManager.java

@@ -1,21 +1,13 @@
-package app.brest.utils;
-
-import android.app.Activity;
-import android.content.res.Resources;
-import android.util.Log;
+package app.ara.utils;
 
 import java.io.Serializable;
 import java.util.ArrayList;
 
-import app.brest.utils.app.brest.game.Game;
-import app.brest.utils.app.brest.game.Resource;
-import min3d.core.Object3d;
-import min3d.core.Object3dContainer;
-import min3d.parser.IParser;
-import min3d.parser.Parser;
+import app.ara.utils.app.brest.game.Resource;
 
 /**
  * Created by ptitcois on 18/08/16.
+ * Cette classe gère les differentes ressources
  */
 public class ResourceManager implements Serializable{
     protected ArrayList<Resource> mAllResources = new ArrayList<Resource>();
@@ -25,33 +17,58 @@ public class ResourceManager implements Serializable{
     protected Resource mLatestResource = null;
     protected ArrayList<Resource> mResourcesPickedUp = new ArrayList<Resource>();
     protected int mNStages;
+
+
     public ResourceManager(ArrayList<Resource> x, int n)
     {
         mAllResources =x;
         mNStages = n;
     }
 
+    /**
+     * Constructeur par defaut.
+     * ATTENTION: doit être initialise par la fonction set(ArrayList<Resource> x, int n)
+     */
     public ResourceManager()
     {
     }
 
+    /**
+     * Initialise les ressources
+     * @param x La liste des ressources
+     * @param n Le nombre d'étapes dans le jeu
+     */
     public void set(ArrayList<Resource> x, int n)
     {
         mAllResources =x;
         mNStages = n;
     }
 
-
+    /**
+     * Ajout d'une ressource hors zone
+     * @param r ressource hors zone
+     */
     public void addOtherResource(Resource r)
     {
         m_otherResources.add(r);
     }
 
+    /**
+     * Récupere une ressource hors zone
+     * @return
+     */
     public ArrayList<Resource> getOtherResource()
     {
         return m_otherResources;
     }
 
+
+    /**
+     * Recupere une ressource de l'étape  courante qui nest pas encore trouvée
+     * par son nom
+     * @param name Le nom de la ressource
+     * @return Null si inexistante sinon la ressource
+     */
     public Resource getResourceLeftByName(String name)
     {
         for(int i=0; i<mResourcesLeft.size(); i++)
@@ -76,6 +93,10 @@ public class ResourceManager implements Serializable{
         return res;
     }
 
+    /**
+     * Passe à l'étape N
+     * @param stage Le numero de la prochaine etape
+     */
     public void nextStage(int stage)
     {
         mResourcesAquiered.add(new ArrayList<Resource>());
@@ -85,6 +106,15 @@ public class ResourceManager implements Serializable{
                 mResourcesLeft.add(mAllResources.get(i));
     }
 
+    /**
+     * Recupere une ressource:
+     *  -Ajout dans la liste des ressources (indifferent des etapes)
+     *  -Ajout dans la liste d'inventaire (liste de liste par etape): mResourcesAquiered
+     *  -Suppression de la liste des ressource à trouver (sauf si c'est une ressource hors zone)
+     *
+     * @param name
+     * @return
+     */
     public boolean pickUpResource(String name)
     {
         for(int i=0; i<mResourcesLeft.size(); i++)
@@ -129,6 +159,10 @@ public class ResourceManager implements Serializable{
         return mResourcesAquiered;
     }
 
+    /**
+     * Renvoie le nombre de ressource acquise par le joueur depuis le debut de la partie
+     * @return
+     */
     public int getNResourceAquired()
     {
         int n=0;
@@ -137,10 +171,19 @@ public class ResourceManager implements Serializable{
         return n;
     }
 
+    /**
+     * Récupre toutes les ressources en un coups
+     */
     public void pickAllResoucres()
     {
         mResourcesLeft.clear();
         mResourcesAquiered.clear();
+
+        mResourcesAquiered.add(new ArrayList<Resource>());
+
+        for(int i=0; i<m_otherResources.size(); i++)
+            mResourcesAquiered.get(0).add(m_otherResources.get(i));
+
         for(int i=0; i<mNStages; i++)
         {
             ArrayList<Resource> ar = new ArrayList<Resource>();
@@ -150,15 +193,24 @@ public class ResourceManager implements Serializable{
             }
             mResourcesAquiered.add(ar);
         }
+
+
     }
 
+    /**
+     * Enleve le Modele 3D de la cache
+     */
     public void deleteAll3DModel()
     {
         for(int i=0; i<mAllResources.size(); i++)
             mAllResources.get(i).delete3DModel();
     }
 
-    public int getNResourceAcquired()
+    /**
+     * Le nombre de ressources acquise dans l'étape courante
+     * @return
+     */
+    public int getNResourceAquiredByStage()
     {
         if(mResourcesAquiered.size()>0)
             return mResourcesAquiered.get(mResourcesAquiered.size()-1).size();

+ 10 - 74
app/src/main/java/app/brest/utils/SensorsManager.java → app/src/main/java/app/ara/utils/SensorsManager.java

@@ -1,4 +1,4 @@
-package app.brest.utils;
+package app.ara.utils;
 
 import android.Manifest;
 import android.app.Activity;
@@ -18,9 +18,9 @@ import android.support.v4.content.ContextCompat;
 import android.util.Log;
 import android.widget.Toast;
 
-import app.brest.testmin3d.ARActivity;
-import app.brest.testmin3d.R;
-import app.brest.utils.geometry.GPSPoint;
+import app.ara.activities.ARActivity;
+import app.ara.activities.R;
+import app.ara.utils.geometry.GPSPoint;
 
 /**
  * Created by ptitcois on 18/08/16.
@@ -74,7 +74,7 @@ public class SensorsManager implements SensorEventListener, LocationListener {
 
     public boolean useGpsStub()
     {
-        return app.brest.utils.Settings.getSettings().isGPSDebug();
+        return app.ara.utils.Settings.getSettings().isGPSDebug();
     }
 
     public GPSPoint getPosition()
@@ -90,76 +90,11 @@ public class SensorsManager implements SensorEventListener, LocationListener {
         mSensorManager = (SensorManager) parent.getSystemService(parent.SENSOR_SERVICE);
         mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
         mMagnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
-        mBufferX = new SlideBuffer(app.brest.utils.Settings.getSettings().getSensorLatency());
-        mBufferY = new SlideBuffer(app.brest.utils.Settings.getSettings().getSensorLatency());
-        mBufferZ = new SlideBuffer(app.brest.utils.Settings.getSettings().getSensorLatency());
+        mBufferX = new SlideBuffer(app.ara.utils.Settings.getSettings().getSensorLatency());
+        mBufferY = new SlideBuffer(app.ara.utils.Settings.getSettings().getSensorLatency());
+        mBufferZ = new SlideBuffer(app.ara.utils.Settings.getSettings().getSensorLatency());
 
-        if (ActivityCompat.checkSelfPermission(mParent, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
-                ActivityCompat.checkSelfPermission(mParent, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
-
-        }
-        if(!useGpsStub()) {
-            if (ContextCompat.checkSelfPermission(parent,
-                    Manifest.permission.CAMERA)
-                    != PackageManager.PERMISSION_GRANTED) {
-
-                // Should we show an explanation?
-                if (ActivityCompat.shouldShowRequestPermissionRationale(parent,
-                        Manifest.permission.CAMERA)) {
-                    Log.e("____", "OK");
-
-                    // Show an explanation to the user *asynchronously* -- don't block
-                    // this thread waiting for the user's response! After the user
-                    // sees the explanation, try again to request the permission.
-
-                } else {
-
-                    // No explanation needed, we can request the permission.
-                    Log.e("____", "Ask camera");
-                    ActivityCompat.requestPermissions(parent,
-                            new String[]{Manifest.permission.CAMERA},
-                            1338);
-
-                    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
-                    // app-defined int constant. The callback method gets the
-                    // result of the request.
-                }
-            }
-            if (ContextCompat.checkSelfPermission(parent,
-                    Manifest.permission.ACCESS_FINE_LOCATION)
-                    != PackageManager.PERMISSION_GRANTED) {
-
-                // Should we show an explanation?
-                if (ActivityCompat.shouldShowRequestPermissionRationale(parent,
-                        Manifest.permission.ACCESS_FINE_LOCATION)) {
-
-                    // Show an explanation to the user *asynchronously* -- don't block
-                    // this thread waiting for the user's response! After the user
-                    // sees the explanation, try again to request the permission.
-
-                } else {
-
-                    // No explanation needed, we can request the permission.
-
-                    ActivityCompat.requestPermissions(parent,
-                            new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
-                            1337);
-
-                    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
-                    // app-defined int constant. The callback method gets the
-                    // result of the request.
-                }
-            }
-            if (ContextCompat.checkSelfPermission(parent, android.Manifest.permission.ACCESS_FINE_LOCATION) ==
-                    PackageManager.PERMISSION_GRANTED &&
-                    ContextCompat.checkSelfPermission(parent, android.Manifest.permission.ACCESS_COARSE_LOCATION) ==
-                            PackageManager.PERMISSION_GRANTED) {
-                mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
-            } else {
-                Toast.makeText(parent, "Error", Toast.LENGTH_LONG).show();
-                mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
-            }
-        }
+        //debug du GPS "GPS Préprogrammé"
         if(useGpsStub()) {
             mIsLocalised=true;
             mStub=new GpsStub(parent.getResources().getString(R.string.gps_stub));
@@ -171,6 +106,7 @@ public class SensorsManager implements SensorEventListener, LocationListener {
         restartSensors();
     }
 
+
     public void restartSensors()
     {
         boolean a = mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_GAME);

+ 1 - 3
app/src/main/java/app/brest/utils/Settings.java → app/src/main/java/app/ara/utils/Settings.java

@@ -1,6 +1,4 @@
-package app.brest.utils;
-
-import android.widget.LinearLayout;
+package app.ara.utils;
 
 import java.io.Serializable;
 

+ 1 - 5
app/src/main/java/app/brest/utils/SlideBuffer.java → app/src/main/java/app/ara/utils/SlideBuffer.java

@@ -1,8 +1,4 @@
-package app.brest.utils;
-
-import java.util.ArrayList;
-
-import app.brest.utils.geometry.Point;
+package app.ara.utils;
 
 /*
 public class SlideBuffer {

+ 3 - 5
app/src/main/java/app/brest/utils/app/brest/game/Area.java → app/src/main/java/app/ara/utils/app/brest/game/Area.java

@@ -1,7 +1,6 @@
-package app.brest.utils.app.brest.game;
+package app.ara.utils.app.brest.game;
 
 import android.app.Activity;
-import android.util.Log;
 
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -10,9 +9,8 @@ import org.json.JSONObject;
 import java.io.Serializable;
 import java.util.ArrayList;
 
-import app.brest.utils.SensorsManager;
-import app.brest.utils.geometry.GPSPoint;
-import app.brest.utils.geometry.Shape;
+import app.ara.utils.geometry.GPSPoint;
+import app.ara.utils.geometry.Shape;
 
 /**
  * Created by ptitcois on 19/08/16.

+ 84 - 18
app/src/main/java/app/brest/utils/app/brest/game/Game.java → app/src/main/java/app/ara/utils/app/brest/game/Game.java

@@ -1,4 +1,4 @@
-package app.brest.utils.app.brest.game;
+package app.ara.utils.app.brest.game;
 
 import android.app.Activity;
 import android.content.Context;
@@ -18,12 +18,11 @@ import java.text.DecimalFormat;
 import java.text.NumberFormat;
 import java.util.ArrayList;
 
-import app.brest.testmin3d.ARActivity;
-import app.brest.utils.JSONLoader;
-import app.brest.utils.ResourceManager;
-import app.brest.utils.SensorsManager;
-import app.brest.utils.Settings;
-import app.brest.utils.files.JSONAssetsManager;
+import app.ara.activities.ARActivity;
+import app.ara.utils.ResourceManager;
+import app.ara.utils.SensorsManager;
+import app.ara.utils.Settings;
+import app.ara.utils.files.JSONAssetsManager;
 
 /**
  * Created by ptitcois on 19/08/16.
@@ -51,8 +50,13 @@ public class Game  implements Serializable {
         mResources = new ResourceManager();
         mPlayer = new Player(act);
         try {
+            /* Listes des zones */
             JSONArray areas = root.getJSONArray("areas");
+
+            /* Listes des étapes */
             JSONArray stages = root.getJSONArray("stages_list");
+
+            /* Nom (uniquement) d'autres ressources utilisés (hors zones) */
             JSONArray others = root.getJSONArray("others");
 
 
@@ -70,7 +74,7 @@ public class Game  implements Serializable {
                 mStages.add(s);
             }
             findMaxStage();
-            mResources.set( getAllResources(act), mNStages);
+            mResources.set( getAllResources(), mNStages);
 
 
             nextStage();
@@ -168,13 +172,20 @@ public class Game  implements Serializable {
         mCurrentStageAreas.remove(index);
     }
 
+    /**
+     * Récupere les ressources pouvant être "physiquement" (positionnement et
+     * orientation) prise par le joueur.
+     * @return true si l'étape est finie, sinon false
+     */
     public boolean pickResource()
     {
         mResources.clearPickedUpResources();
         ArrayList<LocatedResources> r = getResourcesNextToPlayer();
+
+        // recupere toutes les ressource "proche" (prenables)
+        // du joueur
         for(int i=0; i<r.size(); i++) {
             for (int j = 0; j < mCurrentStageAreas.size(); j++) {
-
                 if (r.get(i).getResource(0).getName().compareTo(mCurrentStageAreas.get(j).getResourceNames().get(0)) == 0 &&
                         r.get(i).getResource(0).getStage() == mCurrentStage) {
                     removeArea(j);
@@ -182,14 +193,26 @@ public class Game  implements Serializable {
             }
             pickResource(r.get(i).getResource(0).getName());
         }
+
+        //retourne vrai si l'etape est finie
         return mCurrentStageAreas.size()==0;
     }
 
+    /**
+     * Retourne la liste de toutes les ressources acquises par le joueur
+     * @return la liste de toutes les ressources acquises par le joueur
+     */
     public ArrayList<Resource> getPickedUpResources()
     {
         return mResources.getPickedUpResources();
     }
 
+
+    /**
+     * Récupere une ressource par son nom, sans besoin de localisation ou d'orientation
+     * @param name Le nom de la ressource
+     * @return  true si l'étape est finie, sinon false
+     */
     public boolean pickResource(String name)
     {
 
@@ -202,12 +225,19 @@ public class Game  implements Serializable {
         return mCurrentStageAreas.size()==0;
     }
 
+    /**
+     * Récupere toutes les ressources du jeu
+     */
     public void pickAllResoucres()
     {
         mResources.pickAllResoucres();
         mCurrentStage=mNStages;
     }
 
+    /**
+     * La derniere ressource acquise
+     * @return La derniere ressource acquise
+     */
     public Resource getLatestResource()
     {
         return mResources.getLatestResource();
@@ -233,6 +263,12 @@ public class Game  implements Serializable {
         return out;
     }
 
+
+    /**
+     * Sauvegarde la partie (l'objet game)
+     * @param context Le contexte
+     * @return Vrai en cas de succes, faux en cas d'erreur
+     */
     public boolean save(Activity context)
     {
         try {
@@ -250,6 +286,11 @@ public class Game  implements Serializable {
         return true;
     }
 
+    /**
+     * Charge une partie
+     * @param context Le contexte
+     * @return L'objet Game en cas de succes, null en cas d'erreur
+     */
     public static Game load(Activity context)
     {
         try {
@@ -265,8 +306,11 @@ public class Game  implements Serializable {
         }
     }
 
-
-    public ArrayList<Resource> getAllResources(Activity act)
+    /**
+     *
+     * @return Retourne toutes les ressources
+     */
+    public ArrayList<Resource> getAllResources()
     {
         ArrayList<Resource> tmp = new ArrayList<Resource>();
         for(int i=0; i<mAreas.size(); i++)
@@ -280,6 +324,11 @@ public class Game  implements Serializable {
         return tmp;
     }
 
+    /**
+     * Teste si le jeu est déja sauvé
+     * @param context Le contexte
+     * @return Vrai ou faux
+     */
     public static boolean isSaved(Activity context)
     {
         boolean b = false;
@@ -312,6 +361,11 @@ public class Game  implements Serializable {
         mPlayer.setSensorsManager(sm);
     }
 
+    /**
+     * Permet de recuperer une ressource par son nom
+     * @param name Le nom de la ressource
+     * @return La ressource ou null (en cas d'erre)
+     */
     public Resource findResource(String name)
     {
         for(int i=0; i<mAreas.size(); i++)
@@ -327,6 +381,8 @@ public class Game  implements Serializable {
 
     /**
      * Charge la ressource 3d quand on entre dans une zone
+     * @param contecxt Contexte
+     * @return Vrai en cas de succes, faux pour une erreur
      */
     synchronized public boolean precache3DResource(Activity contecxt)
     {
@@ -351,10 +407,11 @@ public class Game  implements Serializable {
     }
 
 
-    /*
-     *
-     * Fonction principale de positionnnemnt et orientation
+    /**
      *
+     * Fonction principale de positionnnemnt et orientation:
+     * renvoie la liste des zones sur lesquelles le joueur est présent
+     * @return la liste des zones sur lesquelles le joueur est présent
      */
     public ArrayList<Area> getAreaNextToPlayer()
     {
@@ -370,10 +427,10 @@ public class Game  implements Serializable {
     }
 
 
-    /*
-     *
-     * Fonction principale de positionnnemnt et orientation
+    /**
      *
+     * renvoie la liste des ressources sur lesquelles le joueur est présent
+     * @return la liste des ressources sur lesquelles le joueur est présent
      */
     public ArrayList<LocatedResources> getResourcesNextToPlayer()
     {
@@ -401,6 +458,10 @@ public class Game  implements Serializable {
     }
 
 
+    /**
+     * Renvoie dans une chaine la distance entre le joueur et la ressource la plus proche
+     * @return La distance en metres
+     */
     public String getResourcesNextToPlayerDist()
     {
         double min=1000000000;
@@ -420,6 +481,10 @@ public class Game  implements Serializable {
         return formatter.format(min)+" m";
     }
 
+    /**
+     * Renvoie la distance entre le joueur et la ressource la plus proche
+     * @return La distance en metres
+     */
     public double getResourcesNextToPlayerDistDouble()
     {
         double min=1000000000;
@@ -446,6 +511,7 @@ public class Game  implements Serializable {
         return mPlayer;
     }
 
+
     public void removeCached3DModels()
     {
         mResources.deleteAll3DModel();
@@ -489,7 +555,7 @@ public class Game  implements Serializable {
     public boolean canSendData() {
         Stage s =getCurrentStageObj();
         if(s==null) return false;
-        return mResources.getNResourceAcquired()>=s.getNResourceStep() && !isFinished();
+        return mResources.getNResourceAquiredByStage()>=s.getNResourceStep() && !isFinished();
         //return mResources.getNResourceLeft()<s.getNResourceStep() && !isFinished();
     }
 

+ 1 - 1
app/src/main/java/app/brest/utils/app/brest/game/LocatedResources.java → app/src/main/java/app/ara/utils/app/brest/game/LocatedResources.java

@@ -1,4 +1,4 @@
-package app.brest.utils.app.brest.game;
+package app.ara.utils.app.brest.game;
 
 import java.util.ArrayList;
 

+ 3 - 5
app/src/main/java/app/brest/utils/app/brest/game/Place.java → app/src/main/java/app/ara/utils/app/brest/game/Place.java

@@ -1,6 +1,4 @@
-package app.brest.utils.app.brest.game;
-
-import android.util.Log;
+package app.ara.utils.app.brest.game;
 
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -8,7 +6,7 @@ import org.json.JSONObject;
 
 import java.io.Serializable;
 
-import app.brest.utils.geometry.GPSPoint;
+import app.ara.utils.geometry.GPSPoint;
 
 /**
  * Created by ptitcois on 19/08/16.
@@ -74,7 +72,7 @@ public class Place  implements Serializable {
         GPSPoint pp = p.getPosition();
         if(pp==null) return false;
 
-        return mLocation.getDistanceWith(pp)<=mRadius;
+        return mLocation.getDistanceWith(pp)<=mRadius+p.getSensorsManager().getPosition().getAccuracy();
     }
 
     public boolean isOnDirection(Player p)

+ 4 - 5
app/src/main/java/app/brest/utils/app/brest/game/Player.java → app/src/main/java/app/ara/utils/app/brest/game/Player.java

@@ -1,13 +1,12 @@
-package app.brest.utils.app.brest.game;
+package app.ara.utils.app.brest.game;
 
 import android.app.Activity;
 
 import java.io.Serializable;
 
-import app.brest.testmin3d.ARActivity;
-import app.brest.utils.SensorsManager;
-import app.brest.utils.geometry.GPSPoint;
-import min3d.vos.Number3d;
+import app.ara.activities.ARActivity;
+import app.ara.utils.SensorsManager;
+import app.ara.utils.geometry.GPSPoint;
 
 /**
  * Created by ptitcois on 20/08/16.

+ 22 - 5
app/src/main/java/app/brest/utils/app/brest/game/Resource.java → app/src/main/java/app/ara/utils/app/brest/game/Resource.java

@@ -1,4 +1,4 @@
-package app.brest.utils.app.brest.game;
+package app.ara.utils.app.brest.game;
 
 import android.app.Activity;
 import android.util.Log;
@@ -6,11 +6,9 @@ import android.util.Log;
 import org.json.JSONException;
 import org.json.JSONObject;
 
-import java.io.InputStream;
 import java.io.Serializable;
 
-import app.brest.utils.JSONLoader;
-import app.brest.utils.files.JSONAssetsManager;
+import app.ara.utils.files.JSONAssetsManager;
 import min3d.core.Object3d;
 import min3d.parser.IParser;
 import min3d.parser.Parser;
@@ -135,7 +133,7 @@ public class Resource implements Serializable {
             m3DModel.position().x = mPosition.x; m3DModel.position().y = mPosition.y; m3DModel.position().z = mPosition.z;
             m3DModel.rotation().x = mRotation.x; m3DModel.rotation().y = mRotation.y; m3DModel.rotation().z = mRotation.z;
             Log.e("____","Rotation ("+m3DModel.rotation().x+","+m3DModel.rotation().y+","+m3DModel.rotation().z+")");
-            //m3DModel.rotation().x+=90;
+            m3DModel.rotation().x+=45;
             //m3DModel.rotation().y+=-180;
 
             //m3DModel.rotation().y=90;
@@ -168,4 +166,23 @@ public class Resource implements Serializable {
         return mTitle;
     }
 
+    public boolean isAudio()
+    {
+        return mType.toLowerCase().compareTo("audio")==0;
+    }
+
+    public boolean isVideo()
+    {
+        return mType.toLowerCase().compareTo("video")==0;
+    }
+    public boolean is3D()
+    {
+        return mType.toLowerCase().compareTo("3d")==0;
+    }
+
+    public boolean isImage()
+    {
+        return mType.toLowerCase().compareTo("image")==0;
+    }
+
 }

+ 1 - 1
app/src/main/java/app/brest/utils/app/brest/game/Stage.java → app/src/main/java/app/ara/utils/app/brest/game/Stage.java

@@ -1,4 +1,4 @@
-package app.brest.utils.app.brest.game;
+package app.ara.utils.app.brest.game;
 
 import org.json.JSONException;
 import org.json.JSONObject;

+ 2 - 2
app/src/main/java/app/brest/utils/files/FileManager.java → app/src/main/java/app/ara/utils/files/FileManager.java

@@ -1,4 +1,4 @@
-package app.brest.utils.files;
+package app.ara.utils.files;
 
 import android.app.Activity;
 import android.content.res.AssetFileDescriptor;
@@ -10,7 +10,6 @@ import android.util.Log;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.concurrent.ExecutionException;
 
 /**
  * Created by ptitcois on 27/03/17.
@@ -23,6 +22,7 @@ public class FileManager {
     {
         m_act=a;
         m_asset=a.getAssets();
+
     }
 
     private static boolean isInit() throws Exception {

+ 1 - 2
app/src/main/java/app/brest/utils/files/JSONAssetsManager.java → app/src/main/java/app/ara/utils/files/JSONAssetsManager.java

@@ -1,7 +1,6 @@
-package app.brest.utils.files;
+package app.ara.utils.files;
 
 import android.app.Activity;
-import android.content.res.AssetManager;
 import android.util.Log;
 
 import org.json.JSONObject;

+ 2 - 4
app/src/main/java/app/brest/utils/geometry/GPSPoint.java → app/src/main/java/app/ara/utils/geometry/GPSPoint.java

@@ -1,13 +1,11 @@
-package app.brest.utils.geometry;
-
-import android.util.Log;
+package app.ara.utils.geometry;
 
 import java.io.Serializable;
 
 /**
  * Created by ptitcois on 16/08/16.
  */
-public class GPSPoint extends app.brest.utils.geometry.Point  implements Serializable {
+public class GPSPoint extends app.ara.utils.geometry.Point  implements Serializable {
     protected float mAccuracy;
 
 

+ 1 - 1
app/src/main/java/app/brest/utils/geometry/Point.java → app/src/main/java/app/ara/utils/geometry/Point.java

@@ -1,4 +1,4 @@
-package app.brest.utils.geometry;
+package app.ara.utils.geometry;
 
 import java.io.Serializable;
 

+ 1 - 3
app/src/main/java/app/brest/utils/geometry/Shape.java → app/src/main/java/app/ara/utils/geometry/Shape.java

@@ -1,13 +1,11 @@
-package app.brest.utils.geometry;
+package app.ara.utils.geometry;
 /**
  * Created by François Gautrais on 16/08/16.
  * Support also GPS Shape (By using GPSPoint)
  */
-import android.util.Log;
 
 import org.json.JSONArray;
 import org.json.JSONException;
-import org.json.JSONObject;
 
 import java.io.Serializable;
 import java.util.ArrayList;

+ 0 - 87
app/src/main/java/app/brest/app/brest/ui/MediaView.java

@@ -1,87 +0,0 @@
-package app.brest.app.brest.ui;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.res.AssetFileDescriptor;
-import android.media.MediaPlayer;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.View;
-import android.widget.MediaController;
-import android.widget.VideoView;
-
-import java.io.IOException;
-
-import app.brest.utils.files.FileManager;
-
-/**
- * Created by ptitcois on 27/03/17.
- */
-public class MediaView extends SurfaceView implements View.OnClickListener,SurfaceHolder.Callback {
-    private MediaPlayer mPlayer;
-    private MediaView mThis;
-    public MediaView(Activity cont) {
-        super(cont);
-        setOnClickListener(this);
-        mThis=this;
-    }
-
-    public void surfaceCreated(SurfaceHolder holder)
-    {
-        if(mPlayer!=null)mPlayer.setDisplay(getHolder());
-    }
-
-    @Override
-    public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
-        if(mPlayer!=null)mPlayer.setDisplay(getHolder());
-
-    }
-
-    @Override
-    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
-
-    }
-
-    public void stop() {
-        if(mPlayer!=null && mPlayer.isPlaying())
-            mPlayer.stop();
-    }
-
-    public void play(String path)
-    {
-        AssetFileDescriptor afd;
-        mPlayer = new MediaPlayer();
-        afd = FileManager.getAfdMedia(path);
-        try {
-            mPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        mPlayer.prepareAsync();
-        mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
-
-            @Override
-            public void onPrepared(MediaPlayer mp) {
-                mp.setDisplay(mThis.getHolder());
-                mp.start();
-            }
-        });
-
-    }
-    @Override
-    public void onClick(View view) {
-        if(mPlayer!=null)
-        {
-            if(mPlayer.isPlaying())
-            {
-                mPlayer.pause();
-            }else{
-                mPlayer.start();
-            }
-
-        }
-
-    }
-
-
-}

+ 1 - 3
app/src/main/java/min3d/parser/AParser.java

@@ -1,7 +1,5 @@
 package min3d.parser;
 
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -9,7 +7,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 
-import app.brest.utils.files.FileManager;
+import app.ara.utils.files.FileManager;
 import min3d.Min3d;
 import min3d.Shared;
 import min3d.Utils;

+ 1 - 4
app/src/main/java/min3d/parser/ObjParser.java

@@ -5,14 +5,11 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.Calendar;
-import java.util.HashMap;
 import java.util.StringTokenizer;
 
-import app.brest.testmin3d.R;
-import app.brest.utils.files.FileManager;
+import app.ara.utils.files.FileManager;
 import min3d.Min3d;
 import min3d.Shared;
-import min3d.Utils;
 import min3d.core.Object3dContainer;
 import min3d.vos.Color4;
 import min3d.vos.Number3d;