Android定时关机

这篇博客介绍了如何在Android应用中实现定时关机的功能。通过TimePicker设置关机时间,利用服务判断当前时间是否达到设定的关机时间,并在达到时调用系统关机命令。该方法需要手机root权限才能执行关机操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一个小项目练练手吧,,大多数内容都是参考别人的。

1.设置关机时间。设置时间用的是TimePicker ,

      tp_time1 = (TimePicker) findViewById(R.id.tp_time1);
      tp_time1.setIs24HourView(true);

      Button btn_settime1=(Button) findViewById(R.id.btn_settime1);

      btn_settime1.setOnClickListener(new OnClickListener() {

    @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Integer hour1 = tp_time1.getCurrentHour();
Integer minute1 = tp_time1.getCurrentMinute();

String hourOff = hour1.toString();
String minuteOff = minute1.toString();

Intent intent = new Intent();
intent.putExtra("hourOff", hourOff);
intent.putExtra("minuteOff", minuteOff);

setResult(1, intent);

}

2.启动一个服务来获取当前手机系统的世界,并将设置的时间参数传给服务,来判断当前时间是否与设置的时间相同

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == 1) {
hourOff1 = data.getStringExtra("hourOff");
minuteOff1 = data.getStringExtra("minuteOff");
hourOn1 = data.getStringExtra("hourOn");
minuteOn1 = data.getStringExtra("minuteOn");
if (hourOff1 != null && minuteOff1 != null) {
tv_time1.setText(hourOff1 + ":" + minuteOff1 + "-" + hourOn1
+ ":" + minuteOn1);
}
}

}

if (hourOff1 != null && minuteOff1 != null) {
int hour1 = Integer.valueOf(hourOff1);
int minute1 = Integer.valueOf(minuteOff1);
long setTimeMillis1 = timeToMillis(hour1, minute1);
serviceIntent1.putExtra("settime1", setTimeMillis1);
if (sw_start1.isChecked()) {
startService(serviceIntent1);
}else{
stopService(serviceIntent1);
}
}else{
serviceIntent1.putExtra("settime1", 0);
if(sw_start1.isChecked())

startService(serviceIntent1);
}
}

其中,sw_start1是开关控件,timeToMillis()方法是将获取到的时间转换成毫秒

 

3.在服务中来判断当前时间是否为关机时间

public void onStart(Intent intent, int startId) {
getLastTimeSet();
setTimeMillis1 = intent.getLongExtra("settime1", getLastTimeSet1());
new Thread() {
public void run() {
//while (true) {
long currentTimeMillis = getCurrentTimeMillis();
if (currentTimeMillis == setTimeMillis1) {
powerOff();
}
//}
};
}.start();
super.onStart(intent, startId);
}

获取当前时间的方法:

public long getCurrentTimeMillis() {
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
return timeToMillis(hour, minute);
}

     关机的方法

public void powerOff() {
try {
// /需要root权限后才能用这个方法
System.out.println("执行关机 ");
Process pro = Runtime.getRuntime().exec(
new String[] { "su", "-c", "reboot -p" });
pro.waitFor();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("执行关机失败");
e.printStackTrace();
}
}

代码量交少,主要的关机功能是参考的网上的,但是需要手机root后才能用。。。一直想找不用root的关机方法,但是没找到,不知道有没有。不足之处还请指教

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值