package com.ouwenjie.note.activity; import android.app.AlarmManager; import android.app.KeyguardManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.TextView; import com.ouwenjie.note.R; import com.ouwenjie.note.db.NoteDatabaseHelper; import com.ouwenjie.note.model.BaseNote; import com.ouwenjie.note.receiver.NoteAlarmReceiver; import com.ouwenjie.note.helper.MyActivityManager; import com.ouwenjie.note.utils.TimeUtils; import com.umeng.analytics.MobclickAgent; import java.text.SimpleDateFormat; import java.util.Calendar; public class AlarmActivity extends AppCompatActivity implements View.OnClickListener { private TextView contentTv; private Button closeBtn; private Button laterBtn; private TextView oneSentence; private BaseNote note; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); setContentView(R.layout.activity_alarm); getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);// 淡化status bar 和 navigation bar // 突破锁屏 KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock(""); keyguardLock.disableKeyguard(); initWidget(); initData(); } private void initData() { long dbID = getIntent().getLongExtra(BaseNote.KEY_DB_ID,-1); if(dbID >= 0) { note = new NoteDatabaseHelper().get(dbID); } if(note != null) { contentTv.setText(note.getContent()); } } private void initWidget() { contentTv = (TextView) findViewById(R.id.alarm_activity_content_tv); closeBtn = (Button) findViewById(R.id.alarm_activity_close_btn); laterBtn = (Button) findViewById(R.id.alarm_activity_later_btn); oneSentence = (TextView) findViewById(R.id.alarm_activity_one_tv); closeBtn.setOnClickListener(this); laterBtn.setOnClickListener(this); } @Override protected void onResume() { super.onResume(); MobclickAgent.onPageStart("AlarmActivity"); // 统计页面(仅有Activity的应用中SDK自动调用,不需要单独写) MobclickAgent.onResume(this); } @Override protected void onPause() { super.onPause(); MobclickAgent.onPageEnd("AlarmActivity"); // (仅有Activity的应用中SDK自动调用,不需要单独写)保证 onPageEnd 在onPause 之前调用,因为 onPause 中会保存信息 MobclickAgent.onPause(this); } /** * 开启一个闹钟 */ private void setAlarmReceiver(long time){ Intent receiverIntent = new Intent(this.getApplicationContext(), NoteAlarmReceiver.class); long dbId = note.getId(); receiverIntent.putExtra(BaseNote.KEY_DB_ID,dbId ); PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), note.getAlarmReqCode(), receiverIntent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent); } /** * 取消闹钟 */ private void cancelAlarmReceiver(){ Intent intent = new Intent(this.getApplicationContext(), NoteAlarmReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), note.getAlarmReqCode(), intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); am.cancel(pendingIntent);/* 取消 */ } @Override public void onClick(View v) { switch (v.getId()){ case R.id.alarm_activity_close_btn: MyActivityManager.getInstance().finishActivity(EditNoteActivity.class); if(MyActivityManager.getInstance().checkActivityExist(MainActivity.class)){ MyActivityManager.getInstance().finishActivity(MainActivity.class); } // 关闭闹钟 cancelAlarmReceiver(); // 改变 NOTE 的状态 note.setAlarmState(BaseNote.NOTE_ALARM_STATE_OLD); note.setAlarmDate(""); note.save(); Intent intent = new Intent(AlarmActivity.this,EditNoteActivity.class); intent.putExtra(BaseNote.KEY_DB_ID,note.getId()); startActivity(intent); finish(); break; case R.id.alarm_activity_later_btn: Calendar calendar = Calendar.getInstance(); long time = calendar.getTimeInMillis()+10*60*1000; String timeStr = TimeUtils.getTime(time,new SimpleDateFormat("yyyy-MM-dd HH:mm")); note.setAlarmDate(timeStr); note.save(); setAlarmReceiver(time); finish(); break; default: break; } } }