【问题标题】:HMS Awareness Kit - Single AwarenessBarrier Instance - Multiple day codes or time periodHMS Awareness Kit - Single AwarenessBarrier Instance - 多天代码或时间段
【发布时间】:2021-04-06 10:12:16
【问题描述】:

我们希望对多天代码或时间段使用单个 Awareness Barrier 实例。但是找不到传递方法的参数, duringTimePeriod(), duringPeriodOfWeek(), inSunriseOrSunsetPeriod()

【问题讨论】:

    标签: huawei-mobile-services huawei-developers


    【解决方案1】:

    通过查看您的用例,您可以使用 AwarenessBarrier 类的 or(AwarenessBarrier awarenessBarrier) 方法:

    https://developer.huawei.com/consumer/en/doc/development/HMSCore-References-V5/awareness-barrier-awarenessbarrier-0000001050164120-V5

    String timeBarrierLabel = "一天中的障碍";

    BarrierUpdateRequest.Builder builder = new BarrierUpdateRequest.Builder();

    AwarenessBarrier periodOfWeekBarrier1 = TimeBarrier.duringPeriodOfWeek(TimeBarrier.WEDNESDAY_CODE,TimeZone.getDefault(), 9 * oneHourMilliSecond, 20 * oneHourMilliSecond);

    AwarenessBarrier periodOfWeekBarrier2 = TimeBarrier.duringPeriodOfWeek(TimeBarrier.WEDNESDAY_CODE||,TimeZone.getDefault(), 9 * oneHourMilliSecond, 20 * oneHourMilliSecond);

    BarrierUpdateRequest 请求 = 构建器。

    addBarrier(timeBarrierLabel, AwarenessBarrier.or(periodOfWeekBarrier1,periodOfWeekBarrier2) ,).build();

    【讨论】:

      【解决方案2】:

      您可以根据时间要求设置TimeBarrier并添加,例如

      @Override
      public void onClick(View v) {
          long oneHourMilliSecond = 60 * 60 * 1000L;
          switch (v.getId()) {
              case R.id.add_timeBarrier_inSunriseOrSunsetPeriod:
                  if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                      return;
                  }
                  AwarenessBarrier sunsetBarrier = TimeBarrier.inSunriseOrSunsetPeriod(TimeBarrier.SUNSET_CODE,
                          -oneHourMilliSecond, oneHourMilliSecond);
                  Utils.addBarrier(this, IN_SUNRISE_OR_SUNSET_PERIOD_BARRIER_LABEL,
                          sunsetBarrier, mPendingIntent);
                  break;
              case R.id.add_timeBarrier_duringPeriodOfDay:
                  if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                      return;
                  }
                  AwarenessBarrier periodOfDayBarrier = TimeBarrier.duringPeriodOfDay(TimeZone.getDefault(),
                          11 * oneHourMilliSecond, 12 * oneHourMilliSecond);
                  Utils.addBarrier(this, DURING_PERIOD_OF_DAT_BARRIER_LABEL, periodOfDayBarrier,
                          mPendingIntent);
                  break;
              case R.id.add_timeBarrier_duringTimePeriod:
                  long currentTimeStamp = System.currentTimeMillis();
                  long tenSecondsMillis = 10 * 1000L;
                  AwarenessBarrier timePeriodBarrier = TimeBarrier.duringTimePeriod(currentTimeStamp,
                          currentTimeStamp + tenSecondsMillis);
                  Utils.addBarrier(this, DURING_TIME_PERIOD_BARRIER_LABEL,
                          timePeriodBarrier, mPendingIntent);
                  break;
              case R.id.add_timeBarrier_duringPeriodOfWeek:
                  AwarenessBarrier periodOfWeekBarrier = TimeBarrier.duringPeriodOfWeek(TimeBarrier.MONDAY_CODE,
                          TimeZone.getDefault(), 9 * oneHourMilliSecond, 10 * oneHourMilliSecond);
                  Utils.addBarrier(this, DURING_PERIOD_OF_WEEK_BARRIER_LABEL,
                          periodOfWeekBarrier, mPendingIntent);
                  break;
              case R.id.add_timeBarrier_inTimeCategory:
                  AwarenessBarrier inTimeCategoryBarrier = TimeBarrier.inTimeCategory(TimeBarrier.TIME_CATEGORY_WEEKEND);
                  Utils.addBarrier(this, IN_TIME_CATEGORY_LABEL, inTimeCategoryBarrier, mPendingIntent);
                  break;
              case R.id.delete_barrier:
                  Utils.deleteBarrier(this, mPendingIntent);
                  break;
              default:
                  break;
          }
      
      
       public static void addBarrier(Context context, final String label, AwarenessBarrier barrier, PendingIntent pendingIntent) {
              BarrierUpdateRequest.Builder builder = new BarrierUpdateRequest.Builder();
              // When the status of the registered barrier changes, pendingIntent is triggered.
              // label is used to uniquely identify the barrier. You can query a barrier by label and delete it.
              BarrierUpdateRequest request = builder.addBarrier(label, barrier, pendingIntent).build();
              Awareness.getBarrierClient(context).updateBarriers(request)
                      .addOnSuccessListener(new OnSuccessListener<Void>() {
                          @Override
                          public void onSuccess(Void aVoid) {
                              showToast(context, "add barrier success");
                          }
                      })
                      .addOnFailureListener(new OnFailureListener() {
                          @Override
                          public void onFailure(Exception e) {
                              showToast(context, "add barrier failed");
                              Log.e(TAG, "add barrier failed", e);
                          }
                      });
          }
      

      示例代码请参考Link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多