diff options
| author | Nikolaus Gotsche <n@softwarefools.com> | 2015-12-05 02:32:33 +0100 |
|---|---|---|
| committer | Nikolaus Gotsche <n@softwarefools.com> | 2015-12-05 02:32:33 +0100 |
| commit | 24336d51eb3b8692236225901422d362ff856b25 (patch) | |
| tree | 73ee480e753161e68fbee88e79a2b7681d3840b2 /app/src/main/java/com/softwarefools/nik | |
| parent | 4cff31bfd20d305a7858c28ac2eee5d8d5839b74 (diff) | |
Relevant Angles
Bugfixes TTS
Diffstat (limited to 'app/src/main/java/com/softwarefools/nik')
| -rw-r--r-- | app/src/main/java/com/softwarefools/nik/spiritlevel/LevelActivity.java | 65 | ||||
| -rw-r--r-- | app/src/main/java/com/softwarefools/nik/spiritlevel/LevelView.java | 93 |
2 files changed, 112 insertions, 46 deletions
diff --git a/app/src/main/java/com/softwarefools/nik/spiritlevel/LevelActivity.java b/app/src/main/java/com/softwarefools/nik/spiritlevel/LevelActivity.java index 36afe67..3f3c890 100644 --- a/app/src/main/java/com/softwarefools/nik/spiritlevel/LevelActivity.java +++ b/app/src/main/java/com/softwarefools/nik/spiritlevel/LevelActivity.java @@ -24,6 +24,7 @@ import android.content.res.Resources; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.provider.Settings; +import android.speech.tts.Voice; import android.util.DisplayMetrics; // // @@ -71,8 +72,8 @@ public class LevelActivity extends Activity implements MySensorListener{ private Vector<nikVector> accelvector; private Vector<nikVector> gravvector; - private TextView accelField; - private TextView gravityField; + //private TextView accelField; + //private TextView gravityField; private Random r; @@ -104,8 +105,8 @@ public class LevelActivity extends Activity implements MySensorListener{ r = new Random(); - accelvector= new Vector<nikVector>(); - gravvector = new Vector<nikVector>(); + accelvector= new Vector<>(); + gravvector = new Vector<>(); //TTS Engine Intent checkTTSIntent = new Intent(); @@ -181,24 +182,42 @@ public class LevelActivity extends Activity implements MySensorListener{ @Override public void onResume() { super.onResume(); + + myTTS.shutdown(); + myTTS = new TextToSpeech(this, new TextToSpeech.OnInitListener() { + @Override + public void onInit(int status) { + if (status == TextToSpeech.SUCCESS){ + String setlang = mySettings.getString("applicationLanguage","none"); + String comp = getResources().getConfiguration().locale.getLanguage(); + if (setlang.contains(comp)){ + // Toast.makeText(getBaseContext(), "Language is local", Toast.LENGTH_SHORT).show(); // Toast Vorlage + } + else if (setlang=="none" ) { + + SharedPreferences.Editor editor = mySettings.edit(); + editor.putString("applicationLanguage", comp); + editor.commit(); + //myTTS.setLanguage(getResources().getConfiguration().locale); + //Toast.makeText(getBaseContext(), "Needet to Set Variable", Toast.LENGTH_SHORT).show(); // Toast Vorlage + }else { + //Toast.makeText(getBaseContext(), "Some Fuckup! Set:"+setlang+", current: "+comp, Toast.LENGTH_SHORT).show(); // Toast Vorlage + setLocale(setlang); + } + + + myTTS.setLanguage(getResources().getConfiguration().locale); + }else if (status == TextToSpeech.ERROR) { + SharedPreferences.Editor editor = mySettings.edit(); + editor.putBoolean("applicationTalking", false); + editor.commit(); + Toast.makeText(getBaseContext(), getApplicationContext().getString(R.string.action_lang_NA), Toast.LENGTH_LONG).show(); + } + } + }); //Toast.makeText(getBaseContext(), "On Resume", Toast.LENGTH_SHORT).show(); // Toast Vorlage // Toast.makeText(getBaseContext(), "onResume Sensors Started", Toast.LENGTH_SHORT).show(); - String setlang = mySettings.getString("applicationLanguage","none"); - String comp = getResources().getConfiguration().locale.getLanguage(); - if (setlang.contains(comp)){ - // Toast.makeText(getBaseContext(), "Language is local", Toast.LENGTH_SHORT).show(); // Toast Vorlage - } - else if (setlang=="none" ) { - - SharedPreferences.Editor editor = mySettings.edit(); - editor.putString("applicationLanguage", comp); - editor.commit(); - //myTTS.setLanguage(getResources().getConfiguration().locale); - //Toast.makeText(getBaseContext(), "Needet to Set Variable", Toast.LENGTH_SHORT).show(); // Toast Vorlage - }else { - //Toast.makeText(getBaseContext(), "Some Fuckup! Set:"+setlang+", current: "+comp, Toast.LENGTH_SHORT).show(); // Toast Vorlage - setLocale(setlang); - } + orientation=getScreenOrientation(); // orientation= getResources().getConfiguration().orientation; //Check device supported Accelerometer senssor or not @@ -328,6 +347,7 @@ public class LevelActivity extends Activity implements MySensorListener{ @Override public void onGravityChanged(float x, float y, float z) { // TODO Auto-generated method stub + System.out.println("Noticed Gravity Change"); float sq= (float)x*x+y*y+z*z; float sum=(float)Math.sqrt(sq); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); @@ -336,12 +356,14 @@ public class LevelActivity extends Activity implements MySensorListener{ temp.setVector(getTime(),x/sum,y/sum,z/sum); if(prefs.getBoolean("applicationRecording",true))gravvector.add(temp); - levelView.updateData(x/sum, y/sum, z/sum,orientation); + String debug="LevelActivityDebug"; + levelView.updateData(x/sum, y/sum, z/sum,orientation,debug); } @Override public void onAccelerationChanged(float x, float y, float z) { // TODO Auto-generated method stub + System.out.println("Noticed Acceleration Change"); float sq= (float)x*x+y*y+z*z; float sum=(float)Math.sqrt(sq); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); @@ -356,6 +378,7 @@ public class LevelActivity extends Activity implements MySensorListener{ @Override public void onShake(float force) { // TODO Auto-generated method stub + System.out.println("Force Detected: "+force); beLoud(this.getString(R.string.alert)+(int)force+this.getString(R.string.newton),this.getString(R.string.toast_force)+force+this.getString(R.string.newton_short)); /* String maketext= this.getString(R.string.alert)+(int)force+this.getString(R.string.newton); diff --git a/app/src/main/java/com/softwarefools/nik/spiritlevel/LevelView.java b/app/src/main/java/com/softwarefools/nik/spiritlevel/LevelView.java index bf0a1b4..b74d708 100644 --- a/app/src/main/java/com/softwarefools/nik/spiritlevel/LevelView.java +++ b/app/src/main/java/com/softwarefools/nik/spiritlevel/LevelView.java @@ -72,6 +72,8 @@ public class LevelView extends View{ private float x_gravEnd=0; private float y_gravEnd=0; + private float x_gravAngEnd=0; + private float y_gravAngEnd=0; private float x_accEnd=0; private float y_accEnd=0; @@ -99,7 +101,7 @@ public class LevelView extends View{ SharedPreferences mySettings; - private String langname=""; + private String levelActDebug=""; //private float ballX = ballRadius + 20; // Ball's center (x,y) //private float ballY = ballRadius + 40; @@ -266,6 +268,9 @@ public class LevelView extends View{ // Calculate Gravity Vector AxisTitles onlyforLandscape x_gravEnd=xCenter+y_gravSense*ballRadius; y_gravEnd=yCenter+x_gravSense*ballRadius; + x_gravAngEnd=xCenter+y_gravSense*ballRadius/2; + y_gravAngEnd=yCenter+x_gravSense*ballRadius/2; + x_accEnd=xCenter+(y_accSense-y_gravSense)*ballRadius; y_accEnd=yCenter+(x_accSense-x_gravSense)*ballRadius; x_horizon=xCenter-x_gravSense*maxdiameter; @@ -329,7 +334,12 @@ public class LevelView extends View{ canvas.drawText("Y",yAxisTag_x,yAxisTag_y,paintAxisLines); canvas.drawText("-X",xAxisTagNeg_x,xAxisTagNeg_y,paintAxisLines); canvas.drawText("-Y",yAxisTagNeg_x,yAxisTagNeg_y,paintAxisLines); - + + // Important Angles + + canvas.drawText(makeDegAngle(getAlpha(y_gravSense,z_gravSense)),xCenter-150, displayheight -mActionBarSize-statusbarSize- margin, paintTexts); + canvas.drawText(makeDegAngle(getAlpha(x_gravSense,z_gravSense)),displaywidth-150,yAxisTag_y,paintTexts); + //Draw Vector/Ball and Text setVectorColor(); @@ -360,9 +370,14 @@ public class LevelView extends View{ canvas.drawLine(xCenter, yCenter, x_gravEnd, y_gravEnd, paintVector); canvas.drawLine(xCenter, yCenter, x_horizon, y_horizon, paintVectorHelp); canvas.drawLine(xCenter, yCenter, x_horizon2, y_horizon2, paintVectorHelp); + + canvas.drawText(makeDegAngle(getAlpha(y_gravSense,x_gravSense)),x_gravAngEnd-150,y_gravAngEnd,paintTexts); } } canvas.save(); + + + //Texts //canvas.rotate((float) (180*getAngle(y_gravSense, x_gravSense)/Math.PI)); float sum_g=(float)Math.sqrt(x_gravSense*x_gravSense+y_gravSense*y_gravSense+z_gravSense*z_gravSense); float sum_gmin=(float)getLength(x_gravSense_min,y_gravSense_min,z_gravSense_min); @@ -370,12 +385,22 @@ public class LevelView extends View{ float sum_na =(float) getLength(x_accSense-x_gravSense,y_accSense-y_gravSense,z_accSense-z_gravSense); if(mySettings.getBoolean("applicationShowGrav",true)) { - canvas.drawText("G [m\u00B2/s]", x_gravEnd + levelballRadius + margin, y_gravEnd + margin, paintVector); - canvas.drawText("\u01A9 " + niceValue(sum_g), x_gravEnd + levelballRadius + margin, y_gravEnd + margin + vectTextSize + vectTextDist, paintVector); - canvas.drawText("x " + niceValue(x_gravSense), x_gravEnd + levelballRadius + margin, y_gravEnd + margin + 2 * vectTextSize + vectTextDist, paintVector); - canvas.drawText("y " + niceValue(y_gravSense), x_gravEnd + levelballRadius + margin, y_gravEnd + margin + 3 * vectTextSize + vectTextDist, paintVector); - canvas.drawText("z " + niceValue(z_gravSense), x_gravEnd + levelballRadius + margin, y_gravEnd + margin + 4 * vectTextSize + vectTextDist, paintVector); - canvas.restore(); + if((y_gravEnd + margin + 4 * vectTextSize + vectTextDist)<(displayheight -mActionBarSize-statusbarSize-margin)) { + canvas.drawText("G [m\u00B2/s]", x_gravEnd + levelballRadius + margin, y_gravEnd + margin, paintVector); + canvas.drawText("\u01A9 " + niceValue(sum_g), x_gravEnd + levelballRadius + margin, y_gravEnd + margin + vectTextSize + vectTextDist, paintVector); + canvas.drawText("x " + niceValue(x_gravSense), x_gravEnd + levelballRadius + margin, y_gravEnd + margin + 2 * vectTextSize + vectTextDist, paintVector); + canvas.drawText("y " + niceValue(y_gravSense), x_gravEnd + levelballRadius + margin, y_gravEnd + margin + 3 * vectTextSize + vectTextDist, paintVector); + canvas.drawText("z " + niceValue(z_gravSense), x_gravEnd + levelballRadius + margin, y_gravEnd + margin + 4 * vectTextSize + vectTextDist, paintVector); + canvas.restore(); + }else{ + canvas.drawText("G [m\u00B2/s]", x_gravEnd + levelballRadius + margin, displayheight-mActionBarSize-statusbarSize - margin - 4*vectTextSize - vectTextDist, paintVector); + canvas.drawText("\u01A9 " + niceValue(sum_g), x_gravEnd + levelballRadius + margin, displayheight -mActionBarSize-statusbarSize- margin - 3*vectTextSize , paintVector); + canvas.drawText("x " + niceValue(x_gravSense), x_gravEnd + levelballRadius + margin, displayheight -mActionBarSize-statusbarSize- margin - 2 * vectTextSize , paintVector); + canvas.drawText("y " + niceValue(y_gravSense), x_gravEnd + levelballRadius + margin, displayheight-mActionBarSize-statusbarSize -margin - 1 * vectTextSize , paintVector); + canvas.drawText("z " + niceValue(z_gravSense), x_gravEnd + levelballRadius + margin, displayheight -mActionBarSize-statusbarSize- margin , paintVector); + + canvas.restore(); + } } // Acceleration Sumup @@ -395,29 +420,43 @@ public class LevelView extends View{ //Draw Debug + + String current = getResources().getConfiguration().locale.getLanguage(); String screeninfo = "Width: "+ displaywidth+ "Height: "+ displayheight + " Orientation :" + String.valueOf(orientation); canvas.drawText(screeninfo, margin, margin+vectTextSize, paintTexts); canvas.drawText(String.valueOf(inHorizontalMode()), margin, margin+2*vectTextSize+vectTextDist, paintTexts); - canvas.drawText(String.valueOf(alpha), margin, margin+3*vectTextSize+vectTextDist, paintTexts); - canvas.drawText(makeDegAngle(alpha), margin, margin+4*vectTextSize+vectTextDist, paintTexts); - canvas.drawText(niceValue(sum_na), margin, margin+5*vectTextSize+vectTextDist, paintTexts); - canvas.drawText(current, margin, margin+6*vectTextSize+vectTextDist, paintTexts); + canvas.drawText(makeDegAngle(getAlpha(y_gravSense,z_gravSense)), margin, margin+3*vectTextSize+vectTextDist, paintTexts); + canvas.drawText(makeDegAngle(getAlpha(x_gravSense,z_gravSense)), margin, margin+4*vectTextSize+vectTextDist, paintTexts); + canvas.drawText(makeDegAngle(getAlpha(z_gravSense,y_gravSense)), margin, margin+5*vectTextSize+vectTextDist, paintTexts); + canvas.drawText(current+"; "+(y_gravEnd + margin + 4 * vectTextSize + vectTextDist)+"<"+(displayheight -mActionBarSize-statusbarSize), margin, margin+6*vectTextSize+vectTextDist, paintTexts); + canvas.drawText(levelActDebug, margin, margin+7*vectTextSize+vectTextDist, paintTexts); } public String niceValue(float x){ double g= 9.80665; return f.format(x*g); } public String makeDegAngle(double grad){ - double alphadeg = 180*grad/Math.PI; - return f.format(alphadeg)+"\u00B0"; + //double alphadeg = 180*grad/Math.PI; + double d=0; + if(grad>89.99)d=90; + else if(grad<0.001 && grad>-0.001)d=0.0; + else if(grad<-89.99 + )d=-90; + else d=grad; + return f.format(d)+"\u00B0"; } public double getAngle(float x, float y){ - double res = Math.atan((x/y)); - if(y<0 && x>0)res=Math.PI+res; - else if(y<0 && x<0)res=res-Math.PI; - - return res; + double div = (double)x/y; + float theta = (float) Math.toDegrees(Math.atan(div)); + System.out.println(theta); // 53.130104 + return theta; + } + public double getAlpha(float x,float y){ + double div = (double)x/y; + float theta = (float) Math.toDegrees(Math.atan(div)); + + return theta; } public double getLength(float x, float y, float z){ double res = Math.sqrt(x*x+y*y+z*z); @@ -432,16 +471,15 @@ public class LevelView extends View{ return result; } - public void updateData(float x,float y,float z,int orientation) { - if (getLength(x_gravSense_min,y_gravSense_min,z_gravSense_min)>getLength(x,y,z)){ - this.x_gravSense_min=x; - this.y_gravSense_min=y; - this.z_gravSense_min=z; - } + public void updateData(float x,float y,float z,int orientation,String debug) { + //float x_resultForce=x+x_accSense + this.x_gravSense = x; this.y_gravSense = y; this.z_gravSense = z; this.orientation = orientation; + this.levelActDebug=debug; + invalidate(); } public void updateAccelData(float x,float y,float z,int orientation) { @@ -450,6 +488,11 @@ public class LevelView extends View{ this.y_accSense_max=y-y_gravSense; this.z_accSense_max=z-z_gravSense; } + if (getLength(x_gravSense_min,y_gravSense_min,z_gravSense_min)>getLength(x,y,z)){ + this.x_gravSense_min=x; + this.y_gravSense_min=y; + this.z_gravSense_min=z; + } this.x_accSense = x; this.y_accSense = y; this.z_accSense = z; |
