| .. | .. |
|---|
| 1 | 1 | package com.jwipc.nodka_reboot_under.utils; |
|---|
| 2 | 2 | |
|---|
| 3 | 3 | import java.io.BufferedReader; |
|---|
| 4 | +import java.io.DataInputStream; |
|---|
| 4 | 5 | import java.io.DataOutputStream; |
|---|
| 5 | 6 | import java.io.File; |
|---|
| 6 | 7 | import java.io.FileNotFoundException; |
|---|
| .. | .. |
|---|
| 11 | 12 | import java.lang.reflect.Method; |
|---|
| 12 | 13 | import java.util.ArrayList; |
|---|
| 13 | 14 | import java.util.Calendar; |
|---|
| 14 | | -import java.util.List; |
|---|
| 15 | 15 | |
|---|
| 16 | 16 | import android.app.ActivityManager; |
|---|
| 17 | 17 | import android.content.Context; |
|---|
| 18 | | -import android.content.Intent; |
|---|
| 19 | 18 | import android.content.SharedPreferences; |
|---|
| 20 | 19 | import android.content.SharedPreferences.Editor; |
|---|
| 21 | | -import android.hardware.spirit.AlarmPowerItem; |
|---|
| 22 | 20 | import android.hardware.spirit.AlarmPowerManager; |
|---|
| 23 | 21 | import android.jwipc.spirit.SpiritAlarmManager; |
|---|
| 24 | | -import android.net.ConnectivityManager; |
|---|
| 25 | | -import android.net.NetworkInfo; |
|---|
| 26 | | -import android.net.NetworkInfo.DetailedState; |
|---|
| 22 | +import android.os.Build; |
|---|
| 27 | 23 | import android.os.PowerManager; |
|---|
| 28 | | -import android.os.RemoteException; |
|---|
| 29 | 24 | import android.text.format.DateFormat; |
|---|
| 30 | | -import android.util.Log; |
|---|
| 31 | 25 | |
|---|
| 26 | +import com.jwipc.nodka_reboot_under.MyApplication; |
|---|
| 32 | 27 | |
|---|
| 33 | 28 | public class Utils { |
|---|
| 34 | 29 | |
|---|
| .. | .. |
|---|
| 67 | 62 | Thread thread_set_time_reboot = null; |
|---|
| 68 | 63 | Thread thread_STOP_WATCH_DOG = null; |
|---|
| 69 | 64 | Thread thread_AlarmPower_Repeat_Poweroff = null; |
|---|
| 70 | | - |
|---|
| 71 | | - |
|---|
| 65 | + |
|---|
| 72 | 66 | |
|---|
| 73 | 67 | |
|---|
| 74 | 68 | public Utils(Context context) { |
|---|
| .. | .. |
|---|
| 80 | 74 | sharedPreferences = context.getSharedPreferences(shapre, context.MODE_PRIVATE); |
|---|
| 81 | 75 | editor = sharedPreferences.edit(); |
|---|
| 82 | 76 | } |
|---|
| 83 | | - |
|---|
| 84 | 77 | |
|---|
| 85 | 78 | public void shut_Down() |
|---|
| 86 | 79 | { |
|---|
| .. | .. |
|---|
| 250 | 243 | return; |
|---|
| 251 | 244 | } |
|---|
| 252 | 245 | |
|---|
| 253 | | - |
|---|
| 254 | | - AlarmPowerManager mAlarmPowerManager = new AlarmPowerManager(); |
|---|
| 255 | | - |
|---|
| 256 | | - mAlarmPowerManager.removeAllalarmPower(); |
|---|
| 257 | | - |
|---|
| 246 | + if (isSpiritVersion()) { |
|---|
| 247 | + new AlarmPowerManager().removeAllalarmPower(); |
|---|
| 248 | + setFileState("0", "/sys/class/minix-rtc/MCURTCDATA"); |
|---|
| 249 | + } else { |
|---|
| 250 | + MyApplication.getApplication().getAndroidAPI().alarm_removeAllalarmPower(); |
|---|
| 251 | + setFileState("0", "/sys/class/minix-rtc/minix_RTC_DATA"); |
|---|
| 252 | + } |
|---|
| 253 | + |
|---|
| 258 | 254 | editor.putString(repeat_alarm_poweron_time, ""); |
|---|
| 259 | 255 | editor.putString(repeat_alarm_poweroff_time, ""); |
|---|
| 260 | 256 | editor.commit(); |
|---|
| 261 | | - |
|---|
| 262 | | - setFileState("0", "/sys/class/minix-rtc/MCURTCDATA"); |
|---|
| 263 | | - |
|---|
| 257 | + |
|---|
| 264 | 258 | if(active) |
|---|
| 265 | 259 | { |
|---|
| 266 | 260 | if(repeat.equals("true")) |
|---|
| 267 | 261 | { |
|---|
| 268 | | - SpiritAlarmManager mSpiritAlarmManager = new SpiritAlarmManager(); |
|---|
| 269 | | - mSpiritAlarmManager.setSpiritAlarmWithDay(1, hms_on[0], hms_on[1]); |
|---|
| 270 | | - |
|---|
| 271 | | - setFileState("1", "/sys/class/minix-rtc/MCURTCDATA"); |
|---|
| 272 | | - |
|---|
| 262 | + if (isSpiritVersion()) { |
|---|
| 263 | + new SpiritAlarmManager().setSpiritAlarmWithDay(1, hms_on[0], hms_on[1]); |
|---|
| 264 | + setFileState("1", "/sys/class/minix-rtc/MCURTCDATA"); |
|---|
| 265 | + } else { |
|---|
| 266 | + MyApplication.getApplication().getAndroidAPI().alarm_setSpiritAlarmWithDay(1, hms_on[0], hms_on[1]); |
|---|
| 267 | + setFileState("1", "/sys/class/minix-rtc/minix_RTC_DATA"); |
|---|
| 268 | + } |
|---|
| 269 | + |
|---|
| 273 | 270 | editor.putString(repeat_alarm_poweron_time, hms_on[0]+":"+hms_on[1]+":"+0); |
|---|
| 274 | 271 | editor.putString(repeat_alarm_poweroff_time, hms_off[0]+":"+hms_off[1]+":"+0); |
|---|
| 275 | 272 | editor.commit(); |
|---|
| .. | .. |
|---|
| 284 | 281 | editor.commit(); |
|---|
| 285 | 282 | |
|---|
| 286 | 283 | Calendar calendar = Calendar.getInstance(); |
|---|
| 287 | | - |
|---|
| 288 | | - // 改接口 setSpiritAlarmWithDay() |
|---|
| 289 | | - mAlarmPowerManager.CreatOneAlarmPower(calendar.get(Calendar.YEAR)+"", |
|---|
| 290 | | - calendar.get(Calendar.MONTH)+1+"", |
|---|
| 291 | | - calendar.get(Calendar.DAY_OF_MONTH)+"", |
|---|
| 292 | | - hms_on[0]+"", |
|---|
| 293 | | - hms_on[1]+"", |
|---|
| 294 | | - hms_on[2]+"", |
|---|
| 295 | | - hms_off[0]+"", |
|---|
| 296 | | - hms_off[1]+"", |
|---|
| 297 | | - hms_off[2]+"", |
|---|
| 298 | | - hms_on[0]>12? "0":"1", |
|---|
| 299 | | - hms_off[0]>12? "0":"1"); |
|---|
| 300 | | - |
|---|
| 301 | | - mAlarmPowerManager.updateAlarmPowerActive(0, active+""); |
|---|
| 302 | | - |
|---|
| 284 | + |
|---|
| 285 | + if (isSpiritVersion()) { |
|---|
| 286 | + // 改接口 setSpiritAlarmWithDay() |
|---|
| 287 | + new AlarmPowerManager().CreatOneAlarmPower(calendar.get(Calendar.YEAR)+"", |
|---|
| 288 | + calendar.get(Calendar.MONTH)+1+"", |
|---|
| 289 | + calendar.get(Calendar.DAY_OF_MONTH)+"", |
|---|
| 290 | + hms_on[0]+"", |
|---|
| 291 | + hms_on[1]+"", |
|---|
| 292 | + hms_on[2]+"", |
|---|
| 293 | + hms_off[0]+"", |
|---|
| 294 | + hms_off[1]+"", |
|---|
| 295 | + hms_off[2]+"", |
|---|
| 296 | + hms_on[0]>12? "0":"1", |
|---|
| 297 | + hms_off[0]>12? "0":"1"); |
|---|
| 298 | + |
|---|
| 299 | + new AlarmPowerManager().updateAlarmPowerActive(0, active+""); |
|---|
| 300 | + } else { |
|---|
| 301 | + MyApplication.getApplication().getAndroidAPI().alarm_creatOneAlarmPower(calendar.get(Calendar.YEAR)+"", |
|---|
| 302 | + calendar.get(Calendar.MONTH)+1+"", |
|---|
| 303 | + calendar.get(Calendar.DAY_OF_MONTH)+"", |
|---|
| 304 | + hms_on[0]+"", |
|---|
| 305 | + hms_on[1]+"", |
|---|
| 306 | + hms_on[2]+"", |
|---|
| 307 | + hms_off[0]+"", |
|---|
| 308 | + hms_off[1]+"", |
|---|
| 309 | + hms_off[2]+"", |
|---|
| 310 | + hms_on[0]>12? "0":"1", |
|---|
| 311 | + hms_off[0]>12? "0":"1"); |
|---|
| 312 | + |
|---|
| 313 | + MyApplication.getApplication().getAndroidAPI().alarm_updateAlarmPowerActive(0, active+""); |
|---|
| 314 | + } |
|---|
| 303 | 315 | } |
|---|
| 304 | 316 | } |
|---|
| 305 | 317 | } |
|---|
| .. | .. |
|---|
| 666 | 678 | |
|---|
| 667 | 679 | return re; |
|---|
| 668 | 680 | } |
|---|
| 681 | + |
|---|
| 682 | + public String getRootCmdSilent(String cmd) { |
|---|
| 683 | + DataOutputStream dos = null; |
|---|
| 684 | + DataInputStream dis = null; |
|---|
| 685 | + Process process = null; |
|---|
| 686 | + try { |
|---|
| 687 | + process = Runtime.getRuntime().exec("su"); |
|---|
| 688 | + dos = new DataOutputStream(process.getOutputStream()); |
|---|
| 689 | + dis = new DataInputStream(process.getInputStream()); |
|---|
| 690 | + dos.write(cmd.getBytes()); |
|---|
| 691 | + dos.flush(); |
|---|
| 692 | + dos.close(); |
|---|
| 693 | + process.waitFor(); |
|---|
| 694 | + return getStrFromDataInPutStream(dis); |
|---|
| 695 | + } catch (Exception e) { |
|---|
| 696 | + e.printStackTrace(); |
|---|
| 697 | + return null; |
|---|
| 698 | + } finally { |
|---|
| 699 | + if (dos != null) { |
|---|
| 700 | + try { |
|---|
| 701 | + dos.close(); |
|---|
| 702 | + } catch (IOException e) { |
|---|
| 703 | + e.printStackTrace(); |
|---|
| 704 | + } |
|---|
| 705 | + } |
|---|
| 706 | + if (dis != null) { |
|---|
| 707 | + try { |
|---|
| 708 | + dis.close(); |
|---|
| 709 | + } catch (IOException e) { |
|---|
| 710 | + e.printStackTrace(); |
|---|
| 711 | + } |
|---|
| 712 | + } |
|---|
| 713 | + if (process != null) { |
|---|
| 714 | + process.destroy(); |
|---|
| 715 | + } |
|---|
| 716 | + } |
|---|
| 717 | + } |
|---|
| 718 | + |
|---|
| 719 | + private String getStrFromDataInPutStream(DataInputStream dos) { |
|---|
| 720 | + if (null == dos) { |
|---|
| 721 | + return ""; |
|---|
| 722 | + } |
|---|
| 723 | + int BUFFER_SIZE = 512; |
|---|
| 724 | + byte[] buffer = new byte[BUFFER_SIZE]; |
|---|
| 725 | + StringBuilder result = new StringBuilder(); |
|---|
| 726 | + try { |
|---|
| 727 | + while (true) { |
|---|
| 728 | + int read = dos.read(buffer); |
|---|
| 729 | + if (read > 0) { |
|---|
| 730 | + result.append(new String(buffer, 0, read)); |
|---|
| 731 | + } |
|---|
| 732 | + if (read < BUFFER_SIZE) { |
|---|
| 733 | + break; |
|---|
| 734 | + } |
|---|
| 735 | + } |
|---|
| 736 | + } catch (Exception e) { |
|---|
| 737 | + e.printStackTrace(); |
|---|
| 738 | + } |
|---|
| 739 | + return result.toString(); |
|---|
| 740 | + } |
|---|
| 669 | 741 | |
|---|
| 670 | | - |
|---|
| 671 | | - |
|---|
| 672 | | - |
|---|
| 742 | + public boolean isSpiritVersion() { |
|---|
| 743 | + return Build.VERSION.SDK_INT <= 25; |
|---|
| 744 | + } |
|---|
| 745 | + |
|---|
| 746 | + |
|---|
| 673 | 747 | } |
|---|