MyPedometerActivity.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package basepedo.ui;
  2. import android.app.ActivityManager;
  3. import android.app.NotificationManager;
  4. import android.content.ComponentName;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.content.ServiceConnection;
  8. import android.os.Bundle;
  9. import android.os.Handler;
  10. import android.os.IBinder;
  11. import android.os.Message;
  12. import android.os.Messenger;
  13. import android.os.RemoteException;
  14. import android.view.Menu;
  15. import android.view.MenuItem;
  16. import android.widget.TextView;
  17. import com.baidu.android.pushservice.PushManager;
  18. import com.xzjmyk.pm.activity.MyApplication;
  19. import com.xzjmyk.pm.activity.R;
  20. import com.xzjmyk.pm.activity.ui.base.BaseActivity;
  21. import com.xzjmyk.pm.activity.ui.me.SettingActivity;
  22. import com.xzjmyk.pm.activity.util.PreferenceUtils;
  23. import basepedo.config.Constant;
  24. import basepedo.service.StepService;
  25. /**
  26. * Created by FANGlh on 2016/12/30.
  27. */
  28. public class MyPedometerActivity extends BaseActivity implements Handler.Callback {
  29. //循环取当前时刻的步数中间的间隔时间
  30. private long TIME_INTERVAL = 500;
  31. private TextView text_step;
  32. private Messenger messenger;
  33. private Messenger mGetReplyMessenger = new Messenger(new Handler(this));
  34. private Handler delayHandler;
  35. private String uustep_service_name = "basepedo.service.StepService";
  36. public static String UU_STEP_NOTICE = "UUSTEPNOTICE";
  37. ServiceConnection conn = new ServiceConnection() {
  38. @Override
  39. public void onServiceConnected(ComponentName name, IBinder service) {
  40. try {
  41. messenger = new Messenger(service);
  42. Message msg = Message.obtain(null, Constant.MSG_FROM_CLIENT);
  43. msg.replyTo = mGetReplyMessenger;
  44. messenger.send(msg);
  45. } catch (RemoteException e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. @Override
  50. public void onServiceDisconnected(ComponentName name) {
  51. }
  52. };
  53. @Override
  54. public boolean handleMessage(Message msg) {
  55. switch (msg.what) {
  56. case Constant.MSG_FROM_SERVER:
  57. // 更新界面上的步数
  58. int step_num = msg.getData().getInt("step");
  59. if (step_num < 2000){
  60. text_step.setText("今天的你已经走了"+ step_num + "\t步,继续锻炼运动喔!");
  61. }
  62. else if (step_num < 3000 && step_num >= 2000){
  63. text_step.setText("今天的你已经走了"+ step_num + "\t步,还不错!继续努力!");
  64. }else if (step_num < 6000 && step_num >= 3000){
  65. text_step.setText("今天的你已经走了"+ step_num + "\t步,加油!快到6000步了!");
  66. }else if (step_num > 6000 && step_num <=10000){
  67. text_step.setText("今天的你已经走了"+ step_num + "\t步,真!,快到10000步了!!");
  68. }else {
  69. text_step.setText("今天的你已经走了"+ step_num + "\t步,太棒了!天呐,你一定是用了洪荒之力吧,注意休息哦!");
  70. }
  71. delayHandler.sendEmptyMessageDelayed(Constant.REQUEST_SERVER, TIME_INTERVAL);
  72. break;
  73. case Constant.REQUEST_SERVER:
  74. try {
  75. Message msg1 = Message.obtain(null, Constant.MSG_FROM_CLIENT);
  76. msg1.replyTo = mGetReplyMessenger;
  77. messenger.send(msg1);
  78. } catch (RemoteException e) {
  79. e.printStackTrace();
  80. }
  81. break;
  82. }
  83. return false;
  84. }
  85. @Override
  86. protected void onCreate(Bundle savedInstanceState) {
  87. super.onCreate(savedInstanceState);
  88. setContentView(R.layout.activity_pedometer);
  89. init();
  90. PreferenceUtils.putInt(MyPedometerActivity.UU_STEP_NOTICE, 1);
  91. PushManager.resumeWork(MyApplication.getInstance());
  92. }
  93. private void init() {
  94. text_step = (TextView) findViewById(R.id.text_step);
  95. delayHandler = new Handler(this);
  96. setupService();
  97. NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  98. manager.cancelAll();
  99. }
  100. private void setupService() {
  101. Intent intent = new Intent(mContext, StepService.class);
  102. bindService(intent, conn, Context.BIND_AUTO_CREATE);
  103. startService(intent);
  104. }
  105. @Override
  106. protected void onResume() {
  107. super.onResume();
  108. }
  109. @Override
  110. public boolean onCreateOptionsMenu(Menu menu) {
  111. return super.onCreateOptionsMenu(menu);
  112. }
  113. @Override
  114. public boolean onOptionsItemSelected(MenuItem item) {
  115. if (item.getItemId() == android.R.id.home) {
  116. if (isServiceRunning(uustep_service_name)){
  117. unbindService(conn);
  118. startService(new Intent(mContext,StepService.class));
  119. }
  120. startActivity(new Intent(mContext, SettingActivity.class));
  121. }
  122. return super.onOptionsItemSelected(item);
  123. }
  124. @Override
  125. public void onBackPressed() {
  126. if (isServiceRunning(uustep_service_name)){
  127. unbindService(conn);
  128. startService(new Intent(mContext, StepService.class));
  129. }
  130. startActivity(new Intent(mContext, SettingActivity.class));
  131. super.onBackPressed();
  132. }
  133. private boolean isServiceRunning(String servicename) { //判断UU运动服务是否已经运行
  134. ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
  135. for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
  136. if (servicename.equals(service.service.getClassName())) {
  137. return true;
  138. }
  139. }
  140. return false;
  141. }
  142. }