CalculateActivity.java (3540B)
1 package de.jandankert.ritzelrechner; 2 3 import java.math.BigDecimal; 4 import java.math.RoundingMode; 5 6 import android.app.Activity; 7 import android.content.Intent; 8 import android.content.SharedPreferences; 9 import android.os.Bundle; 10 import android.preference.PreferenceManager; 11 import android.view.Menu; 12 import android.view.MenuInflater; 13 import android.view.MenuItem; 14 import android.widget.SeekBar; 15 import android.widget.TextView; 16 import android.widget.SeekBar.OnSeekBarChangeListener; 17 18 public class CalculateActivity extends Activity 19 { 20 private SeekBar anzahlZaehneVorneView; 21 private SeekBar anzahlZaehneHintenView; 22 private SeekBar trittfrequenzView; 23 24 private TextView geschwindigkeitView; 25 26 private SharedPreferences prefs; 27 28 /** Called when the activity is first created. */ 29 @Override 30 public void onCreate(Bundle savedInstanceState) 31 { 32 super.onCreate(savedInstanceState); 33 setContentView(R.layout.calculate); 34 35 prefs = PreferenceManager.getDefaultSharedPreferences(this); 36 37 anzahlZaehneVorneView = (SeekBar) findViewById(R.id.seek_anzahl_zaehne_vorne); 38 anzahlZaehneHintenView = (SeekBar) findViewById(R.id.seek_anzahl_zaehne_hinten); 39 trittfrequenzView = (SeekBar) findViewById(R.id.seek_trittfrequenz); 40 geschwindigkeitView = (TextView) findViewById(R.id.geschwindigkeit); 41 42 OnSeekBarChangeListener onSeekBarChangeDoCalculate = new OnSeekBarChangeListener() 43 { 44 @Override 45 public void onStopTrackingTouch(SeekBar seekBar) 46 { 47 } 48 49 @Override 50 public void onStartTrackingTouch(SeekBar seekBar) 51 { 52 } 53 54 @Override 55 public void onProgressChanged(SeekBar seekBar, int progress, 56 boolean fromUser) 57 { 58 calculate(); 59 } 60 }; 61 62 trittfrequenzView 63 .setOnSeekBarChangeListener(onSeekBarChangeDoCalculate); 64 anzahlZaehneVorneView 65 .setOnSeekBarChangeListener(onSeekBarChangeDoCalculate); 66 anzahlZaehneHintenView 67 .setOnSeekBarChangeListener(onSeekBarChangeDoCalculate); 68 69 calculate(); 70 } 71 72 @Override 73 public boolean onCreateOptionsMenu(Menu menu) 74 { 75 super.onCreateOptionsMenu(menu); 76 MenuInflater mi = new MenuInflater(getApplication()); 77 mi.inflate(R.menu.main, menu); 78 79 return true; 80 } 81 82 private void calculate() 83 { 84 // Umfang im Millimeter 85 int umfang = Integer.parseInt(prefs.getString("umfang", "2150")); 86 87 int anzahlZaehneVorne = anzahlZaehneVorneView.getProgress()+22; 88 ((TextView) findViewById(R.id.text_zaehne_vorne)).setText("" 89 + anzahlZaehneVorne); 90 91 int anzahlZaehneHinten = anzahlZaehneHintenView.getProgress()+10; 92 ((TextView) findViewById(R.id.text_zaehne_hinten)).setText("" 93 + anzahlZaehneHinten); 94 95 int trittfrequenz = trittfrequenzView.getProgress()+40; 96 ((TextView) findViewById(R.id.text_trittfrequenz)).setText(Integer 97 .toString(trittfrequenz)); 98 99 BigDecimal geschwindigkeit = new BigDecimal( 100 (((double) anzahlZaehneVorne / (double) anzahlZaehneHinten)) 101 * ((double) (umfang * trittfrequenz)) * 60 / 1000000) 102 .setScale(1, RoundingMode.HALF_UP); 103 104 String einheit = "km/h"; 105 if ("mph".equals(prefs.getString("einheit", ""))) 106 { 107 geschwindigkeit = geschwindigkeit.divide(new BigDecimal("1.61"),RoundingMode.HALF_UP); 108 einheit = "mph"; 109 } 110 111 geschwindigkeitView.setText(geschwindigkeit.toString() + " " + einheit); 112 113 } 114 115 public boolean onOptionsItemSelected(MenuItem item) 116 { 117 switch (item.getItemId()) 118 { 119 case R.id.menu_preferences: 120 startActivity(new Intent(this, PreferencesActivity.class)); 121 return true; 122 123 } 124 return false; 125 } 126 127 @Override 128 protected void onResume() 129 { 130 super.onResume(); 131 132 calculate(); 133 } 134 135 }