package com.lamps.lamps.activity; import android.app.TimePickerDialog; import android.content.DialogInterface; import android.content.SharedPreferences; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AlertDialog; import android.view.View; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Switch; import android.widget.TextView; import android.widget.TimePicker; import com.lamps.lamps.R; import com.lamps.lamps.util.CommandUtils; import com.lamps.lamps.util.ControlLight; import java.util.Calendar; /** * Created by stew on 16/9/6. * mail: [email protected] */ public class TimingActivity extends BaseActivity implements View.OnClickListener { private TextView startAPM; private TextView endAPM; private TextView startTimeTv; private TextView endTimeTv; private Boolean switchOpen = false; private String[] time = {"0", "0", "0", "0"}; private SharedPreferences.Editor editor; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_timing); initView(); } private void initView() { /** * 保存设置 */ SharedPreferences sharedPreferences = getSharedPreferences("timing", MODE_PRIVATE); editor = sharedPreferences.edit(); ImageView back = (ImageView) findViewById(R.id.setting_back); TextView save = (TextView) findViewById(R.id.save); Switch aSwitch = (Switch) findViewById(R.id.switch_timing); startAPM = (TextView) findViewById(R.id.start_apm); endAPM = (TextView) findViewById(R.id.end_apm); startTimeTv = (TextView) findViewById(R.id.start_time_tv); endTimeTv = (TextView) findViewById(R.id.end_time_tv); LinearLayout startTime = (LinearLayout) findViewById(R.id.start_time); LinearLayout endTime = (LinearLayout) findViewById(R.id.end_time); if (back == null || save == null || startTime == null || endTime == null || aSwitch == null) { return; } back.setOnClickListener(this); save.setOnClickListener(this); startTime.setOnClickListener(this); endTime.setOnClickListener(this); if (sharedPreferences.getBoolean("checkState", false)) { aSwitch.setChecked(true); switchOpen = true; } aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { switchOpen = isChecked; } }); setStartTimeTv(Integer.parseInt(sharedPreferences.getString("startH", "00")), Integer.parseInt(sharedPreferences.getString("startM", "00"))); setEndTimeTv(Integer.parseInt(sharedPreferences.getString("endH", "00")), Integer.parseInt(sharedPreferences.getString("endM", "00"))); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.setting_back: { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getResources().getString(R.string.remind)); builder.setMessage(getResources().getString(R.string.remind_save)); builder.setPositiveButton(getString(R.string.sure), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); builder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.show(); } break; case R.id.save: { sendTime(); } break; case R.id.start_time: { showStartTimePickerDialog(); } break; case R.id.end_time: { showEndTimePickerDialog(); } break; } } private void sendTime() { if (switchOpen) { final AlertDialog dialog = new AlertDialog.Builder(this).create(); dialog.setTitle(getResources().getString(R.string.remind)); dialog.setMessage(getResources().getString(R.string.wait)); dialog.show(); Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY); int min = c.get(Calendar.MINUTE); String hourStr = hour + ""; String minStr = min + ""; if (hour < 10) { hourStr = "0" + hour + ""; } if (min < 10) { minStr = "0" + min + ""; } ControlLight.sendTime(CommandUtils.TIMING_CURRENT, hourStr, minStr); startAPM.postDelayed(new Runnable() { @Override public void run() { ControlLight.sendTime(CommandUtils.TIMING_ON_1, time[0], time[1]); startAPM.postDelayed(new Runnable() { @Override public void run() { ControlLight.sendTime(CommandUtils.TIMING_ON_2, time[2], time[3]); dialog.cancel(); finishThis(); } }, 1000); } }, 1000); } else { ControlLight.sendOrder(CommandUtils.TIMING_OFF); finishThis(); } } private void finishThis() { editor.putString("startH", time[0]); editor.putString("startM", time[1]); editor.putString("endH", time[2]); editor.putString("endM", time[3]); editor.putBoolean("checkState", switchOpen); editor.apply(); finish(); } private void showStartTimePickerDialog() { Calendar calendar = Calendar.getInstance(); new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { setStartTimeTv(hourOfDay, minute); } }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true).show(); } private void showEndTimePickerDialog() { Calendar calendar = Calendar.getInstance(); new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { setEndTimeTv(hourOfDay, minute); } }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true).show(); } private void setStartTimeTv(int hourOfDay, int minute) { if (hourOfDay >= 12) { startAPM.setText("PM"); } else { startAPM.setText("AM"); } String newH = null; String newM = null; if (hourOfDay < 10) { newH = "0" + hourOfDay; } else { newH = hourOfDay + ""; } if (minute < 10) { newM = "0" + minute; } else { newM = minute + ""; } String tvH = null; if (hourOfDay > 12) { tvH = (hourOfDay - 12) + ""; if ((hourOfDay - 12) < 10) { tvH = "0" + (hourOfDay - 12) + ""; } } else { tvH = (hourOfDay) + ""; if (hourOfDay < 10) { tvH = "0" + (hourOfDay) + ""; } } startTimeTv.setText(tvH + ":" + newM); time[0] = newH; time[1] = newM; } private void setEndTimeTv(int hourOfDay, int minute) { if (hourOfDay >= 12) { endAPM.setText("PM"); } else { endAPM.setText("AM"); } String newH = null; String newM = null; if (hourOfDay < 10) { newH = "0" + hourOfDay; } else { newH = hourOfDay + ""; } if (minute < 10) { newM = "0" + minute; } else { newM = minute + ""; } String tvH = null; if (hourOfDay > 12) { tvH = (hourOfDay - 12) + ""; if ((hourOfDay - 12) < 10) { tvH = "0" + (hourOfDay - 12) + ""; } } else { tvH = (hourOfDay) + ""; if (hourOfDay < 10) { tvH = "0" + (hourOfDay) + ""; } } endTimeTv.setText(tvH + ":" + newM); time[2] = newH; time[3] = newM; } }