安卓手机怎么设置自动触发
1. android 后台运行 并定时触发任务
Android中的定时任务一般有两种实现方式,一种是使用Java
API里的Timer类,另一种是使用Android的Alarm机制。
这两种方式在多数情况下都能实现类似的效果,但Timer有一个明显的短板,它并不太适用与那些需要长期在后台运行的定时任务。As we
know,为了能让电池更加耐用,每种手机都会有自己的休眠策略:比如手机不用的时候智能的断开wifi连接,根据光线强弱自动调节屏幕亮度,根据手机长时间无操作时自动的让CPU进入到休眠状态等,当进入休眠状态时,这就有可能导致Timer中的定时任务无法正常运行。而Alarn机制则不存在这种情况,它具有唤醒CPU的功能,即可以保证每次需要执行定时任务的时候CPU都能正常工作。需要注意的是,这里的唤醒CPU和唤醒屏幕不是同一个概念,不能混淆。
这里我们只说Alarm机制的方式,代码如下:
public class AutoUpdateService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
// 每次服务启动的时候调用
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(new Runnable() {
@Override
public void run() {
doSomething();//这是定时所执行的任务
}
}).start();
AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
int anHour =8 * 60 * 60 * 1000;// 这是8小时的毫秒数 为了少消耗流量和电量,8小时自动更新一次
long triggerAtTime = SystemClock.elapsedRealtime() + anHour;
Intent intent2 = new Intent(this, AutoUpdateReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent2, 0);
manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pi);</span>
return super.onStartCommand(intent, flags, startId);
}
注意这里的AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);此处实现了定时任务。
首先我们通过调用Context的getSystemService()方法来获取AlarmManager的实例,这里需要传入的参数是ALARM_SERVICE.
接下来调用AlarmManager的set()方法就可以设置一个定时任务了,比如设定一个任务在5秒钟后执行,就可以写成 long
triggerAtTime = SystemClock.elapsedRealtime() + 5*1000;
manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime,
pi);
其中第一个参数是一个整形参数,用于指定AlarmManager的工作类型,有四种值可以选,分别是
ELAPSED_REALTIME、ELAPSED_REALTIME_WAKEUP、RTC和RTC_WAKEUP。其中ELAPSED_REALTIME表示让定时任务的触发时间从系统开机开始算起,但不会唤醒CPU。ELAPSED_REALTIME_WAKEUP同样表示让定时任务的触发时间从系统开机开始算起,但会唤醒CPU。RTC表示让定时任务的触发时间从1970年1月1日0点开始算起,但不会唤醒CPU。RTC_WAKEUP同样表示让定时任务的触发时间从1970年1月1日0点开始算起,但会唤醒CPU。使用SystemClock.elapsedRealtime()方法可以获取到系统开机至今所经历时间的毫秒数,使用System.currentTimeMillis()方法可以获取到1970年1月1日0点至今所经历时间的毫秒数。
然后看一下第二个参数,这个参数就好理解多了,就是定时任务触发的时间,以毫秒为单位。如果第一个参数使用的是ELAPSED_REALTIME或ELAPSED_REALTIME_WAKEUP,则这里传入开机至今的时间再加上延迟执行的时间。如果第一个参数使用的是RTC或RTC_WAKEUP,则这里传入1970年1月1日0点至今的时间再加上延迟执行的时间。
第三个参数是一个PendingIntent,这里我们一般会调用getBroadcast()方法来获取一个能够执行广播的PendingIntent。这样当定时任务被触发的时候,广播接收器的onReceive()方法就可以得到执行。
当然设定一个任务在10秒钟后执行还可以写成:
longtriggerAtTime =
System.currentTimeMillis() + 10 * 1000;
manager.set(AlarmManager.RTC_WAKEUP,triggerAtTime,
pendingIntent);
然后创建PendingIntent指定处理定时任务的广播接收器AutoUpdateReceiver。
import service.AutoUpdateService;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class AutoUpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, AutoUpdateService.class);
context.startService(i);
}
}
当启动AutoUpdateService后,就会在onStartCommand()方法里设定一个定时任务,这样每8个小时AutoUpdateReceiver的onReceive()方法就会得到执行,这样就又会启动AutoUpdateService服务,形成了永久的循环,保证服务每隔一段时间就会启动一次,这样就完成了一个长期在后台运行的服务。
我们在哪里启动服务呢,这要看具体的情况了,一般的话,当我们打开程序的时候启动一次就好了
比如写在Activity的onCrete()方法里
Intent
intent =new Intent(this,AutoUpdateService.class);
startService(intent);
最后,既然我们用到了服务和广播接收器,那么就得在AndroidManifest.xml中注册才行。
<service android:name="service.AutoUpdateService" ></service>
<receiver android:name="receiver.AutoUpdateReceiver"
></receiver>
本文参考资料:《第一行代码》
2. 安卓手机如何指定APP开机自动启动到前台
测试项目的时候实在一个android系统的车载终端上进行的,因为没有终端没屏幕操作起来比较麻烦,所以干脆把用到的app写成开机自动运行,就可以了。感觉不是很困难,我就答应了大师兄的这个要求,然后就在网上查询相关的代码。最终找到了这个可以完美运行,不知道是不是有bug或者有更好的方法,希望大家指点。 首先说一下我所知道的这个代码是如何实现的。android系统在开机的过程中(可能是最后)会发送一个广播android.intent.action.BOOT_COMPLETED,这个广播的意思就是设备告诉我们“”我已经开机了!”然后我们可以在代码中用一个广播接受者来接受这个广播,然后触发开启app应用的操作。首先在你的工程上建一个广播接受的类来:
3. 安卓手机如何设置开机自动运行指定的软件
这个你可以在应用设置里面设置自动启动的 就在设置里面就可以找到
4. 安卓手机怎么关闭软件开机自启动
关闭手机中自动启动的软件需要在设置中设定,打开手机桌面上的设置功能。
5. 如何实现安卓的按钮自动触发,
使用
layout.addview(
imagebutton
,
layoutparams
).
根据你的button的数量判断layoutparams的属性,放在具体的哪个地方。
6. 安卓手机怎么样设置软件自动运行
安卓手机只有设置软件后台自启动,没有自动运行软件的能力,哪些软件允许自启动,哪些软件不允许后台启动可以设置,在自启动管理里面设置
7. 安卓手机怎么设置来电自动接听
材料准备:安卓智能手机一部。
具体步骤如下:
1、首先打开手机主页面,找到“手机"选项并点击进入。
8. android 怎么样让按钮自动执行点击事件
你向按钮发WM_COMMAND吧
或者用mouse_event模拟鼠标点击
*...看错...原来是Android...楼主请无视我的回复...
9. 手机能不能设置自动开关机怎么设置
一、定时自动开机
此功能需要在主机主板的BIOS中设定,并且你的主板的高级电源管理设置必须支持这个功能,不过现在大多数的主板完全支持。(这里选择DELL Vostro 200为演示机)
1.启动系统按DEL,进入BIOS,然后选中 "Power Management Setup" (电源管理设置)
2.回车进入,在电源窗口中找到“Remote Wake Up”,通过方向键选择“On”,(由于不同的主板的BIOS不一样,有些主板的设置可能与上面的有一点点不同,但只要记住在电源管理中找到"Wake Up"字样的就行了,因为这是设置定时开机的选项) 。然后在“Auto Power On” 项中选择“Enabled”
3.在上图中的“Auto Power On Date”选项中,其键值设为0,为每天定时开机。而“Auto Power On Time”选项则是表示开机时间,自己选择,上图的自动开机时间为每天的凌晨“00:00:00”。全部设置好后,按F10,保存并重新启动即可。
二、定时自动关机
1. 我们要求系统到达指定时间内就会自动关机,还是选用操作系统自带的任务计划程序和shoudown.exe程序。单击“开始”→“运行”或者是直接快捷键( Win + R ) →在命令栏中输入”taskschd.msc”,然后“确定”!
2.在“任务计划程序”的右边选择“创建基本任务”。首先定义名称:PC Off(随便定义)。
3.点击“触发器”里 “新建”,弹出的新建触发器里,选择“每天”,我们要求是每天18:00自动关机,然后点击“确定”。
4.点击“操作”,然后“新建”,在新窗口中创建一个启动程序“shutdown.exe”,而参数添加“-s”是执行后退出,然后点击“确定”。
5.完成所有的参数后,点击创建任务的窗口的“确定”,然后弹出一个对话框,把对应的用户名和密码填写正确,然后点击“确定”即可。
6.到指定时间后就会有显示一分钟后关闭的提示,如下图,然后一分钟后系统就自动关闭。
7.我们设定了机器每天都是在指定的时间内开机的,但星期六星期天我们不需要开着机器,那我们可以通过在自定义多计划任务,计划在开机后10分钟后关闭机器。