Java 使用android手机闲置时,如何设置警报?

Java 使用android手机闲置时,如何设置警报?,java,android,alarm,Java,Android,Alarm,嗨,我想在手机未被触碰时设置闹钟。如果近2分钟未触摸屏幕,则会发出警报声。我该怎么做?有人能帮我吗? 提前谢谢 即使应用程序/设备处于空闲状态,您也可以创建播放声音 扩展Activity类的onUserInteraction方法以重置计时器并重新启动两分钟。传递下面的代码。这将发现您的设备处于空闲状态的时间 idle.java Handler hl_timeout = new Handler(); /** Called when the activity is first created. *

嗨,我想在手机未被触碰时设置闹钟。如果近2分钟未触摸屏幕,则会发出警报声。我该怎么做?有人能帮我吗? 提前谢谢

即使应用程序/设备处于空闲状态,您也可以创建播放声音

扩展Activity类的onUserInteraction方法以重置计时器并重新启动两分钟。

传递下面的代码。这将发现您的设备处于空闲状态的时间

idle.java

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!");

}
}