package com.konka.music.ui.activity;
import java.util.Calendar;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
import com.konka.music.R;
import com.konka.music.util.AlarmUtil;
import com.konka.music.util.Assist;
import com.konka.music.util.MyPreference;
import com.konka.music.util.StringHelper;
public class AlarmActivity extends SuperActivity implements OnClickListener {
public static final String TAG = "TimmingActivity";
private static int selectTime = AlarmUtil.TYPE_TUNRE_OFF;
private static int alarm_type = AlarmUtil.TYPE_STOP_MUSIC;
private TextView mViewCountDownTimer;
private View mViewTenMin;
private View mViewTwentyMin;
private View mViewThirtyMin;
private View mViewOneHour;
private View mViewOneAndHalfHour;
private View mViewTurnOff;
private View mViewCustomTime;
private View mViewExitApp;
private View mViewStopMusic;
private ImageView mViewMarkImg;
private MyCount mMyCount;
private Calendar mCalendar;
private void initView() {
mViewTurnOff = findViewById(R.id.music_alarm_turn_off);
mViewTenMin = findViewById(R.id.kg_music_alarm_list_item1);
mViewTwentyMin = findViewById(R.id.kg_music_alarm_list_item2);
mViewThirtyMin = findViewById(R.id.kg_music_alarm_list_item3);
mViewOneHour = findViewById(R.id.kg_music_alarm_list_item4);
mViewOneAndHalfHour = findViewById(R.id.kg_music_alarm_list_item5);
mViewCustomTime = findViewById(R.id.music_alarm_custom);
mViewExitApp = findViewById(R.id.music_alarm_layout_exit);
mViewStopMusic = findViewById(R.id.music_alarm_layout_stop);
}
private void initListener() {
// TODO Auto-generated method stub
//退出应用
mViewExitApp.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (alarm_type != AlarmUtil.TYPE_EXIT_APP) {
alarm_type = AlarmUtil.TYPE_EXIT_APP;
MyPreference.putPref(AlarmUtil.ALERMTYPE, alarm_type);
setViewCountTimer();
}
}
});
//停止播放
mViewStopMusic.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (alarm_type != AlarmUtil.TYPE_STOP_MUSIC) {
alarm_type = AlarmUtil.TYPE_STOP_MUSIC;
setViewCountTimer();
MyPreference.putPref(AlarmUtil.ALERMTYPE, alarm_type);
}
}
});
}
private void initData() {
mCalendar = Calendar.getInstance();
selectTime = MyPreference.getPref(AlarmUtil.SELECTTIME, AlarmUtil.TYPE_TUNRE_OFF);
alarm_type = MyPreference.getPref(AlarmUtil.ALERMTYPE, AlarmUtil.TYPE_STOP_MUSIC);
Long cur_time = System.currentTimeMillis();
Long over_time = MyPreference.getPref(AlarmUtil.TIMEOVER, cur_time);
Long left_time = over_time - cur_time;
if (left_time > 0) {
startMC(left_time, AlarmUtil.INTERVAL);
} else {
selectTime = AlarmUtil.TYPE_TUNRE_OFF;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.music_alarm_activity);
initView();
initListener();
initData();
setViewCountTimer();
setViewMarkImg();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mViewMarkImg.setVisibility(View.GONE);
switch (v.getId()) {
case R.id.music_alarm_turn_off:
selectTime = AlarmUtil.TYPE_TUNRE_OFF;
break;
case R.id.kg_music_alarm_list_item1:
selectTime = AlarmUtil.TYPE_TEN_MINUTES;
break;
case R.id.kg_music_alarm_list_item2:
selectTime = AlarmUtil.TYPE_TWENTY_MINUTES;
break;
case R.id.kg_music_alarm_list_item3:
selectTime = AlarmUtil.TYPE_THIRTY_MINUTES;
break;
case R.id.kg_music_alarm_list_item4:
selectTime = AlarmUtil.TYPE_ONE_HOUR;
break;
case R.id.kg_music_alarm_list_item5:
selectTime = AlarmUtil.TYPE_ONE_HALF_HOUR;
break;
case R.id.music_alarm_custom:
selectTime = AlarmUtil.TYPE_CUSTOM_TIME;
break;
default:
break;
}
MyPreference.putPref(AlarmUtil.SELECTTIME, selectTime);
setViewMarkImg();
setAlarm(selectTime * AlarmUtil.MULTIPLE);
startMC(selectTime * AlarmUtil.MULTIPLE, AlarmUtil.INTERVAL);
}
private void setAlarm(long time) {
Long begin_time = System.currentTimeMillis();
mCalendar.setTimeInMillis(begin_time);
mCalendar.add(Calendar.MILLISECOND, (int)time);
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(Assist.BROADCAST_ACTION_ALARM);
intent.putExtra(AlarmUtil.ALERMTYPE, alarm_type);
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), sender);
MyPreference.putPref(AlarmUtil.TIMEOVER, begin_time + time);
}
private void setViewMarkImg() {
switch (selectTime) {
case AlarmUtil.TYPE_TUNRE_OFF:
mViewMarkImg = (ImageView) mViewTurnOff.findViewById(R.id.music_alarm_item_checked);
break;
case AlarmUtil.TYPE_TEN_MINUTES:
mViewMarkImg = (ImageView) mViewTenMin.findViewById(R.id.music_alarm_item_checked);
break;
case AlarmUtil.TYPE_TWENTY_MINUTES:
mViewMarkImg = (ImageView) mViewTwentyMin.findViewById(R.id.music_alarm_item_checked);
break;
case AlarmUtil.TYPE_THIRTY_MINUTES:
mViewMarkImg = (ImageView) mViewThirtyMin.findViewById(R.id.music_alarm_item_checked);
break;
case AlarmUtil.TYPE_ONE_HOUR:
mViewMarkImg = (ImageView) mViewOneHour.findViewById(R.id.music_alarm_item_checked);
break;
case AlarmUtil.TYPE_ONE_HALF_HOUR:
mViewMarkImg = (ImageView) mViewOneAndHalfHour.findViewById(R.id.music_alarm_item_checked);
break;
case AlarmUtil.TYPE_CUSTOM_TIME:
mViewMarkImg = (ImageView) mViewCustomTime.findViewById(R.id.music_alarm_item_checked);
break;
default:
break;
}
mViewMarkImg.setVisibility(View.VISIBLE);
}
private void setViewCountTimer() {
if (mViewCountDownTimer != null)
mViewCountDownTimer.setVisibility(View.GONE);
if (alarm_type == AlarmUtil.TYPE_STOP_MUSIC) {
mViewCountDownTimer = (TextView) mViewStopMusic.findViewById(R.id.music_alarm_timer);
} else {
mViewCountDownTimer = (TextView) mViewExitApp.findViewById(R.id.music_alarm_timer);
}
mViewCountDownTimer.setVisibility(View.VISIBLE);
mViewCountDownTimer.setText(R.string.music_alarm_init_countdown);
}
private void startMC(long int1, long int2) {
if (mMyCount != null) {
mMyCount.cancel();
}
mMyCount = new MyCount(int1, int2 );
mMyCount.start();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (mMyCount != null)
mMyCount.cancel();
finish();
}
class MyCount extends CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
// mViewMarkImg.setVisibility(View.GONE);
selectTime = 0;
setViewMarkImg();
setViewCountTimer();
// mViewMarkImg.setVisibility(View.VISIBLE);
// mViewCountDownTimer.setText("00:00");
}
@Override
public void onTick(long millisUntilFinished) {
mViewCountDownTimer.setText(StringHelper.generateTime(millisUntilFinished));
}
}
}