/src/com/vilagmegvaltas/shisha/RunningSessionActivity.java

https://github.com/andyskw/Shisha-Manager · Java · 191 lines · 167 code · 22 blank · 2 comment · 22 complexity · 08a910aa7f9e208d3c094701ba6d6057 MD5 · raw file

  1. package com.vilagmegvaltas.shisha;
  2. import android.app.Activity;
  3. import android.app.KeyguardManager;
  4. import android.app.KeyguardManager.KeyguardLock;
  5. import android.content.Intent;
  6. import android.graphics.Color;
  7. import android.media.MediaPlayer;
  8. import android.os.Bundle;
  9. import android.os.PowerManager;
  10. import android.os.PowerManager.WakeLock;
  11. import android.os.SystemClock;
  12. import android.util.Log;
  13. import android.view.KeyEvent;
  14. import android.view.View;
  15. import android.view.View.OnClickListener;
  16. import android.widget.Button;
  17. import android.widget.Chronometer;
  18. import android.widget.Chronometer.OnChronometerTickListener;
  19. import android.widget.ProgressBar;
  20. import android.widget.RelativeLayout;
  21. import android.widget.Spinner;
  22. import android.widget.TextView;
  23. import com.flurry.android.FlurryAgent;
  24. import com.vilagmegvaltas.shisha.entities.Session;
  25. import com.vilagmegvaltas.shisha.utils.FlurryAPIKeyContainer;
  26. import com.vilagmegvaltas.shisha.utils.IntentManager;
  27. public class RunningSessionActivity extends Activity {
  28. /** Called when the activity is first created. */
  29. private Session session;
  30. private Chronometer cm_chronoMeter;
  31. private TextView tv_userName;
  32. private TextView tv_pleaseClick;
  33. RelativeLayout ll;
  34. private MediaPlayer mp_mediaPlayer;
  35. Button btn_endSession;
  36. Button btn_pause;
  37. private long pauseTime;
  38. private boolean started = false;
  39. KeyguardManager keyGuardManager;
  40. KeyguardLock keyGuardLock;
  41. ProgressBar pb_userprogress;
  42. @Override
  43. public void onCreate(Bundle savedInstanceState) {
  44. super.onCreate(savedInstanceState);
  45. setContentView(R.layout.activity_runningsession);
  46. session = (Session) (getIntent().getExtras().get("session"));
  47. if (session == null) {
  48. session = new Session();
  49. session.setWarnTimeOut(60 * 1000 * 5);
  50. session.addPlayer("andy");
  51. session.addPlayer("flyerz");
  52. }
  53. keyGuardManager = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE);
  54. keyGuardLock = keyGuardManager.newKeyguardLock("Shisha");
  55. mp_mediaPlayer = MediaPlayer.create(this, R.raw.timeout);
  56. cm_chronoMeter = (Chronometer) findViewById(R.id.cm_runningsession_chronometer);
  57. tv_userName = (TextView) findViewById(R.id.tv_runningsession_username);
  58. tv_pleaseClick = (TextView) findViewById(R.id.tv_runningsession_pleaseclick_descr);
  59. btn_endSession = (Button) findViewById(R.id.btn_runningsession_endsession);
  60. pb_userprogress = (ProgressBar) findViewById(R.id.pb_runningsession_userprogress);
  61. pb_userprogress.setMax(session.getWarnTimeOut() + 1000);
  62. pb_userprogress.setProgress(0);
  63. btn_endSession.setOnClickListener(new OnClickListener() {
  64. public void onClick(View v) {
  65. endSession();
  66. }
  67. });
  68. btn_pause = (Button) findViewById(R.id.btn_runningsession_pause);
  69. btn_pause.setOnClickListener(new OnClickListener() {
  70. @Override
  71. public void onClick(View v) {
  72. if (pauseTime == 0 && started) {
  73. pauseTime = SystemClock.elapsedRealtime();
  74. cm_chronoMeter.stop();
  75. btn_pause.setText(R.string.resume);
  76. tv_pleaseClick.setText(R.string.paused_infotext);
  77. } else {
  78. if (started) {
  79. cm_chronoMeter.setBase(SystemClock.elapsedRealtime()
  80. - (pauseTime - cm_chronoMeter.getBase()));
  81. cm_chronoMeter.start();
  82. pauseTime = 0;
  83. btn_pause.setText(R.string.pause);
  84. tv_pleaseClick.setText("");
  85. }
  86. }
  87. }
  88. });
  89. ll = (RelativeLayout) findViewById(R.id.rl_runningsession_host);
  90. ll.setOnClickListener(new OnClickListener() {
  91. public void onClick(View v) {
  92. pb_userprogress.setProgress(0);
  93. if (!started) {
  94. started = true;
  95. tv_pleaseClick.setText("");
  96. cm_chronoMeter.setBase(SystemClock.elapsedRealtime());
  97. cm_chronoMeter.start();
  98. } else {
  99. if (pauseTime == 0) {
  100. nextPlayer();
  101. cm_chronoMeter.setKeepScreenOn(false);
  102. }
  103. }
  104. }
  105. });
  106. cm_chronoMeter.setOnChronometerTickListener(new OnChronometerTickListener() {
  107. public void onChronometerTick(Chronometer chronometer) {
  108. long time = SystemClock.elapsedRealtime() - cm_chronoMeter.getBase();
  109. Log.d("tag", "time:" + time);
  110. pb_userprogress.setProgress( time < 1000 ? 0 : (int) (time + (1000 - time % 1000)));
  111. Log.d("tag", pb_userprogress.getProgress() + "");
  112. if (time > session.getWarnTimeOut()) {
  113. cm_chronoMeter.setTextColor(Color.RED);
  114. keyGuardLock.disableKeyguard();
  115. WakeLock screenLock = ((PowerManager) getSystemService(POWER_SERVICE))
  116. .newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
  117. | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
  118. screenLock.acquire();
  119. screenLock.release();
  120. cm_chronoMeter.setKeepScreenOn(true);
  121. if (!mp_mediaPlayer.isPlaying())
  122. mp_mediaPlayer.start();
  123. }
  124. }
  125. });
  126. tv_userName.setText(session.getInitialPlayer().getName());
  127. cm_chronoMeter.setBase(SystemClock.elapsedRealtime());
  128. cm_chronoMeter.stop();
  129. }
  130. private void nextPlayer() {
  131. long time = SystemClock.elapsedRealtime() - cm_chronoMeter.getBase();
  132. cm_chronoMeter.setTextColor(Color.WHITE);
  133. tv_userName.setText(session.next(time).getName());
  134. cm_chronoMeter.setBase(SystemClock.elapsedRealtime());
  135. }
  136. private void endSession() {
  137. if (pauseTime != 0) {
  138. cm_chronoMeter.setBase(SystemClock.elapsedRealtime()
  139. - (pauseTime - cm_chronoMeter.getBase()));
  140. }
  141. long time = SystemClock.elapsedRealtime() - cm_chronoMeter.getBase();
  142. session.next(time);
  143. cm_chronoMeter.stop();
  144. Intent statistics = IntentManager.getStatisticsIntent(this, session);
  145. finish();
  146. startActivity(statistics);
  147. }
  148. @Override
  149. public boolean onKeyDown(int keyCode, KeyEvent event) {
  150. if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
  151. // OMITTED!
  152. return true;
  153. } else if (keyCode == KeyEvent.KEYCODE_CAMERA) {
  154. nextPlayer();
  155. }
  156. return super.onKeyDown(keyCode, event);
  157. }
  158. @Override
  159. protected void onStart() {
  160. super.onStart();
  161. FlurryAgent.onStartSession(this, FlurryAPIKeyContainer.API_KEY);
  162. }
  163. @Override
  164. protected void onStop() {
  165. keyGuardLock.reenableKeyguard();
  166. super.onStop();
  167. FlurryAgent.onEndSession(this);
  168. }
  169. }