package basepedo.ui; import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.Messenger; import android.os.RemoteException; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.xzjmyk.pm.activity.R; import com.xzjmyk.pm.activity.ui.MainActivity; import com.xzjmyk.pm.activity.ui.base.BaseActivity; import basepedo.config.Constant; import basepedo.service.StepService; public class MyPedometerActivity extends BaseActivity implements Handler.Callback { //循环取当前时刻的步数中间的间隔时间 private long TIME_INTERVAL = 500; private TextView text_step; private Messenger messenger; private Messenger mGetReplyMessenger = new Messenger(new Handler(this)); private Handler delayHandler; ServiceConnection conn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { try { messenger = new Messenger(service); Message msg = Message.obtain(null, Constant.MSG_FROM_CLIENT); msg.replyTo = mGetReplyMessenger; messenger.send(msg); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName name) { } }; private Button close_step; private Button open_step; @Override public boolean handleMessage(Message msg) { switch (msg.what) { case Constant.MSG_FROM_SERVER: // 更新界面上的步数 int step_num = msg.getData().getInt("step"); if (step_num < 3000){ text_step.setText("今天的你已经走了"+ step_num + "\t步,还不错!继续努力!"); }else if (step_num < 6000 && step_num >= 3000){ text_step.setText("今天的你已经走了"+ step_num + "\t步,加油!快到6000步了!"); }else if (step_num > 6000 && step_num <=10000){ text_step.setText("今天的你已经走了"+ step_num + "\t步,真!,快到10000步了!!"); }else { text_step.setText("今天的你已经走了"+ step_num + "\t步,太棒了!天呐,你一定是用了洪荒之力吧,注意休息哦!"); } delayHandler.sendEmptyMessageDelayed(Constant.REQUEST_SERVER, TIME_INTERVAL); break; case Constant.REQUEST_SERVER: try { Message msg1 = Message.obtain(null, Constant.MSG_FROM_CLIENT); msg1.replyTo = mGetReplyMessenger; messenger.send(msg1); } catch (RemoteException e) { e.printStackTrace(); } break; } return false; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pedometer); init(); } private void init() { text_step = (TextView) findViewById(R.id.text_step); close_step = (Button) findViewById(R.id.close_uu_step_bt); open_step = (Button) findViewById(R.id.open_uu_step_bt); if (isServiceRunning() == true){ setupService(); open_step.setVisibility(View.GONE); close_step.setVisibility(View.VISIBLE); }else { open_step.setVisibility(View.VISIBLE); close_step.setVisibility(View.GONE); } open_step.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(mContext, StepService.class); bindService(intent, conn, Context.BIND_AUTO_CREATE); startService(intent); Toast.makeText(MyPedometerActivity.this, "您已开启UU运动,UU将记录您的运动步数并显示在通知栏", Toast.LENGTH_LONG).show(); open_step.setVisibility(View.GONE); close_step.setVisibility(View.VISIBLE); } }); delayHandler = new Handler(this); close_step.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { unbindService(conn); stopService(new Intent(mContext, StepService.class)); Toast.makeText(MyPedometerActivity.this, "您已关闭UU运动,通知栏将不再显示您的运动步数", Toast.LENGTH_LONG).show(); finish(); } }); } // @Override // protected void onStart() { // super.onStart(); // setupService(); // } // private void setupService() { Intent intent = new Intent(this, StepService.class); bindService(intent, conn, Context.BIND_AUTO_CREATE); startService(intent); } @Override protected void onResume() { super.onResume(); } // @Override // public void onBackPressed() { // moveTaskToBack(true); // super.onBackPressed(); // } // @Override // protected void onDestroy() { // super.onDestroy(); // unbindService(conn); // finish(); // } @Override public boolean onCreateOptionsMenu(Menu menu) { return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { startActivity(new Intent(this, MainActivity.class)); finish(); } return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { startActivity(new Intent(mContext, MainActivity.class)); super.onBackPressed(); finish(); } private boolean isServiceRunning() { //判断UU运动服务是否已经运行 ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if ("basepedo.service.StepService".equals(service.service.getClassName())) { return true; } } return false; } }