Android Open Source - WearPomodoro Pomodoro Transition Activity






From Project

Back to project page WearPomodoro.

License

The source code is released under:

GNU General Public License

If you think the Android project WearPomodoro listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2014 Alex Korovyansky.//from w ww . ja v a2 s  . c o  m
 */
package com.alexkorovyansky.wearpomodoro.app.ui;

import android.animation.ObjectAnimator;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.support.wearable.view.WatchViewStub;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.TextView;

import com.alexkorovyansky.wearpomodoro.BuildConfig;
import com.alexkorovyansky.wearpomodoro.R;
import com.alexkorovyansky.wearpomodoro.app.base.BasePomodoroActivity;
import com.alexkorovyansky.wearpomodoro.app.receivers.PomodoroAlarmReceiver;
import com.alexkorovyansky.wearpomodoro.helpers.PomodoroMaster;
import com.alexkorovyansky.wearpomodoro.helpers.PomodoroUtils;
import com.alexkorovyansky.wearpomodoro.helpers.ServiceProvider;
import com.alexkorovyansky.wearpomodoro.helpers.UITimer;
import com.alexkorovyansky.wearpomodoro.model.ActivityType;
import com.felipecsl.gifimageview.library.GifImageView;

import hugo.weaving.DebugLog;

public class PomodoroTransitionActivity extends BasePomodoroActivity implements SensorEventListener {

    public static final String EXTRA_NEXT_ACTIVITY_TYPE = BuildConfig.APPLICATION_ID + ".extra.NEXT_ACTIVITY_TYPE";

    private PomodoroMaster pomodoroMaster;
    private UITimer uiTimer;
    private SensorManager sensorManager;
    private Vibrator vibrator;

    private GifImageView awesomeGif;

    private ActivityType nextActivityType;

    private int stepSensorTicks;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentViews(R.layout.activity_transite_rect, R.layout.activity_transite_round);
        this.pomodoroMaster = ServiceProvider.getInstance().getPomodoroMaster(this);
        this.uiTimer = ServiceProvider.getInstance().getUITimer();
        this.sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        this.vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
        this.nextActivityType = ActivityType.fromValue(getIntent().getIntExtra(EXTRA_NEXT_ACTIVITY_TYPE, -1));
    }

    @Override
    public void onLayoutInflated(WatchViewStub stub) {
        super.onLayoutInflated(stub);
        PomodoroAlarmReceiver.completeWakefulIntent(getIntent());
        pomodoroMaster.cancelNotification();
        vibrator.vibrate(1000);

        awesomeGif = (GifImageView) stub.findViewById(R.id.transition_awesome_gif);
        awesomeGif.setBytes(PomodoroUtils.readRawResourceBytes(getResources(), R.raw.pomodoro));
        awesomeGif.startAnimation();

        if (nextActivityType.isBreak()) {
            float dp = PomodoroUtils.dipToPixels(this, 1);
            ObjectAnimator anim = ObjectAnimator.ofFloat(awesomeGif, View.TRANSLATION_X, -8*dp, 8*dp);
            anim.setDuration(1200);
            anim.setRepeatMode(ObjectAnimator.REVERSE);
            anim.setRepeatCount(ObjectAnimator.INFINITE);
            anim.setInterpolator(new AccelerateDecelerateInterpolator());
            anim.start();
        }

        final TextView messageText = (TextView) stub.findViewById(R.id.transition_text);
        final int eatenPomodoros = pomodoroMaster.getEatenPomodoros();

        if (nextActivityType.isBreak()) {
            int templateId = nextActivityType == ActivityType.LONG_BREAK ?
                    R.string.transition_text_before_long_break_message_template :
                    R.string.transition_text_before_short_break_message_template;
            messageText.setText(String.format(
                    getString(templateId),
                    eatenPomodoros + 1));
            activateStepsCounter();
        } else if (nextActivityType.isPomodoro()) {
            messageText.setText(String.format(
                    getString(R.string.transition_text_before_pomodoro_message_template),
                    eatenPomodoros + 1));
            uiTimer.schedule(new UITimer.Task() {
                @Override
                public void run() {
                    cancelTask();
                    finish();
                    pomodoroMaster.start(ActivityType.POMODORO);
                }
            }, 3000, "PomodoroTransitionActivity.DelayTimer");
        }
    }

    @DebugLog
    @Override
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_STEP_COUNTER) {
            ++stepSensorTicks;
            if (stepSensorTicks > 5) {
                sensorManager.unregisterListener(this);
                pomodoroMaster.start(nextActivityType);
                finish();
            }
        }
    }

    @DebugLog
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        awesomeGif.stopAnimation();
        sensorManager.unregisterListener(this);
        uiTimer.cancel("PomodoroTransitionActivity.DelayTimer");
    }

    private void activateStepsCounter() {
        stepSensorTicks = 0;
        Sensor stepCountSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
        sensorManager.registerListener(this, stepCountSensor, SensorManager.SENSOR_DELAY_FASTEST);
    }

}




Java Source Code List

com.alexkorovyansky.wearpomodoro.app.MainActivity.java
com.alexkorovyansky.wearpomodoro.app.PomodoroConstants.java
com.alexkorovyansky.wearpomodoro.app.base.BasePomodoroActivity.java
com.alexkorovyansky.wearpomodoro.app.receivers.PomodoroAlarmReceiver.java
com.alexkorovyansky.wearpomodoro.app.receivers.PomodoroAlarmTickReceiver.java
com.alexkorovyansky.wearpomodoro.app.receivers.PomodoroControlReceiver.java
com.alexkorovyansky.wearpomodoro.app.services.PomodoroNotificationService.java
com.alexkorovyansky.wearpomodoro.app.ui.PomodoroEntryActivity.java
com.alexkorovyansky.wearpomodoro.app.ui.PomodoroTransitionActivity.java
com.alexkorovyansky.wearpomodoro.helpers.PersistentStorage.java
com.alexkorovyansky.wearpomodoro.helpers.PomodoroMaster.java
com.alexkorovyansky.wearpomodoro.helpers.PomodoroUtils.java
com.alexkorovyansky.wearpomodoro.helpers.ServiceProvider.java
com.alexkorovyansky.wearpomodoro.helpers.UITimer.java
com.alexkorovyansky.wearpomodoro.helpers.WakefulBroadcastReceiver.java
com.alexkorovyansky.wearpomodoro.model.ActivityType.java