嗨我想在未触摸手机时设置闹钟。如果屏幕未被触摸近2分钟,则会发出警报声。我怎样才能做到这一点?有谁能够帮我? 提前致谢。
答案 0 :(得分:5)
将AlarmService传递给以下代码。这将找到您的设备闲置的时间。
<强> 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();
}
}
希望这会对你有所帮助。
答案 1 :(得分:3)
即使应用程序/设备处于空闲状态,您也可以创建AlarmService来播放声音
将活动类的onUserInteraction方法扩展为重置计时器并再次启动两分钟。
答案 2 :(得分:2)
如果我正确理解您的问题,则需要在某个时间间隔内没有发生任何用户交互时触发警报。并且其中一个主要要求是,您的活动没有在前台运行。所以onUserInteraction的情况对你不起作用。 在这种情况下,如果您创建自己的AccessibilityService,仍然可以接收有关每个用户操作的更新。
将此添加到您的清单以声明服务:
<service android:name=".MyAccessibilityService">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
</service>
您的服务实施应该与此类似:
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!");
}
}
现在,只要用户触摸屏幕,您就会触发onAccessibilityEvent(),并且可以重新启动计时器,启动闹钟。
但是,这种方法有一个缺点:为了使其正常工作,您需要转到手机设置 - &gt;可访问性并在那里启用您的应用程序否则,系统将无法启动您的服务。