ritzelrechner

Unnamed repository; edit this file 'description' to name the repository.
git clone http://git.code.weiherhei.de/ritzelrechner.git
Log | Files | Refs

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 }