MyPedometerActivity.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package basepedo.ui;
  2. import android.app.ActivityManager;
  3. import android.content.ComponentName;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.content.ServiceConnection;
  7. import android.os.Bundle;
  8. import android.os.Handler;
  9. import android.os.IBinder;
  10. import android.os.Message;
  11. import android.os.Messenger;
  12. import android.os.RemoteException;
  13. import android.view.Menu;
  14. import android.view.MenuItem;
  15. import android.view.View;
  16. import android.widget.Button;
  17. import android.widget.TextView;
  18. import android.widget.Toast;
  19. import com.xzjmyk.pm.activity.R;
  20. import com.xzjmyk.pm.activity.ui.MainActivity;
  21. import com.xzjmyk.pm.activity.ui.base.BaseActivity;
  22. import basepedo.config.Constant;
  23. import basepedo.service.StepService;
  24. public class MyPedometerActivity extends BaseActivity implements Handler.Callback {
  25. //循环取当前时刻的步数中间的间隔时间
  26. private long TIME_INTERVAL = 500;
  27. private TextView text_step;
  28. private Messenger messenger;
  29. private Messenger mGetReplyMessenger = new Messenger(new Handler(this));
  30. private Handler delayHandler;
  31. ServiceConnection conn = new ServiceConnection() {
  32. @Override
  33. public void onServiceConnected(ComponentName name, IBinder service) {
  34. try {
  35. messenger = new Messenger(service);
  36. Message msg = Message.obtain(null, Constant.MSG_FROM_CLIENT);
  37. msg.replyTo = mGetReplyMessenger;
  38. messenger.send(msg);
  39. } catch (RemoteException e) {
  40. e.printStackTrace();
  41. }
  42. }
  43. @Override
  44. public void onServiceDisconnected(ComponentName name) {
  45. }
  46. };
  47. private Button close_step;
  48. private Button open_step;
  49. @Override
  50. public boolean handleMessage(Message msg) {
  51. switch (msg.what) {
  52. case Constant.MSG_FROM_SERVER:
  53. // 更新界面上的步数
  54. int step_num = msg.getData().getInt("step");
  55. if (step_num < 3000){
  56. text_step.setText("今天的你已经走了"+ step_num + "\t步,还不错!继续努力!");
  57. }else if (step_num < 6000 && step_num >= 3000){
  58. text_step.setText("今天的你已经走了"+ step_num + "\t步,加油!快到6000步了!");
  59. }else if (step_num > 6000 && step_num <=10000){
  60. text_step.setText("今天的你已经走了"+ step_num + "\t步,真!,快到10000步了!!");
  61. }else {
  62. text_step.setText("今天的你已经走了"+ step_num + "\t步,太棒了!天呐,你一定是用了洪荒之力吧,注意休息哦!");
  63. }
  64. delayHandler.sendEmptyMessageDelayed(Constant.REQUEST_SERVER, TIME_INTERVAL);
  65. break;
  66. case Constant.REQUEST_SERVER:
  67. try {
  68. Message msg1 = Message.obtain(null, Constant.MSG_FROM_CLIENT);
  69. msg1.replyTo = mGetReplyMessenger;
  70. messenger.send(msg1);
  71. } catch (RemoteException e) {
  72. e.printStackTrace();
  73. }
  74. break;
  75. }
  76. return false;
  77. }
  78. @Override
  79. protected void onCreate(Bundle savedInstanceState) {
  80. super.onCreate(savedInstanceState);
  81. setContentView(R.layout.activity_pedometer);
  82. init();
  83. }
  84. private void init() {
  85. text_step = (TextView) findViewById(R.id.text_step);
  86. close_step = (Button) findViewById(R.id.close_uu_step_bt);
  87. open_step = (Button) findViewById(R.id.open_uu_step_bt);
  88. if (isServiceRunning() == true){
  89. setupService();
  90. open_step.setVisibility(View.GONE);
  91. close_step.setVisibility(View.VISIBLE);
  92. }else {
  93. open_step.setVisibility(View.VISIBLE);
  94. close_step.setVisibility(View.GONE);
  95. }
  96. open_step.setOnClickListener(new View.OnClickListener() {
  97. @Override
  98. public void onClick(View v) {
  99. Intent intent = new Intent(mContext, StepService.class);
  100. bindService(intent, conn, Context.BIND_AUTO_CREATE);
  101. startService(intent);
  102. Toast.makeText(MyPedometerActivity.this, "您已开启UU运动,UU将记录您的运动步数并显示在通知栏", Toast.LENGTH_LONG).show();
  103. open_step.setVisibility(View.GONE);
  104. close_step.setVisibility(View.VISIBLE);
  105. }
  106. });
  107. delayHandler = new Handler(this);
  108. close_step.setOnClickListener(new View.OnClickListener() {
  109. @Override
  110. public void onClick(View v) {
  111. unbindService(conn);
  112. stopService(new Intent(mContext, StepService.class));
  113. Toast.makeText(MyPedometerActivity.this, "您已关闭UU运动,通知栏将不再显示您的运动步数", Toast.LENGTH_LONG).show();
  114. finish();
  115. }
  116. });
  117. }
  118. // @Override
  119. // protected void onStart() {
  120. // super.onStart();
  121. // setupService();
  122. // }
  123. //
  124. private void setupService() {
  125. Intent intent = new Intent(this, StepService.class);
  126. bindService(intent, conn, Context.BIND_AUTO_CREATE);
  127. startService(intent);
  128. }
  129. @Override
  130. protected void onResume() {
  131. super.onResume();
  132. }
  133. // @Override
  134. // public void onBackPressed() {
  135. // moveTaskToBack(true);
  136. // super.onBackPressed();
  137. // }
  138. // @Override
  139. // protected void onDestroy() {
  140. // super.onDestroy();
  141. // unbindService(conn);
  142. // finish();
  143. // }
  144. @Override
  145. public boolean onCreateOptionsMenu(Menu menu) {
  146. return super.onCreateOptionsMenu(menu);
  147. }
  148. @Override
  149. public boolean onOptionsItemSelected(MenuItem item) {
  150. if (item.getItemId() == android.R.id.home) {
  151. startActivity(new Intent(this, MainActivity.class));
  152. finish();
  153. }
  154. return super.onOptionsItemSelected(item);
  155. }
  156. @Override
  157. public void onBackPressed() {
  158. startActivity(new Intent(mContext, MainActivity.class));
  159. super.onBackPressed();
  160. finish();
  161. }
  162. private boolean isServiceRunning() { //判断UU运动服务是否已经运行
  163. ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
  164. for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
  165. if ("basepedo.service.StepService".equals(service.service.getClassName())) {
  166. return true;
  167. }
  168. }
  169. return false;
  170. }
  171. }