【问题标题】:Time Event Listener时间事件监听器
【发布时间】:2012-09-19 20:32:29
【问题描述】:

我的问题:我如何让我的应用程序在特定时间做某事?特别是在技术上没有运行的情况下(可能)。最佳实践?事件监听器?等等……

扩展:我对 Android 开发还很陌生。我想构建一个调度应用程序,它可以在预定时间控制手机的某些功能。因此,假设我在应用程序中安排在 3:00 从响铃更改为振动,现在是 2:00。那么如何在 3:00 时捕获系统时间以运行该更改?

我不确定是否有更多信息有用。在我真正开始开发它之前,我只是想立即设计它,所以我正在寻找最佳实践以及如何在应用程序在后台运行或根本不运行时运行事件侦听器(如果这是可能的)。

【问题讨论】:

    标签: android events time


    【解决方案1】:

    您可以像这样使用pendingIntentBroadCastReceiver

    Calendar cal = Calendar.getInstance();
    Intent activate = new Intent(context, Alarm.class);
    AlarmManager alarms ;
    PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, activate, 0);
    alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    cal.set(Calendar.HOUR_OF_DAY, hour);
    cal.set(Calendar.MINUTE, minute);
    cal.set(Calendar.SECOND, 00);
    alarms.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), alarmIntent);
    

    然后是广播接收器:

    public class Alarm extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
          MediaPlayer mp = MediaPlayer.create(context, R.raw.ferry_sound);
          mp.start();
          PowerManager pm = (PowerManager)     context.getSystemService(Context.POWER_SERVICE);
          PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag");
          wl.acquire();
          Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
          long[] s = { 0, 100, 10, 500, 10, 100, 0, 500, 10, 100, 10, 500 };
          vibrator.vibrate(s, -1);
       }
    }
    

    不要忘记在您的AndroidManifest.xml 中包含这些权限:

    ....
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    ....
    

    和应用标签中的广播接收器:

    <receiver  android:process=":remote" android:name="Alarm" />
    

    【讨论】:

      【解决方案2】:

      不要忘记权限:

          ....
          <uses-permission android:name="android.permission.WAKE_LOCK"/>
          <uses-permission android:name="android.permission.VIBRATE"/>
          ....
          AND broadcast receiver in application tag:        
          <receiver android:process=":remote" android:name="Alarm" />
        ....
      

      谢谢

      【讨论】:

        猜你喜欢
        • 2012-05-13
        • 2020-03-06
        • 1970-01-01
        • 2023-03-14
        • 2014-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多