Java 使用android手机闲置时,如何设置警报?
嗨,我想在手机未被触碰时设置闹钟。如果近2分钟未触摸屏幕,则会发出警报声。我该怎么做?有人能帮我吗? 提前谢谢 即使应用程序/设备处于空闲状态,您也可以创建播放声音 扩展Activity类的onUserInteraction方法以重置计时器并重新启动两分钟。传递下面的代码。这将发现您的设备处于空闲状态的时间 idle.javaJava 使用android手机闲置时,如何设置警报?,java,android,alarm,Java,Android,Alarm,嗨,我想在手机未被触碰时设置闹钟。如果近2分钟未触摸屏幕,则会发出警报声。我该怎么做?有人能帮我吗? 提前谢谢 即使应用程序/设备处于空闲状态,您也可以创建播放声音 扩展Activity类的onUserInteraction方法以重置计时器并重新启动两分钟。传递下面的代码。这将发现您的设备处于空闲状态的时间 idle.java Handler hl_timeout = new Handler(); /** Called when the activity is first created. *
Handler hl_timeout = new Handler();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try{
hl_timeout.postDelayed(DoOnTimeOut, 15000);
}catch(Exception e)
{
e.printStackTrace();
}
}
// Toast
Thread DoOnTimeOut = new Thread() {
public void run() {
try{
Toast.makeText(getApplicationContext(), "System is idle", Toast.LENGTH_LONG).show();
}catch(Exception e)
{
e.printStackTrace();
}
}
};
@Override
public void onUserInteraction()
{
super.onUserInteraction();
//Remove any previous callback
try{
hl_timeout.removeCallbacks(DoOnTimeOut);
hl_timeout.postDelayed(DoOnTimeOut, 15000);
}catch(Exception e)
{
e.printStackTrace();
}
}
希望这对您有所帮助。如果我正确理解了您的问题,您需要在某个时间间隔内没有发生任何用户交互时触发警报。其中一个主要要求是,在前台没有运行您的活动。所以onUserInteraction的案例不适合你。 在这种情况下,如果您创建自己的AccessibilityService,您仍然可以收到每个用户操作的更新 将此项添加到清单中以声明服务:
<service android:name=".MyAccessibilityService">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
</service>
现在,无论用户何时触摸屏幕,都会触发onAccessibilityEvent(),并能够重新启动计时器,启动警报
然而,这种方法有一个缺点:为了使其工作,您需要转到电话设置->可访问性,并在那里启用您的应用程序。否则,系统将不会启动您的服务。您是否有权检测用户两分钟内未触摸屏幕的情况?-这似乎很棘手:你的意思是说像屏幕保护程序吗?不,不是那样。我的意思是,当我的应用程序闲置30秒时,我想设置警报。就这样。
public class MyAccessibilityService extends AccessibilityService
{
@Override
public void onServiceConnected() {
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
// we are interested in all types of accessibility events
info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
// we want to receive events in a certain interval
info.notificationTimeout = 100;
setServiceInfo(info);
Log.e("ALEX", "service connected!");
}
@Override
public void onAccessibilityEvent(AccessibilityEvent arg0)
{
Log.e("ALEX", "Event happened!");
}
}