From fd7210e1bbd83161c0df9f5eb8327ecd2a83b372 Mon Sep 17 00:00:00 2001 From: Nikolaus Gotsche Date: Fri, 11 Dec 2015 05:02:18 +0100 Subject: Code2: V1.0.1 Magnetic Sensors No Activity Restart (Menu Still on first Create in Systemlanguage) --- app/src/main/AndroidManifest.xml | 9 +- .../nik/spiritlevel/AppPreferences.java | 2 +- .../nik/spiritlevel/AppPreferencesClassic.java | 2 +- .../nik/spiritlevel/LevelActivity.java | 229 ++++++++++++--------- .../softwarefools/nik/spiritlevel/LevelView.java | 140 ++++++++++--- .../nik/spiritlevel/MySensorListener.java | 2 +- .../nik/spiritlevel/MySensorManager.java | 95 +++++---- app/src/main/res/menu/level.xml | 6 +- app/src/main/res/values-de/strings.xml | 9 + app/src/main/res/values-en/strings.xml | 3 +- app/src/main/res/values-es/strings.xml | 3 +- app/src/main/res/values-fr/strings.xml | 5 +- app/src/main/res/values-it/strings.xml | 3 +- app/src/main/res/values-pl/strings.xml | 5 +- app/src/main/res/values-ru/strings.xml | 3 +- app/src/main/res/values/arrays.xml | 4 +- app/src/main/res/values/strings.xml | 98 +++++---- app/src/main/res/xml/settings.xml | 5 + 18 files changed, 389 insertions(+), 234 deletions(-) (limited to 'app/src/main') diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 573fb0e..98406bc 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ + package="com.softwarefools.spiritlevel" + android:versionCode="2" + android:versionName="1.0.1" > + android:screenOrientation="landscape" + android:configChanges="locale"> diff --git a/app/src/main/java/com/softwarefools/nik/spiritlevel/AppPreferences.java b/app/src/main/java/com/softwarefools/nik/spiritlevel/AppPreferences.java index ed1e163..c7ad68a 100644 --- a/app/src/main/java/com/softwarefools/nik/spiritlevel/AppPreferences.java +++ b/app/src/main/java/com/softwarefools/nik/spiritlevel/AppPreferences.java @@ -1,5 +1,5 @@ package com.softwarefools.nik.spiritlevel; -import com.example.spiritlevel.R; +import com.softwarefools.spiritlevel.R; /** * Created by nick on 01.12.15. diff --git a/app/src/main/java/com/softwarefools/nik/spiritlevel/AppPreferencesClassic.java b/app/src/main/java/com/softwarefools/nik/spiritlevel/AppPreferencesClassic.java index bd347fa..7ec485b 100644 --- a/app/src/main/java/com/softwarefools/nik/spiritlevel/AppPreferencesClassic.java +++ b/app/src/main/java/com/softwarefools/nik/spiritlevel/AppPreferencesClassic.java @@ -3,7 +3,7 @@ package com.softwarefools.nik.spiritlevel; import android.os.Bundle; import android.preference.PreferenceActivity; -import com.example.spiritlevel.R; +import com.softwarefools.spiritlevel.R; /** * Created by nick on 04.12.15. 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 3b4dd8f..ab332b0 100644 --- a/app/src/main/java/com/softwarefools/nik/spiritlevel/LevelActivity.java +++ b/app/src/main/java/com/softwarefools/nik/spiritlevel/LevelActivity.java @@ -7,8 +7,10 @@ import java.util.Calendar; import java.util.List; import java.util.Locale; +import android.app.AlertDialog; import android.app.FragmentManager; import android.app.FragmentTransaction; +import android.content.DialogInterface; import android.content.SharedPreferences; import java.util.Locale; import java.util.Map; @@ -31,7 +33,7 @@ import android.util.DisplayMetrics; //import com.softwarefools.nik.spiritlevel.R; //import com.softwarefools.nik.spiritlevel.R.layout; //import com.softwarefools.nik.spiritlevel.R.menu; -import com.example.spiritlevel.R; +import com.softwarefools.spiritlevel.R; import com.softwarefools.nik.spiritlevel.MySensorListener; import com.softwarefools.nik.spiritlevel.MySensorManager; @@ -125,39 +127,10 @@ public class LevelActivity extends Activity implements MySensorListener{ } } }); - //Simple TTS - /*t1=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() { - @Override - public void onInit(int status) { - if(status >=TextToSpeech.LANG_AVAILABLE) { - String setlang = mySettings.getString("applicationLanguage","xxx"); - String comp = getResources().getConfiguration().locale.getLanguage(); - if (!setlang.contains(comp)){ - //Toast.makeText(getBaseContext(), "Language is local", Toast.LENGTH_SHORT).show(); // Toast Vorlage - if (setlang=="xxx" ) { - - SharedPreferences.Editor editor = mySettings.edit(); - editor.putString("applicationLanguage", comp); - editor.commit(); - t1.setLanguage(getResources().getConfiguration().locale); - setLocale(setlang); - //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); - }} - //t1.setLanguage(getResources().getConfiguration().locale); - - - } - } });*/ - - - + restartTTS(); setupActionBar(); - //! } protected void onActivityResult(int requestCode, int resultCode, Intent data) { @@ -167,6 +140,7 @@ public class LevelActivity extends Activity implements MySensorListener{ @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS){ + funkSpeech(myTTS,false); myTTS.setLanguage(getResources().getConfiguration().locale); }else if (status == TextToSpeech.ERROR) { Toast.makeText(getBaseContext(), getApplicationContext().getString(R.string.action_lang_NA), Toast.LENGTH_LONG).show(); @@ -185,41 +159,8 @@ public class LevelActivity extends Activity implements MySensorListener{ public void onResume() { super.onResume(); System.out.println("LevelActivity.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); - - funkSpeech(myTTS,false); - }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(); - } - } - }); + restartTTS(); //Toast.makeText(getBaseContext(), "On Resume", Toast.LENGTH_SHORT).show(); // Toast Vorlage // Toast.makeText(getBaseContext(), "onResume Sensors Started", Toast.LENGTH_SHORT).show(); @@ -269,14 +210,32 @@ public class LevelActivity extends Activity implements MySensorListener{ @Override public boolean onCreateOptionsMenu(Menu menu) { + //menu.clear(); // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.level, menu); return true; } + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + + menu.clear(); // Clear the menu first + + /* Add the menu items */ + getMenuInflater().inflate(R.menu.level, menu); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + if (prefs.getBoolean("applicationRecording",true)) { + menu.removeItem(R.id.action_record); + }else{ + menu.removeItem(R.id.action_record_off); + } + //return super.onPrepareOptionsMenu(menu); + return true; + } @Override public boolean onOptionsItemSelected(MenuItem item) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); // Handle item selection switch (item.getItemId()) { case R.id.action_settings: @@ -297,33 +256,31 @@ public class LevelActivity extends Activity implements MySensorListener{ return true; case R.id.action_record: - //t1.speak(this.getString(R.string.action_record_text), TextToSpeech.QUEUE_FLUSH, null); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - //Toast.makeText(getBaseContext(), "Setting on Recording:"+prefs.getBoolean("applicationRecording",true), Toast.LENGTH_SHORT).show(); - if (!prefs.getBoolean("applicationRecording",true)) { - System.out.println("Start Recording"); - //Boolean a= prefs.getBoolean("applicationRecording",false); - beLoud(this.getString(R.string.action_record_text)); - SharedPreferences.Editor editor = prefs.edit(); - editor.putBoolean("applicationRecording",true); - editor.commit(); - } else { - System.out.println("Stop Recording"); - beLoud(this.getString(R.string.action_record_text_off)); - SharedPreferences.Editor editor = prefs.edit(); - editor.putBoolean("applicationRecording",false); - editor.commit(); - Toast.makeText(getBaseContext(), "Vector:"+accelvector.size()+"\n"+printVect(accelvector), Toast.LENGTH_SHORT).show(); + System.out.println("Start Recording"); + beLoud(this.getString(R.string.action_record_text)); + SharedPreferences.Editor editor = prefs.edit(); + editor.putBoolean("applicationRecording",true); + editor.commit(); + return true; + case R.id.action_record_off: + + //SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + System.out.println("Stop Recording"); + beLoud(this.getString(R.string.action_record_text_off)); + SharedPreferences.Editor editor2 = prefs.edit(); + editor2.putBoolean("applicationRecording",false); + editor2.commit(); + + + Toast.makeText(getBaseContext(), "Vector:"+accelvector.size()+"\n"+printVect(accelvector), Toast.LENGTH_LONG).show(); // Save The DATA //dump the vectors accelvector.clear(); gravvector.clear(); - } - return true; @@ -364,11 +321,11 @@ public class LevelActivity extends Activity implements MySensorListener{ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); nikVector temp=new nikVector(); - temp.setVector(getTime(),x/sum,y/sum,z/sum); + temp.setVector(getTime(),x,y,z); if(prefs.getBoolean("applicationRecording",true))gravvector.add(temp); String debug="LevelActivityDebug"; - levelView.updateData(x/sum, y/sum, z/sum,orientation,debug); + levelView.updateData(x, y, z,orientation,debug); } @Override @@ -380,15 +337,31 @@ public class LevelActivity extends Activity implements MySensorListener{ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); nikVector temp=new nikVector(); - temp.setVector(getTime(),x/sum,y/sum,z/sum); + temp.setVector(getTime(),x,y,z); if(prefs.getBoolean("applicationRecording",true))accelvector.add(temp); - levelView.updateAccelData(x/sum, y/sum, z/sum,orientation); + levelView.updateAccelData(x, y, z,orientation); } + @Override + public void onMagneticFieldChanged(float x, float y, float z) { + // TODO Auto-generated method stub + System.out.println("Noticed Magnetic Field Change"); + float sq= (float)x*x+y*y+z*z; + float sum=(float)Math.sqrt(sq); + //SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + + //nikVector temp=new nikVector(); + //temp.setVector(getTime(),x/sum,y/sum,z/sum); + //if(prefs.getBoolean("applicationRecording",true))accelvector.add(temp); + levelView.updateMagneticData(x, y, z); + } @Override - public void onShake(float force) { + public void onShake(float forceacc) { // TODO Auto-generated method stub + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + + float force=((float)prefs.getInt("deviceweight",0))*forceacc/1000; 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)); /* @@ -408,6 +381,63 @@ public class LevelActivity extends Activity implements MySensorListener{ getActionBar().setDisplayHomeAsUpEnabled(true); } } + @Override + public void onBackPressed() { + new AlertDialog.Builder(this) + .setIcon(android.R.drawable.ic_dialog_alert) + .setTitle("Closing Activity") + .setMessage("Are you sure you want to close this activity?") + .setPositiveButton("Yes", new DialogInterface.OnClickListener() + { + @Override + public void onClick(DialogInterface dialog, int which) { + + //finish(); + exitAll(); + } + + }) + .setNegativeButton("No", null) + .show(); + } +private void restartTTS(){ + 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 + funkSpeech(myTTS,false); + setLocale(setlang); + } + + funkSpeech(myTTS,false); + 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(); + } + } + }); +} private int getScreenOrientation() { int rotation = getWindowManager().getDefaultDisplay().getRotation(); DisplayMetrics dm = new DisplayMetrics(); @@ -476,19 +506,24 @@ public class LevelActivity extends Activity implements MySensorListener{ editor.putString("applicationLanguage", lang); editor.commit(); myLocale = new Locale(lang); - //langname=lang; + Configuration config = new Configuration(); + config.locale = myLocale; + + getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics()); + + /*//langname=lang; Resources res = getResources(); DisplayMetrics dm = res.getDisplayMetrics(); Configuration conf = res.getConfiguration(); conf.locale = myLocale; res.updateConfiguration(conf, dm); - Intent refresh = new Intent(this, LevelActivity.class); + Intent refresh = new Intent(this, LevelActivity.class);*/ - startActivity(refresh); + //startActivity(refresh); setupActionBar(); - myTTS.setLanguage(conf.locale); + myTTS.setLanguage(config.locale); beLoud(this.getString(R.string.change_text)); //myTTS.setLanguage(conf.locale); /*setupActionBar(); @@ -501,7 +536,7 @@ public class LevelActivity extends Activity implements MySensorListener{ //t1.speak(this.getString(R.string.change_text), TextToSpeech.QUEUE_FLUSH, null); - finish(); + //finish(); } public void funkSpeech(TextToSpeech sp, boolean randomize) { @@ -530,8 +565,9 @@ public class LevelActivity extends Activity implements MySensorListener{ if(prefs.getBoolean("applicationTalking",true))t1.speak(whatsay, TextToSpeech.QUEUE_FLUSH, null); }*/ System.out.println("Systemoutput"); - if(prefs.getBoolean("applicationTalking",true))myTTS.speak(whatsay, TextToSpeech.QUEUE_FLUSH, null); if (prefs.getBoolean("applicationWriting", true))Toast.makeText(getBaseContext(), whatwrite, Toast.LENGTH_LONG).show(); + if(prefs.getBoolean("applicationTalking",true))myTTS.speak(whatsay, TextToSpeech.QUEUE_FLUSH, null); + while (myTTS.isSpeaking()){ } @@ -547,8 +583,9 @@ public class LevelActivity extends Activity implements MySensorListener{ //} System.out.println("Systemoutput"); - if(prefs.getBoolean("applicationTalking",true))myTTS.speak(what, TextToSpeech.QUEUE_FLUSH, null); if (prefs.getBoolean("applicationWriting", true))Toast.makeText(getBaseContext(), what, Toast.LENGTH_SHORT).show(); + if(prefs.getBoolean("applicationTalking",true))myTTS.speak(what, TextToSpeech.QUEUE_FLUSH, null); + while (myTTS.isSpeaking()){ //system.Out.Println("Do something or nothing while speaking..") } 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 b74d708..e379552 100644 --- a/app/src/main/java/com/softwarefools/nik/spiritlevel/LevelView.java +++ b/app/src/main/java/com/softwarefools/nik/spiritlevel/LevelView.java @@ -39,10 +39,17 @@ public class LevelView extends View{ public float x_gravSense=0; public float y_gravSense=0; public float z_gravSense=0; + public float sum_gravSense=0; public float x_accSense=0; public float y_accSense=0; public float z_accSense=0; + public float sum_accSense=0; + + public float x_magSense=0; + public float y_magSense=0; + public float z_magSense=0; + public float sum_magSense=0; public float x_gravSense_min=10; public float y_gravSense_min=10; @@ -77,6 +84,9 @@ public class LevelView extends View{ private float x_accEnd=0; private float y_accEnd=0; + + private float x_magEnd=0; + private float y_magEnd=0; private float ballRadius = 320; // Circles and Axis props private float ballWidth = 10; @@ -84,8 +94,10 @@ public class LevelView extends View{ private float lineTextSize=50; private float maxdiameter=0; + private float accOffset=0; private float levelballRadius=50; + private float magballRadius=50; private float vectWidth =14; private float vectTextSize=40; private float vectTextDist=5; @@ -111,7 +123,8 @@ public class LevelView extends View{ private RectF helpBallBounds2; private RectF helpBallBounds3; - private RectF levelballBounds; + private RectF levelballBounds; + private RectF magballBounds; private Paint paintCircle; private Paint paintHelpCircle;// The paint (e.g. style, color) used for drawing private Paint paintHelpCircle2; @@ -121,6 +134,7 @@ public class LevelView extends View{ private Paint paintVector2; private Paint paintVector2Help; private Paint paintVector3Help; + private Paint paintVector3; private Paint paintAxisLines; private Paint paintAxisHelpLines; @@ -159,8 +173,8 @@ public class LevelView extends View{ helpBallBounds3 = new RectF(); levelballBounds = new RectF(); - - paintCircle = new Paint(); + magballBounds = new RectF(); + paintCircle = new Paint(); paintHelpCircle = new Paint(); paintHelpCircle2 = new Paint(); @@ -171,6 +185,8 @@ public class LevelView extends View{ paintVector2Help = new Paint(); paintVector3Help = new Paint(); + paintVector3 = new Paint(); + paintAxisLines = new Paint(); paintAxisHelpLines = new Paint(); @@ -186,14 +202,11 @@ public class LevelView extends View{ vectTextDist=(int)vectTextSize/4; levelballRadius=(int)displayheight/20; + magballRadius=(int)displayheight/20; // Circles and Axis props - x_gravEnd=xCenter; - y_gravEnd=yCenter+ballRadius; - x_accEnd=xCenter; - y_accEnd=yCenter; - + final TypedArray styledAttributes = getContext().getTheme().obtainStyledAttributes( new int[] { android.R.attr.actionBarSize }); mActionBarSize = (int) styledAttributes.getDimension(0, 0); styledAttributes.recycle(); @@ -203,6 +216,12 @@ public class LevelView extends View{ yCenter=displayheight/2 -mActionBarSize-statusbarSize; double t=displaywidth*displaywidth+displayheight*displayheight; maxdiameter=(float) Math.sqrt(t); + x_gravEnd=xCenter; + y_gravEnd=yCenter+ballRadius; + x_accEnd=xCenter; + y_accEnd=yCenter; + x_magEnd=xCenter; + y_magEnd=yCenter; ballBounds.set(xCenter-ballRadius, yCenter-ballRadius, xCenter+ballRadius, yCenter+ballRadius); helpBallBounds.set(xCenter-ballRadius/2, yCenter-ballRadius/2, xCenter+ballRadius/2, yCenter+ballRadius/2); @@ -245,11 +264,17 @@ public class LevelView extends View{ paintVector2Help.setStrokeWidth(vectWidth/3); paintVector2Help.setColor(Color.RED); paintVector2Help.setAntiAlias(true); + + +//MagneticField + paintVector3.setColor(Color.GRAY); + paintVector3.setAntiAlias(true); + paintVector3.setStrokeWidth(vectWidth); + paintVector3.setTextSize(vectTextSize); paintVector3Help.setTextSize(vectTextSize); - paintVector3Help.setColor(Color.RED); + paintVector3Help.setColor(Color.DKGRAY); paintVector3Help.setAntiAlias(true); - - + paintAxisLines.setColor(Color.BLACK); paintAxisLines.setStrokeWidth(lineWidth); paintAxisLines.setTextSize(lineTextSize); @@ -266,13 +291,17 @@ public class LevelView extends View{ @Override protected void onDraw(Canvas canvas) { // 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_gravEnd=xCenter+y_gravSense/sum_gravSense*ballRadius; + y_gravEnd=yCenter+x_gravSense/sum_gravSense*ballRadius; + x_gravAngEnd=xCenter+y_gravSense/sum_gravSense*ballRadius/2; + y_gravAngEnd=yCenter+x_gravSense/sum_gravSense*ballRadius/2; + + x_accEnd=xCenter+(y_accSense-y_gravSense)/sum_accSense*ballRadius; + y_accEnd=yCenter+(x_accSense-x_gravSense)/sum_accSense*ballRadius; + + x_magEnd=xCenter+(y_magSense)/sum_magSense*ballRadius; + y_magEnd=yCenter+x_magSense/sum_magSense*ballRadius; - x_accEnd=xCenter+(y_accSense-y_gravSense)*ballRadius; - y_accEnd=yCenter+(x_accSense-x_gravSense)*ballRadius; x_horizon=xCenter-x_gravSense*maxdiameter; y_horizon=yCenter+y_gravSense*maxdiameter; x_horizon2=xCenter+x_gravSense*maxdiameter; @@ -287,7 +316,7 @@ public class LevelView extends View{ xAxisTagNeg_y=yCenter-ballRadius+lineTextSize+2; - alpha = getAngle(x_gravSense,y_gravSense); + alpha = getAngle(x_gravSense/sum_gravSense,y_gravSense/sum_gravSense); //alpha = Math.atan((y_gravSense/x_gravSense)); @@ -341,12 +370,19 @@ public class LevelView extends View{ canvas.drawText(makeDegAngle(getAlpha(x_gravSense,z_gravSense)),displaywidth-150,yAxisTag_y,paintTexts); //Draw Vector/Ball and Text - + if(mySettings.getBoolean("applicationShowMag",true)) { + canvas.drawLine(xCenter, yCenter, x_magEnd, y_magEnd, paintVector3); + if(inMagneticZ()){ + magballRadius=(int) (displayheight/20*(Math.sqrt(z_magSense/sum_magSense*z_magSense/sum_magSense))); + magballBounds.set(x_magEnd - magballRadius, y_magEnd - magballRadius, x_magEnd + magballRadius, y_magEnd + magballRadius); + canvas.drawOval(magballBounds, paintVector3); + } + } setVectorColor(); if(inHorizontalMode()){ if(mySettings.getBoolean("applicationShowGrav",true)) { canvas.drawLine(xCenter, yCenter, x_gravEnd, y_gravEnd, paintVector); - levelballRadius = (int) (displayheight / 20 * (1 - Math.sqrt(x_gravSense * x_gravSense + y_gravSense * y_gravSense))); + levelballRadius = (int) (displayheight / 20 * (1 - Math.sqrt(x_gravSense/sum_gravSense * x_gravSense/sum_gravSense + y_gravSense/sum_gravSense * y_gravSense/sum_gravSense))); levelballBounds.set(x_gravEnd - levelballRadius, y_gravEnd - levelballRadius, x_gravEnd + levelballRadius, y_gravEnd + levelballRadius); canvas.drawOval(levelballBounds, paintVector); canvas.drawLine(x_gravEnd - levelballRadius, y_gravEnd, x_gravEnd + levelballRadius, y_gravEnd, paintAxisHelpLines); @@ -358,7 +394,7 @@ public class LevelView extends View{ } }else{ //levelballRadius=0; - levelballRadius=(int) (displayheight/20*(1-Math.sqrt(x_gravSense*x_gravSense+y_gravSense*y_gravSense))); + levelballRadius=(int) (displayheight/20*(1-Math.sqrt(x_gravSense/sum_gravSense*x_gravSense/sum_gravSense+y_gravSense/sum_gravSense*y_gravSense/sum_gravSense))); levelballBounds.set(x_gravEnd-levelballRadius,y_gravEnd-levelballRadius,x_gravEnd+levelballRadius,y_gravEnd+levelballRadius); if(mySettings.getBoolean("applicationShowAccel",true)) { @@ -383,6 +419,7 @@ public class LevelView extends View{ float sum_gmin=(float)getLength(x_gravSense_min,y_gravSense_min,z_gravSense_min); float sum_amax=(float)getLength(x_accSense_max,y_accSense_max,z_accSense_max); float sum_na =(float) getLength(x_accSense-x_gravSense,y_accSense-y_gravSense,z_accSense-z_gravSense); + float sum_ma =(float) getLength(x_magSense,y_magSense,z_magSense); if(mySettings.getBoolean("applicationShowGrav",true)) { if((y_gravEnd + margin + 4 * vectTextSize + vectTextDist)<(displayheight -mActionBarSize-statusbarSize-margin)) { @@ -402,14 +439,26 @@ public class LevelView extends View{ canvas.restore(); } } + // Acceleration Sumup - canvas.drawText("A [m\u00B2/s]", displaywidth-displaywidth/10, margin+vectTextSize, paintVector2); - canvas.drawText("\u01A9 "+niceValue(sum_na), displaywidth-displaywidth/10, margin+2*vectTextSize+vectTextDist, paintVector2); - canvas.drawLine(displaywidth-displaywidth/10,margin+2*vectTextSize+2*vectTextDist,displaywidth-2*margin,margin+2*vectTextSize+2*vectTextDist,paintVector2Help); - canvas.drawText("x "+niceValue(x_accSense-x_gravSense), displaywidth-displaywidth/10, margin+3*vectTextSize+2*vectTextDist, paintVector2); - canvas.drawText("y "+niceValue(y_accSense-y_gravSense), displaywidth-displaywidth/10, margin+4*vectTextSize+2*vectTextDist, paintVector2); - canvas.drawText("z "+niceValue(z_accSense-z_gravSense), displaywidth-displaywidth/10, margin+5*vectTextSize+2*vectTextDist, paintVector2); + if(mySettings.getBoolean("applicationShowAccel",true)) { + accOffset=displaywidth / 10; + canvas.drawText("A [m\u00B2/s]", displaywidth - displaywidth / 10, margin + vectTextSize, paintVector2); + canvas.drawText("\u01A9 " + niceValue(sum_na), displaywidth - displaywidth / 10, margin + 2 * vectTextSize + vectTextDist, paintVector2); + canvas.drawLine(displaywidth - displaywidth / 10, margin + 2 * vectTextSize + 2 * vectTextDist, displaywidth - 2 * margin, margin + 2 * vectTextSize + 2 * vectTextDist, paintVector2Help); + canvas.drawText("x " + niceValue(x_accSense - x_gravSense), displaywidth - displaywidth / 10, margin + 3 * vectTextSize + 2 * vectTextDist, paintVector2); + canvas.drawText("y " + niceValue(y_accSense - y_gravSense), displaywidth - displaywidth / 10, margin + 4 * vectTextSize + 2 * vectTextDist, paintVector2); + canvas.drawText("z " + niceValue(z_accSense - z_gravSense), displaywidth - displaywidth / 10, margin + 5 * vectTextSize + 2 * vectTextDist, paintVector2); + }else accOffset= 0; + if(mySettings.getBoolean("applicationShowMag",true)) { + canvas.drawText("M [\u03bcT]", displaywidth -accOffset- displaywidth / 10, margin + vectTextSize, paintVector3); + canvas.drawText("\u01A9 " + niceValue(sum_ma), displaywidth -accOffset- displaywidth / 10, margin + 2 * vectTextSize + vectTextDist, paintVector3); + canvas.drawLine(displaywidth -accOffset- displaywidth / 10, margin + 2 * vectTextSize + 2 * vectTextDist, displaywidth - 2 * margin-accOffset, margin + 2 * vectTextSize + 2 * vectTextDist, paintVector3Help); + canvas.drawText("x " + niceValue(x_magSense), displaywidth -accOffset- displaywidth / 10, margin + 3 * vectTextSize + 2 * vectTextDist, paintVector3); + canvas.drawText("y " + niceValue(y_magSense), displaywidth -accOffset- displaywidth / 10, margin + 4 * vectTextSize + 2 * vectTextDist, paintVector3); + canvas.drawText("z " + niceValue(z_magSense), displaywidth -accOffset- displaywidth / 10, margin + 5 * vectTextSize + 2 * vectTextDist, paintVector3); + } canvas.drawText("G min [m\u00B2/s]", displaywidth-displaywidth/8, displayheight-margin-4*vectTextSize-2*vectTextDist-mActionBarSize-statusbarSize, paintVector3Help); canvas.drawText("\u01A9 "+niceValue(sum_gmin), displaywidth-displaywidth/9, displayheight-margin-3*vectTextSize-2*vectTextDist-mActionBarSize-statusbarSize, paintVector3Help); @@ -420,7 +469,8 @@ public class LevelView extends View{ //Draw Debug - + double pitch = (double) mySettings.getInt("applicationPitch", 10) / 10; + double rate = (double) mySettings.getInt("applicationRate", 10) / 10; String current = getResources().getConfiguration().locale.getLanguage(); String screeninfo = "Width: "+ displaywidth+ "Height: "+ displayheight + " Orientation :" + String.valueOf(orientation); @@ -429,12 +479,12 @@ public class LevelView extends View{ 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(current+"; P:"+pitch+", R:"+rate, 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); + //double g= 9.80665; + return f.format(x); } public String makeDegAngle(double grad){ //double alphadeg = 180*grad/Math.PI; @@ -473,10 +523,12 @@ public class LevelView extends View{ public void updateData(float x,float y,float z,int orientation,String debug) { //float x_resultForce=x+x_accSense - + float sq= (float)x*x+y*y+z*z; + float sum=(float)Math.sqrt(sq); this.x_gravSense = x; this.y_gravSense = y; this.z_gravSense = z; + this.sum_gravSense=sum; this.orientation = orientation; this.levelActDebug=debug; @@ -493,18 +545,40 @@ public class LevelView extends View{ this.y_gravSense_min=y; this.z_gravSense_min=z; } + float sq= (float)x*x+y*y+z*z; + float sum=(float)Math.sqrt(sq); this.x_accSense = x; this.y_accSense = y; this.z_accSense = z; + this.sum_accSense=sum; this.orientation = orientation; invalidate(); } + public void updateMagneticData(float x,float y,float z) { + //float x_resultForce=x+x_accSense + float sq= (float)x*x+y*y+z*z; + float sum=(float)Math.sqrt(sq); + this.x_magSense = x; + this.y_magSense = y; + this.z_magSense = z; + this.sum_magSense=sum; + this.orientation = orientation; + + + invalidate(); + } public Boolean inHorizontalMode(){ - double sum=x_gravSense*x_gravSense+y_gravSense*y_gravSense; + double sum=x_gravSense/sum_gravSense*x_gravSense/sum_gravSense+y_gravSense/sum_gravSense*y_gravSense/sum_gravSense; double sqs=Math.sqrt(sum); if(sqs<0.5) return true; else return false; } + public Boolean inMagneticZ(){ + double planesum=x_magSense/sum_magSense*x_magSense/sum_magSense+y_magSense/sum_magSense*y_magSense/sum_magSense; + double sqs=Math.sqrt(planesum); + if(sqs<0.25) return true; + else return false; + } public Path getTrianglePath(float cx, float cy , float x, float y){ int cxi=(int)cx; int cyi=(int)cy; diff --git a/app/src/main/java/com/softwarefools/nik/spiritlevel/MySensorListener.java b/app/src/main/java/com/softwarefools/nik/spiritlevel/MySensorListener.java index 8c98b2c..317391f 100644 --- a/app/src/main/java/com/softwarefools/nik/spiritlevel/MySensorListener.java +++ b/app/src/main/java/com/softwarefools/nik/spiritlevel/MySensorListener.java @@ -12,7 +12,7 @@ public interface MySensorListener { //public void onPressureChanged(float p); - //public void onMagneticFieldChanged(float x, float y, float z); + public void onMagneticFieldChanged(float x, float y, float z); //public void onGyroChanged(float x, float y, float z); diff --git a/app/src/main/java/com/softwarefools/nik/spiritlevel/MySensorManager.java b/app/src/main/java/com/softwarefools/nik/spiritlevel/MySensorManager.java index 682ecad..caa8976 100644 --- a/app/src/main/java/com/softwarefools/nik/spiritlevel/MySensorManager.java +++ b/app/src/main/java/com/softwarefools/nik/spiritlevel/MySensorManager.java @@ -4,10 +4,12 @@ import java.text.DecimalFormat; import java.util.List; import android.content.Context; +import android.content.SharedPreferences; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; +import android.preference.PreferenceManager; import android.widget.Toast; public class MySensorManager { @@ -21,9 +23,9 @@ public class MySensorManager { private static Sensor sensorgravity; private static Sensor sensoracell; - /* + private static Sensor sensormagneticfield; - private static Sensor sensorgyro; + /* private static Sensor sensorgyro; private static Sensor sensorlight; private static Sensor sensordistance; @@ -40,9 +42,9 @@ public class MySensorManager { private static Boolean gravitysupported; private static Boolean accelsupported; - /* + private static Boolean magneticsupported; - private static Boolean gyrosupported; + /*private static Boolean gyrosupported; private static Boolean lightsupported; private static Boolean distancesupported; @@ -52,7 +54,8 @@ public class MySensorManager { */ /** indicates whether or not Accelerometer Sensor is running */ private static boolean running = false; - + + /** * Returns true if the manager is listening to orientation changes */ @@ -76,6 +79,7 @@ public class MySensorManager { * Returns true if at least one Accelerometer sensor is available */ public static boolean isSupported(Context context) { + aContext = context; if (gravitysupported == null) { if (aContext != null) { @@ -88,11 +92,11 @@ public class MySensorManager { List sensorsgrv = sensorManager.getSensorList(Sensor.TYPE_GRAVITY); List sensorsacc = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER); - - /* - List sensorsgyr = sensorManager.getSensorList(Sensor.TYPE_GYROSCOPE); - List sensorspres = sensorManager.getSensorList(Sensor.TYPE_PRESSURE); + List sensormagn = sensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD); + List sensorsgyr = sensorManager.getSensorList(Sensor.TYPE_GYROSCOPE); + /*List sensorspres = sensorManager.getSensorList(Sensor.TYPE_PRESSURE); + List sensorlgt = sensorManager.getSensorList(Sensor.TYPE_LIGHT); List sensordst = sensorManager.getSensorList(Sensor.TYPE_PROXIMITY); List sensorhum = sensorManager.getSensorList(Sensor.TYPE_RELATIVE_HUMIDITY); @@ -100,10 +104,11 @@ public class MySensorManager { */ if(sensorsgrv.size() > 0) gravitysupported=true; if(sensorsacc.size() > 0)accelsupported=true; + if(sensormagn.size() > 0) magneticsupported = true; /* if(sensorsgyr.size()>0) gyrosupported=true; if(sensorspres.size() > 0) pressuresupported=true; - if(sensormagn.size() > 0) magneticsupported = true; + if(sensorlgt.size() > 0) lightsupported = true; if(sensordst.size()>0) distancesupported = true; if(sensorhum.size()>0 ) humidsupported =true; @@ -157,6 +162,14 @@ public class MySensorManager { sensorEventListener, sensoracell, SensorManager.SENSOR_DELAY_GAME); } + if(magneticsupported){ + List sensorsp = sensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD); + sensormagneticfield = sensorsp.get(0); + sensorManager.registerListener( + magnetEventListener, sensormagneticfield, + SensorManager.SENSOR_DELAY_GAME); + } + /* if(gyrosupported){ List sensorsgyr = sensorManager.getSensorList(Sensor.TYPE_GYROSCOPE); @@ -172,13 +185,7 @@ public class MySensorManager { presEventListener, sensorpressure, SensorManager.SENSOR_DELAY_GAME); } - if(magneticsupported){ - List sensorsp = sensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD); - sensormagneticfield = sensorsp.get(0); - sensorManager.registerListener( - magnetEventListener, sensormagneticfield, - SensorManager.SENSOR_DELAY_GAME); - } + if(lightsupported){ List sensorsp = sensorManager.getSensorList(Sensor.TYPE_LIGHT); sensorlight = sensorsp.get(0); @@ -229,6 +236,9 @@ public class MySensorManager { int threshold, int interval) { configure(threshold, interval); startListening(myListener); + + + } /** @@ -249,7 +259,7 @@ public class MySensorManager { private float lastX = 0; private float lastY = 0; private float lastZ = 0; - private float force = 0; + private float forceacc = 0; public void onAccuracyChanged(Sensor sensor, int accuracy) {} @@ -282,16 +292,16 @@ public class MySensorManager { /*force = Math.abs(x + y + z - lastX - lastY - lastZ) / timeDiff; */ - force = Math.abs(x + y + z - lastX - lastY - lastZ)/timeDiff; + forceacc = Math.abs(x + y + z - lastX - lastY - lastZ); - if (Float.compare(force, threshold) >0 ) { + if (Float.compare(forceacc, threshold) >0 ) { //Toast.makeText(Accelerometer.getContext(), //(now-lastShake)+" >= "+interval, 1000).show(); if (now - lastShake >= interval) { // trigger shake event - listener.onShake(force); + listener.onShake(forceacc); } else { @@ -343,6 +353,27 @@ public class MySensorManager { } }; + private static SensorEventListener magnetEventListener = + new SensorEventListener() { + + private float x = 0; + private float y = 0; + private float z = 0; + + public void onAccuracyChanged(Sensor sensor, int accuracy) {} + + @Override + public void onSensorChanged(SensorEvent event) { + x = event.values[0]; + y = event.values[1]; + z = event.values[2]; + + + // trigger change event + listener.onMagneticFieldChanged(x, y, z); + } + + }; /* private static SensorEventListener gyroEventListener = new SensorEventListener() { @@ -372,27 +403,7 @@ public class MySensorManager { }; - private static SensorEventListener magnetEventListener = - new SensorEventListener() { - - private float x = 0; - private float y = 0; - private float z = 0; - - public void onAccuracyChanged(Sensor sensor, int accuracy) {} - - @Override - public void onSensorChanged(SensorEvent event) { - x = event.values[0]; - y = event.values[1]; - z = event.values[2]; - - - // trigger change event - listener.onMagneticFieldChanged(x, y, z); - } - - }; + private static SensorEventListener lightEventListener = new SensorEventListener() { diff --git a/app/src/main/res/menu/level.xml b/app/src/main/res/menu/level.xml index bdc368f..f526d76 100644 --- a/app/src/main/res/menu/level.xml +++ b/app/src/main/res/menu/level.xml @@ -15,7 +15,11 @@ android:orderInCategory="2" android:showAsAction="collapseActionView" android:title="@string/action_record"/> - + + Wasserwaage Einstellungen Aufnehmen + Aufnahme Stoppen Ich nehme Auf! Ich Stoppe die Aufnahme! @@ -18,4 +20,11 @@ Danke dass sie Software Fools Software Verwenden! Beschleunigung detektiert! \n Kraft: + + + + + + + diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 5bf2777..375455f 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -1,9 +1,10 @@ - + SpiritLevel Settings Record + Stop Recording I start to record! I stop to record! diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 4fa7b47..c6e0fcf 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -1,9 +1,10 @@ - + Nivel Calibración Grabar + Detener grabación Empiezo a grabar! Me detengo para grabar! diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 4ec24e2..85b2639 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -1,9 +1,10 @@ - + Niveau Paramètres Enregistrement + Arrêter l\'enregistrement Je commence à enregistrer! Je cesse d\'enregistrer! @@ -16,7 +17,7 @@ Changer la langue vers le français - Merci de ce que vous utilisez un logiciel de Fools! + Merci de ce que vous utilisez un logiciel de SoftwareFools! Accélération détecté! \n Force de: diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 3863fb2..3c59fdd 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -1,9 +1,10 @@ - + Livello Impostazioni Registrar + Interrompi registrazione Comincio a registrare! Mi fermo a registrare! diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 7b127b6..af59281 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -1,9 +1,10 @@ - + Poziomnica Ustawienia - Rekord + Nagrywać + Zatrzymaj nagrywanie Zacznę nagrywać! Zatrzymać nagrywanie! diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 1a16df4..d27c3ad 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -1,9 +1,10 @@ - + ватерпас настройки запись + Остановить запись Я начинаю записывать! Я останавливаюсь, чтобы записать! diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 0b8d638..dc62354 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -1,6 +1,6 @@ - + Deutsch English Español @@ -9,7 +9,7 @@ Polski Русский - + de en es diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b3c7ed5..b856001 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,50 +3,58 @@ SpiritLevel - Hello world! - - Newton! - N - Fuck Off! - - Deutsch - English - Español - Français - Italiano - Polski - Русский - - Device Name - Please provide Devices Name - Set to Record - Records Sensor Output when set - System Settings - Data Acquisition Setting - Language and Messages - Launch Settings - Reset System - Resets the System - Talk - Let the System Talk to you - Write - Recieve written Notes from the System - Device Weight - Put in your devices weight in gramm - Report A Bug - Redirect to the SF.com Mantis server - Select Language - Select one of the available Languages - Accelleration - Show Acceleration vector on the Coordinates - Gravity - Show gravitational acceleration on Coords - Pitch - Set Voice Pitch - Rate - Set the Rate of Speech - - Dialog Slider shit - Units + Hello world! + Newton! + N + Fuck Off! + + Device Name + Please provide Devices Name + Set to Record + Records Sensor Output when set + System Settings + Data Acquisition Setting + Language and Messages + Launch Settings + Reset System + Resets the System + Talk + Let the System Talk to you + Write + Recieve written Notes from the System + Device Weight + Put in your devices weight in gramm + Report A Bug + Redirect to the SF.com Mantis server + Select Language + Select one of the available Languages + Accelleration + Show Acceleration vector on the Coordinates + Magnetic Field + Show Magnetic Field on the Coordinates + Gravity + Show gravitational acceleration on Coords + Pitch + Set Voice Pitch + Rate + Set the Rate of Speech + + Dialog Slider shit + Units + + + + Settings + Record + Stop Recording + I start to record! + I stop to record! + Attention! Thats about + Change Language + English speech files are not installed! Please install them in your Phone Settings, when needed + Exit + Changing Language to English + Thank You for using Software Fools Software! Which never fooled anybody + Accelleration detected \n Force: diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml index d595685..8d989f4 100644 --- a/app/src/main/res/xml/settings.xml +++ b/app/src/main/res/xml/settings.xml @@ -19,6 +19,10 @@ android:defaultValue="true" android:summary="@string/setting_accel_sum" android:key="applicationShowAccel" /> + @@ -32,6 +36,7 @@ -- cgit v1.2.3