package com.jwipc.nodka_alarmpower; import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; import java.net.ServerSocket; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import android.annotation.SuppressLint; import android.app.ActionBar; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager.NameNotFoundException; import android.hardware.spirit.AlarmPowerItem; import android.hardware.spirit.AlarmPowerManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.RemoteException; import android.text.format.DateFormat; import android.util.Log; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; import android.view.View.OnHoverListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.LinearLayout.LayoutParams; import android.widget.NumberPicker; import android.widget.TextView; import android.widget.TimePicker; import android.widget.TimePicker.OnTimeChangedListener; import android.provider.Settings; import com.nodka.api.alarm.SpiritAlarmItem; public class MainActivity extends Activity{ TextView tv_reboot_time,tv_poweron,tv_shutdown; Button bn_reboot_now,bn_shutdown_now,bn_alarm_poweron,bn_alarm_shutdown,bn_reboot_time,bn_watch_dog_stop, bn_cancel_input; CheckBox checkBox_alarm_power_repeat; TimePicker mTimePicker; public static Handler handler; final int reboot_now = 1; final int shutdown_now = 2; final int set_AlarmPower_on = 3; final int set_AlarmPower_off = 4; public static final int set_check_AlarmPower_repeat = 5; public static final int set_Alarm_Reboot = 6; public static final int set_Alarm_poweron_repeat = 7; public static final int set_Alarm_poweroff_repeat = 8; public static final int set_check_Alarm_Reboot_repeat = 9; final int watch_dog = 10; final int cancel_input = 11; String time_alarm_reboot = ""; String time_alarm_power_on = ""; String time_alarm_power_off = ""; String time_alarm_power_repeat = ""; boolean time_Alarm_Reboot_repeat = false; String intent_button = "intent_button"; String intent_button_AlarmPower = "intent_button_AlarmPower"; String intent_button_Reboot = "intent_button_Reboot"; public final String MCUEnableWdt = "/sys/class/minix-mcu/MCUEnableWdt"; @SuppressLint("NewApi") @Override protected void onCreate(Bundle arg0) { // TODO Auto-generated method stub super.onCreate(arg0); setContentView(R.layout.main); findViewById(); handler(); init_data(); actionbar(); } private void findViewById() { tv_reboot_time = (TextView) findViewById(R.id.tv_reboot_time); tv_poweron = (TextView) findViewById(R.id.tv_poweron); tv_shutdown = (TextView) findViewById(R.id.tv_shutdown); bn_reboot_now = (Button) findViewById(R.id.bn_reboot_now); bn_shutdown_now = (Button) findViewById(R.id.bn_shutdown_now); bn_alarm_poweron = (Button) findViewById(R.id.bn_alarm_poweron); bn_alarm_shutdown = (Button) findViewById(R.id.bn_alarm_shutdown); bn_reboot_time = (Button) findViewById(R.id.bn_reboot_time); bn_watch_dog_stop = (Button) findViewById(R.id.bn_watch_dog_stop); bn_cancel_input = (Button) findViewById(R.id.bn_cancel_input); checkBox_alarm_power_repeat = (CheckBox) findViewById(R.id.checkBox_alarm_power_repeat); mTimePicker = (TimePicker) findViewById(R.id.mTimePicker); mTimePicker.setIs24HourView(true); bn_reboot_now.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent it = new Intent(); it.setAction("android.intent.action.auto_power_shut"); it.putExtra("power_type", 1); sendBroadcast(it); } }); bn_shutdown_now.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent it = new Intent(); it.setAction("android.intent.action.auto_power_shut"); it.putExtra("power_type", 2); sendBroadcast(it); } }); bn_alarm_poweron.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub time_alarm_power_on = get_TimePicker_time(); Intent it_AlarmPower = new Intent(); it_AlarmPower.setAction("android.intent.action.auto_power_shut"); it_AlarmPower.putExtra("power_type", 3); it_AlarmPower.putExtra("power_time", time_alarm_power_on); it_AlarmPower.putExtra("shut_time", time_alarm_power_off); it_AlarmPower.putExtra("repeat", checkBox_alarm_power_repeat.isChecked() ? "true" : "false"); it_AlarmPower.putExtra("effective", true); sendBroadcast(it_AlarmPower); Message msg = new Message(); msg.what = set_AlarmPower_on; msg.obj = time_alarm_power_on; handler.sendMessage(msg); } }); bn_alarm_shutdown.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub time_alarm_power_off = get_TimePicker_time(); Intent it_AlarmPower = new Intent(); it_AlarmPower.setAction("android.intent.action.auto_power_shut"); it_AlarmPower.putExtra("power_type", 3); it_AlarmPower.putExtra("power_time", time_alarm_power_on); it_AlarmPower.putExtra("shut_time", time_alarm_power_off); it_AlarmPower.putExtra("repeat", checkBox_alarm_power_repeat.isChecked() ? "true" : "false"); it_AlarmPower.putExtra("effective", true); sendBroadcast(it_AlarmPower); Message msg = new Message(); msg.what = set_AlarmPower_off; msg.obj = time_alarm_power_off; handler.sendMessage(msg); } }); bn_reboot_time.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub time_alarm_reboot = get_TimePicker_time(); Intent it_Reboot = new Intent(); it_Reboot.setAction("android.intent.action.auto_power_shut"); it_Reboot.putExtra("power_type", 4); it_Reboot.putExtra("power_time", time_alarm_reboot); it_Reboot.putExtra("shut_time", time_alarm_reboot); it_Reboot.putExtra("repeat", checkBox_alarm_power_repeat.isChecked() ? "true" : "false"); it_Reboot.putExtra("effective", true); sendBroadcast(it_Reboot); Message msg = new Message(); msg.what = set_Alarm_Reboot; msg.obj = time_alarm_reboot; handler.sendMessage(msg); } }); bn_watch_dog_stop.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(); intent.setAction("android.intent.action.STOP_APK_FEED"); sendBroadcast(intent); } }); bn_cancel_input.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent it_AlarmPower = new Intent(); it_AlarmPower.setAction("android.intent.action.auto_power_shut"); it_AlarmPower.putExtra("power_type", 3); it_AlarmPower.putExtra("power_time", time_alarm_power_on); it_AlarmPower.putExtra("shut_time", time_alarm_power_off); it_AlarmPower.putExtra("effective", false); sendBroadcast(it_AlarmPower); Intent it_Reboot = new Intent(); it_Reboot.setAction("android.intent.action.auto_power_shut"); it_Reboot.putExtra("power_type", 4); it_Reboot.putExtra("power_time", time_alarm_reboot); it_Reboot.putExtra("shut_time", time_alarm_reboot); it_Reboot.putExtra("effective", false); sendBroadcast(it_Reboot); Message msg = new Message(); msg.what = cancel_input; handler.sendMessage(msg); } }); checkBox_alarm_power_repeat.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton arg0, boolean arg1) { // TODO Auto-generated method stub time_alarm_power_repeat = arg1 ? "true" : "false"; Intent it_AlarmPower = new Intent(); it_AlarmPower.setAction("android.intent.action.auto_power_shut"); it_AlarmPower.putExtra("power_type", 3); it_AlarmPower.putExtra("repeat", arg1 ? "true" : "false"); it_AlarmPower.putExtra("power_time", time_alarm_power_on); it_AlarmPower.putExtra("shut_time", time_alarm_power_off); it_AlarmPower.putExtra("effective", true); sendBroadcast(it_AlarmPower); time_Alarm_Reboot_repeat = arg1; Intent it_Reboot = new Intent(); it_Reboot.setAction("android.intent.action.auto_power_shut"); it_Reboot.putExtra("power_type", 4); it_Reboot.putExtra("repeat", time_Alarm_Reboot_repeat ? "true" : "false"); it_Reboot.putExtra("effective", true); sendBroadcast(it_Reboot); } }); } private String get_TimePicker_time() { String time = ""; if(mTimePicker != null) { time = mTimePicker.getHour()+":"+mTimePicker.getMinute()+":"+0; } return time; } private void handler() { handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch (msg.what) { case set_Alarm_Reboot: tv_reboot_time.setText(set_cross((String)msg.obj)); break; case set_Alarm_poweron_repeat: tv_poweron.setText(set_cross((String)msg.obj)); time_alarm_power_on = (String)msg.obj; break; case set_Alarm_poweroff_repeat: tv_shutdown.setText(set_cross((String)msg.obj)); time_alarm_power_off = (String)msg.obj; break; case set_AlarmPower_on: tv_poweron.setText(set_cross((String)msg.obj)); time_alarm_power_on = (String)msg.obj; break; case set_AlarmPower_off: tv_shutdown.setText(set_cross((String)msg.obj)); time_alarm_power_off = (String)msg.obj; break; case set_check_AlarmPower_repeat: checkBox_alarm_power_repeat.setChecked((Boolean) msg.obj); break; case cancel_input: tv_reboot_time.setText(getString(R.string.empty)); tv_poweron.setText(getString(R.string.empty)); tv_shutdown.setText(getString(R.string.empty)); time_alarm_power_on = ""; time_alarm_power_off = ""; checkBox_alarm_power_repeat.setChecked(false); break; } } }; } private void init_data() { sendBroadcast(new Intent("android.intent.action.NDJ_GET_ALARM_REBOOT")); try { if (isSpiritVersion()) { AlarmPowerManager mAlarmPowerManager = new AlarmPowerManager(); List list_AlarmPowerItem = mAlarmPowerManager.getAlarmPowerList(); if(list_AlarmPowerItem != null) { if(list_AlarmPowerItem.size() > 0) { AlarmPowerItem mAlarmPowerItem = list_AlarmPowerItem.get(0); Message msg_on = new Message(); msg_on.what = set_AlarmPower_on; msg_on.obj = mAlarmPowerItem.getAlarmPowerOnHour() + ":" + mAlarmPowerItem.getAlarmPowerOnMinute() + ":" + mAlarmPowerItem.getAlarmPowerOnSecond(); time_alarm_power_on = (String) msg_on.obj; handler.sendMessage(msg_on); Message msg_off = new Message(); msg_off.what = set_AlarmPower_off; msg_off.obj = mAlarmPowerItem.getAlarmPowerOffHour() + ":" + mAlarmPowerItem.getAlarmPowerOffMinute() + ":" + mAlarmPowerItem.getAlarmPowerOffSecond(); time_alarm_power_off = (String) msg_off.obj; handler.sendMessage(msg_off); /*Message msg_check_AlarmPower_repeat = new Message(); msg_check_AlarmPower_repeat.what = set_check_AlarmPower_repeat; msg_check_AlarmPower_repeat.obj = mAlarmPowerItem.getAlarmPowerRepeat().equals("true") ? true : false; time_alarm_power_repeat = mAlarmPowerItem.getAlarmPowerRepeat(); handler.sendMessage(msg_check_AlarmPower_repeat);*/ } } } else { List spiritAlarmItems = MyApplication.getApplication().getNodkaAPI().alarm_getAlarmPowerList(); if (spiritAlarmItems != null) { if (spiritAlarmItems.size() > 0) { SpiritAlarmItem mSpiritAlarmItem = spiritAlarmItems.get(0); Message msg_on = new Message(); msg_on.what = set_AlarmPower_on; msg_on.obj = mSpiritAlarmItem.getAlarmPowerOnHour() + ":" + mSpiritAlarmItem.getAlarmPowerOnMinute() + ":" + mSpiritAlarmItem.getAlarmPowerOnSecond(); time_alarm_power_on = (String) msg_on.obj; handler.sendMessage(msg_on); Message msg_off = new Message(); msg_off.what = set_AlarmPower_off; msg_off.obj = mSpiritAlarmItem.getAlarmPowerOffHour() + ":" + mSpiritAlarmItem.getAlarmPowerOffMinute() + ":" + mSpiritAlarmItem.getAlarmPowerOffSecond(); time_alarm_power_off = (String) msg_off.obj; handler.sendMessage(msg_off); /*Message msg_check_AlarmPower_repeat = new Message(); msg_check_AlarmPower_repeat.what = set_check_AlarmPower_repeat; msg_check_AlarmPower_repeat.obj = mAlarmPowerItem.getAlarmPowerRepeat().equals("true") ? true : false; time_alarm_power_repeat = mAlarmPowerItem.getAlarmPowerRepeat(); handler.sendMessage(msg_check_AlarmPower_repeat);*/ } } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void setFileState(String state, String file) { FileWriter fw; try { fw = new FileWriter(file); fw.write(state); fw.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } @SuppressLint("NewApi") private void actionbar() { getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setStatusBarColor(getColor(R.color.blue_p)); getWindow().getDecorView().setSystemUiVisibility(0); ActionBar actionBar = getActionBar(); if (actionBar != null) { actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); //Enable自定义的View actionBar.setCustomView(R.layout.actionbar_custom);//设置自定义的布局:actionbar_custom } TextView action_bar_title = (TextView) findViewById(R.id.action_bar_title); Button bn_back = (Button) findViewById(R.id.bn_back); final LinearLayout layout_bn_back = (LinearLayout) findViewById(R.id.layout_bn_back); try { //action_bar_title.setText(getResources().getString(getPackageManager().getPackageInfo(getPackageName(), 0).applicationInfo.labelRes)+" "+getPackageManager().getPackageInfo(getPackageName(), 0).versionName); action_bar_title.setText(getString(R.string.app_name)+" "+getPackageManager().getPackageInfo(getPackageName(), 0).versionName); } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } bn_back.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub finish(); } }); bn_back.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View arg0, boolean arg1) { // TODO Auto-generated method stub if(arg1) { layout_bn_back.setBackgroundColor(getColor(R.color.mid_white)); } else { layout_bn_back.setBackground(null); } } }); bn_back.setOnHoverListener(new OnHoverListener() { @Override public boolean onHover(View arg0, MotionEvent event) { // TODO Auto-generated method stub if(event.getAction() == MotionEvent.ACTION_HOVER_ENTER) { layout_bn_back.setBackgroundColor(getColor(R.color.mid_white)); } else if(event.getAction() == MotionEvent.ACTION_HOVER_EXIT) { layout_bn_back.setBackground(null); } return false; } }); } private String set_cross(String time) { if(time.contains(":")) { time = time.replaceAll(":", "\\ :\\ "); } return time; } @SuppressLint("NewApi") private void resizeTimerPicker(TimePicker tp) { List npList = findNumberPicker(tp); for (NumberPicker np : npList) { LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(200, 250); params.setMargins(10, 10, 10, 10); np.setLayoutParams(params); } } private List findNumberPicker(ViewGroup viewGroup) { List npList = new ArrayList(); View child = null; if (null != viewGroup) { for (int i = 0; i < viewGroup.getChildCount(); i++) { child = viewGroup.getChildAt(i); if (child instanceof NumberPicker) { npList.add((NumberPicker)child); } else if (child instanceof NumberPicker) { npList.add((NumberPicker)child); } else if (child instanceof LinearLayout) { List result = findNumberPicker((ViewGroup)child); if (result.size() > 0) { return result; } } } } return npList; } public boolean isSpiritVersion() { return Build.VERSION.SDK_INT <= 25; } }