Example usage for android.os SystemClock uptimeMillis

List of usage examples for android.os SystemClock uptimeMillis

Introduction

In this page you can find the example usage for android.os SystemClock uptimeMillis.

Prototype

@CriticalNative
native public static long uptimeMillis();

Source Link

Document

Returns milliseconds since boot, not counting time spent in deep sleep.

Usage

From source file:com.tjych.swip.vertical.DirectionalViewPager.java

/**
 * Fake drag by an offset in pixels. You must have called {@link #beginFakeDrag()} first.
 *
 * @param xOffset Offset in pixels to drag by.
 * @see #beginFakeDrag()//from   w ww  . j  a  va  2  s . c om
 * @see #endFakeDrag()
 */
public void fakeDragBy(float offset) {
    if (!mFakeDragging) {
        throw new IllegalStateException("No fake drag in progress. Call beginFakeDrag first.");
    }

    if (mOrientation == HORIZONTAL) {
        mLastMotionX += offset;
    } else {
        mLastMotionY += offset;
    }

    float oldScrollCoord = getScrollCoord();
    float scrollCoord = oldScrollCoord - offset;
    final int dimension = getClientDimension();

    float startBound = dimension * mFirstOffset;
    float endBound = dimension * mLastOffset;

    final ItemInfo firstItem = mItems.get(0);
    final ItemInfo lastItem = mItems.get(mItems.size() - 1);
    if (firstItem.position != 0) {
        startBound = firstItem.offset * dimension;
    }
    if (lastItem.position != mAdapter.getCount() - 1) {
        endBound = lastItem.offset * dimension;
    }

    if (scrollCoord < startBound) {
        scrollCoord = startBound;
    } else if (scrollCoord > endBound) {
        scrollCoord = endBound;
    }
    // Don't lose the rounded component
    if (mOrientation == HORIZONTAL) {
        mLastMotionX += scrollCoord - (int) scrollCoord;
        scrollTo((int) scrollCoord, getScrollY());
    } else {
        mLastMotionY += scrollCoord - (int) scrollCoord;
        scrollTo(getScrollX(), (int) scrollCoord);
    }

    pageScrolled((int) scrollCoord);

    // Synthesize an event for the VelocityTracker.
    final long time = SystemClock.uptimeMillis();
    final MotionEvent ev = mOrientation == HORIZONTAL
            ? MotionEvent.obtain(mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE, mLastMotionX, 0, 0)
            : MotionEvent.obtain(mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE, 0, mLastMotionY, 0);
    mVelocityTracker.addMovement(ev);
    ev.recycle();
}

From source file:cn.androidy.materialdesignsample.ryanharterviewpager.ViewPager.java

/**
 * Start a fake drag of the pager./*from  w  w  w  . j ava2s.  c  o m*/
 *
 * <p>A fake drag can be useful if you want to synchronize the motion of the ViewPager
 * with the touch scrolling of another view, while still letting the ViewPager
 * control the snapping motion and fling behavior. (e.g. parallax-scrolling tabs.)
 * Call {@link #fakeDragBy(float)} to simulate the actual drag motion. Call
 * {@link #endFakeDrag()} to complete the fake drag and fling as necessary.
 *
 * <p>During a fake drag the ViewPager will ignore all touch events. If a real drag
 * is already in progress, this method will return false.
 *
 * @return true if the fake drag began successfully, false if it could not be started.
 *
 * @see #fakeDragBy(float)
 * @see #endFakeDrag()
 */
public boolean beginFakeDrag() {
    if (mIsBeingDragged) {
        return false;
    }
    mFakeDragging = true;
    setScrollState(SCROLL_STATE_DRAGGING);
    if (isOrientationHorizontal()) {
        mInitialMotionX = mLastMotionX = 0;
    } else {
        mInitialMotionY = mLastMotionY = 0;
    }
    if (mVelocityTracker == null) {
        mVelocityTracker = VelocityTracker.obtain();
    } else {
        mVelocityTracker.clear();
    }
    final long time = SystemClock.uptimeMillis();
    final MotionEvent ev = MotionEvent.obtain(time, time, MotionEvent.ACTION_DOWN, 0, 0, 0);
    mVelocityTracker.addMovement(ev);
    ev.recycle();
    mFakeDragBeginTime = time;
    return true;
}

From source file:org.mozilla.gecko.GeckoApp.java

/**
 * Open the url as a new tab, and mark the selected tab as its "parent".
 * If the url is already open in a tab, the existing tab is selected.
 * Use this for tabs opened by the browser chrome, so users can press the
 * "Back" button to return to the previous tab.
 *///  w  w  w.  j a va 2 s  . co  m
public void loadUrlInTab(String url) {
    ArrayList<Tab> tabs = Tabs.getInstance().getTabsInOrder();
    if (tabs != null) {
        Iterator<Tab> tabsIter = tabs.iterator();
        while (tabsIter.hasNext()) {
            Tab tab = tabsIter.next();
            if (url.equals(tab.getURL())) {
                Tabs.getInstance().selectTab(tab.getId());
                return;
            }
        }
    }

    JSONObject args = new JSONObject();
    try {
        args.put("url", url);
        args.put("parentId", Tabs.getInstance().getSelectedTab().getId());
    } catch (Exception e) {
        Log.e(LOGTAG, "error building JSON arguments");
    }
    Log.i(LOGTAG, "Sending message to Gecko: " + SystemClock.uptimeMillis() + " - Tab:Add");
    GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Tab:Add", args.toString()));
}

From source file:android.improving.utils.views.cardsview.OrientedViewPager.java

/**
 * Start a fake drag of the pager./*from   w w w .java2  s .c om*/
 * <p/>
 * <p>A fake drag can be useful if you want to synchronize the motion of the ViewPager
 * with the touch scrolling of another view, while still letting the ViewPager
 * control the snapping motion and fling behavior. (e.g. parallax-scrolling tabs.)
 * Call {@link #fakeDragBy(float)} to simulate the actual drag motion. Call
 * {@link #endFakeDrag()} to complete the fake drag and fling as necessary.
 * <p/>
 * <p>During a fake drag the ViewPager will ignore all touch events. If a real drag
 * is already in progress, this method will return false.
 *
 * @return true if the fake drag began successfully, false if it could not be started.
 * @see #fakeDragBy(float)
 * @see #endFakeDrag()
 */
public boolean beginFakeDrag() {
    if (mIsBeingDragged) {
        return false;
    }
    mFakeDragging = true;
    setScrollState(SCROLL_STATE_DRAGGING);
    if (mOrientation == Orientation.VERTICAL) {
        mInitialMotionY = mLastMotionY = 0;
    } else {
        mInitialMotionX = mLastMotionX = 0;
    }
    if (mVelocityTracker == null) {
        mVelocityTracker = VelocityTracker.obtain();
    } else {
        mVelocityTracker.clear();
    }
    final long time = SystemClock.uptimeMillis();
    final MotionEvent ev = MotionEvent.obtain(time, time, MotionEvent.ACTION_DOWN, 0, 0, 0);
    mVelocityTracker.addMovement(ev);
    ev.recycle();
    mFakeDragBeginTime = time;
    return true;
}

From source file:com.viewpagerindicator.MyDirectionalViewPager.java

/**
 * Start a fake drag of the pager.// w ww .  j  av  a 2  s .com
 *
 * <p>A fake drag can be useful if you want to synchronize the motion of the ViewPager
 * with the touch scrolling of another view, while still letting the ViewPager
 * control the snapping motion and fling behavior. (e.g. parallax-scrolling tabs.)
 * Call {@link #fakeDragBy(float)} to simulate the actual drag motion. Call
 * {@link #endFakeDrag()} to complete the fake drag and fling as necessary.
 *
 * <p>During a fake drag the ViewPager will ignore all touch events. If a real drag
 * is already in progress, this method will return false.
 *
 * @return true if the fake drag began successfully, false if it could not be started.
 *
 * @see #fakeDragBy(float)
 * @see #endFakeDrag()
 */
public boolean beginFakeDrag() {
    if (mIsBeingDragged) {
        return false;
    }
    mFakeDragging = true;
    setScrollState(SCROLL_STATE_DRAGGING);
    if (mOrientation == HORIZONTAL) {
        mInitialMotionX = mLastMotionX = 0;
    } else {
        mInitialMotionY = mLastMotionY = 0;
    }
    if (mVelocityTracker == null) {
        mVelocityTracker = VelocityTracker.obtain();
    } else {
        mVelocityTracker.clear();
    }
    final long time = SystemClock.uptimeMillis();
    final MotionEvent ev = MotionEvent.obtain(time, time, MotionEvent.ACTION_DOWN, 0, 0, 0);
    mVelocityTracker.addMovement(ev);
    ev.recycle();
    mFakeDragBeginTime = time;
    return true;
}

From source file:cn.androidy.materialdesignsample.ryanharterviewpager.ViewPager.java

/**
 * Fake drag by an offset in pixels. You must have called {@link #beginFakeDrag()} first.
 *
 * @param offset Offset in pixels to drag by.
 * @see #beginFakeDrag()/*  w w  w  .ja  v a  2 s .com*/
 * @see #endFakeDrag()
 */
public void fakeDragBy(float offset) {
    if (!mFakeDragging) {
        throw new IllegalStateException("No fake drag in progress. Call beginFakeDrag first.");
    }

    if (isOrientationHorizontal()) {
        mLastMotionX += offset;

        float oldScrollX = getScrollX();
        float scrollX = oldScrollX - offset;
        final int width = getClientWidth();

        float leftBound = width * mFirstOffset;
        float rightBound = width * mLastOffset;

        final ItemInfo firstItem = mItems.get(0);
        final ItemInfo lastItem = mItems.get(mItems.size() - 1);
        if (firstItem.position != 0) {
            leftBound = firstItem.offset * width;
        }
        if (lastItem.position != mAdapter.getCount() - 1) {
            rightBound = lastItem.offset * width;
        }

        if (scrollX < leftBound) {
            scrollX = leftBound;
        } else if (scrollX > rightBound) {
            scrollX = rightBound;
        }
        // Don't lose the rounded component
        mLastMotionX += scrollX - (int) scrollX;
        scrollTo((int) scrollX, getScrollY());
        pageScrolled((int) scrollX);

        // Synthesize an event for the VelocityTracker.
        final long time = SystemClock.uptimeMillis();
        final MotionEvent ev = MotionEvent.obtain(mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE,
                mLastMotionX, 0, 0);
        mVelocityTracker.addMovement(ev);
        ev.recycle();
    } else {
        mLastMotionY += offset;

        float oldScrollY = getScrollY();
        float scrollY = oldScrollY - offset;
        final int height = getClientHeight();

        float topBound = height * mFirstOffset;
        float bottomBound = height * mLastOffset;

        final ItemInfo firstItem = mItems.get(0);
        final ItemInfo lastItem = mItems.get(mItems.size() - 1);
        if (firstItem.position != 0) {
            topBound = firstItem.offset * height;
        }
        if (lastItem.position != mAdapter.getCount() - 1) {
            bottomBound = lastItem.offset * height;
        }

        if (scrollY < topBound) {
            scrollY = topBound;
        } else if (scrollY > bottomBound) {
            scrollY = bottomBound;
        }
        // Don't lose the rounded component
        mLastMotionY += scrollY - (int) scrollY;
        scrollTo(getScrollX(), (int) scrollY);
        pageScrolled((int) scrollY);

        // Synthesize an event for the VelocityTracker.
        final long time = SystemClock.uptimeMillis();
        final MotionEvent ev = MotionEvent.obtain(mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE, 0,
                mLastMotionY, 0);
        mVelocityTracker.addMovement(ev);
        ev.recycle();
    }
}

From source file:android.improving.utils.views.cardsview.OrientedViewPager.java

/**
 * Fake drag by an offset in pixels. You must have called {@link #beginFakeDrag()} first.
 *
 * @param offset Offset in pixels to drag by.
 * @see #beginFakeDrag()/*from   w ww. j  a va2  s .com*/
 * @see #endFakeDrag()
 */
public void fakeDragBy(float offset) {
    if (!mFakeDragging) {
        throw new IllegalStateException("No fake drag in progress. Call beginFakeDrag first.");
    }

    if (mOrientation == Orientation.VERTICAL) {
        mLastMotionY += offset;

        float oldScrollY = getScrollY();
        float scrollY = oldScrollY - offset;
        final int height = getClientSize();

        float topBound = height * mFirstOffset;
        float bottomBound = height * mLastOffset;

        final ItemInfo firstItem = mItems.get(0);
        final ItemInfo lastItem = mItems.get(mItems.size() - 1);
        if (firstItem.position != 0) {
            topBound = firstItem.offset * height;
        }
        if (lastItem.position != mAdapter.getCount() - 1) {
            bottomBound = lastItem.offset * height;
        }

        if (scrollY < topBound) {
            scrollY = topBound;
        } else if (scrollY > bottomBound) {
            scrollY = bottomBound;
        }
        // Don't lose the rounded component
        mLastMotionY += scrollY - (int) scrollY;
        scrollTo(getScrollX(), (int) scrollY);
        pageScrolled((int) scrollY);

        // Synthesize an event for the VelocityTracker.
        final long time = SystemClock.uptimeMillis();
        final MotionEvent ev = MotionEvent.obtain(mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE, 0,
                mLastMotionY, 0);
        mVelocityTracker.addMovement(ev);
        ev.recycle();
    } else {
        mLastMotionX += offset;

        float oldScrollX = getScrollX();
        float scrollX = oldScrollX - offset;
        final int width = getClientSize();

        float leftBound = width * mFirstOffset;
        float rightBound = width * mLastOffset;

        final ItemInfo firstItem = mItems.get(0);
        final ItemInfo lastItem = mItems.get(mItems.size() - 1);
        if (firstItem.position != 0) {
            leftBound = firstItem.offset * width;
        }
        if (lastItem.position != mAdapter.getCount() - 1) {
            rightBound = lastItem.offset * width;
        }

        if (scrollX < leftBound) {
            scrollX = leftBound;
        } else if (scrollX > rightBound) {
            scrollX = rightBound;
        }
        // Don't lose the rounded component
        mLastMotionX += scrollX - (int) scrollX;
        scrollTo((int) scrollX, getScrollY());
        pageScrolled((int) scrollX);

        // Synthesize an event for the VelocityTracker.
        final long time = SystemClock.uptimeMillis();
        final MotionEvent ev = MotionEvent.obtain(mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE,
                mLastMotionX, 0, 0);
        mVelocityTracker.addMovement(ev);
        ev.recycle();
    }
}

From source file:com.viewpagerindicator.MyDirectionalViewPager.java

/**
 * Fake drag by an offset in pixels. You must have called {@link #beginFakeDrag()} first.
 *
 * @param offset Offset in pixels to drag by.
 * @see #beginFakeDrag()//from ww  w .j  av a 2  s. c  om
 * @see #endFakeDrag()
 */
public void fakeDragBy(float offset) {
    if (!mFakeDragging) {
        throw new IllegalStateException("No fake drag in progress. Call beginFakeDrag first.");
    }

    if (mOrientation == HORIZONTAL) {
        mLastMotionX += offset;
    } else {
        mLastMotionY += offset;
    }

    float oldScroll;
    float scroll;
    final int size;
    if (mOrientation == HORIZONTAL) {
        oldScroll = getScrollX();
        scroll = oldScroll - offset;
        size = getClientWidth();
    } else {
        oldScroll = getScrollY();
        scroll = oldScroll - offset;
        size = getClientHeight();
    }

    float preBound = size * mFirstOffset;
    float nextBound = size * mLastOffset;

    final ItemInfo firstItem = mItems.get(0);
    final ItemInfo lastItem = mItems.get(mItems.size() - 1);
    if (firstItem.position != 0) {
        preBound = firstItem.offset * size;
    }
    if (lastItem.position != mAdapter.getCount() - 1) {
        nextBound = lastItem.offset * size;
    }

    if (scroll < preBound) {
        scroll = preBound;
    } else if (scroll > nextBound) {
        scroll = nextBound;
    }
    // Don't lose the rounded component
    if (mOrientation == HORIZONTAL) {
        mLastMotionX += scroll - (int) scroll;
        scrollTo((int) scroll, getScrollY());
    } else {
        mLastMotionY += scroll - (int) scroll;
        scrollTo(getScrollX(), (int) scroll);
    }
    pageScrolled((int) scroll);

    // Synthesize an event for the VelocityTracker.
    final long time = SystemClock.uptimeMillis();
    final MotionEvent ev;
    if (mOrientation == HORIZONTAL) {
        ev = MotionEvent.obtain(mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE, mLastMotionX, 0, 0);
    } else {
        ev = MotionEvent.obtain(mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE, 0, mLastMotionY, 0);
    }
    mVelocityTracker.addMovement(ev);
    ev.recycle();
}

From source file:com.android.leanlauncher.LauncherTransitionable.java

/**
 * Add the views for a widget to the workspace.
 * <p/>/* www . j  av a2  s . com*/
 * Implementation of the method from LauncherModel.Callbacks.
 */
public void bindAppWidget(final LauncherAppWidgetInfo item) {
    Runnable r = new Runnable() {
        public void run() {
            bindAppWidget(item);
        }
    };
    if (waitUntilResume(r)) {
        return;
    }

    final long start = DEBUG_WIDGETS ? SystemClock.uptimeMillis() : 0;
    if (DEBUG_WIDGETS) {
        Log.d(TAG, "bindAppWidget: " + item);
    }
    final Workspace workspace = mWorkspace;

    AppWidgetProviderInfo appWidgetInfo;
    if (!mIsSafeModeEnabled && ((item.restoreStatus & LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY) == 0)
            && ((item.restoreStatus & LauncherAppWidgetInfo.FLAG_ID_NOT_VALID) != 0)) {

        appWidgetInfo = LauncherModel.findAppWidgetProviderInfoWithComponent(this, item.providerName);
        if (appWidgetInfo == null) {
            if (DEBUG_WIDGETS) {
                Log.d(TAG, "Removing restored widget: id=" + item.appWidgetId + " belongs to component "
                        + item.providerName + ", as the povider is null");
            }
            LauncherModel.deleteItemFromDatabase(this, item);
            return;
        }
        // Note: This assumes that the id remap broadcast is received before this step.
        // If that is not the case, the id remap will be ignored and user may see the
        // click to setup view.
        PendingAddWidgetInfo pendingInfo = new PendingAddWidgetInfo(appWidgetInfo, null, null);
        pendingInfo.spanX = item.spanX;
        pendingInfo.spanY = item.spanY;
        pendingInfo.minSpanX = item.minSpanX;
        pendingInfo.minSpanY = item.minSpanY;
        Bundle options = AppsCustomizePagedView.getDefaultOptionsForWidget(this, pendingInfo);

        int newWidgetId = mAppWidgetHost.allocateAppWidgetId();
        boolean success = mAppWidgetManager.bindAppWidgetIdIfAllowed(newWidgetId, appWidgetInfo, options);

        // TODO consider showing a permission dialog when the widget is clicked.
        if (!success) {
            mAppWidgetHost.deleteAppWidgetId(newWidgetId);
            if (DEBUG_WIDGETS) {
                Log.d(TAG, "Removing restored widget: id=" + item.appWidgetId + " belongs to component "
                        + item.providerName + ", as the launcher is unable to bing a new widget id");
            }
            LauncherModel.deleteItemFromDatabase(this, item);
            return;
        }

        item.appWidgetId = newWidgetId;

        // If the widget has a configure activity, it is still needs to set it up, otherwise
        // the widget is ready to go.
        item.restoreStatus = (appWidgetInfo.configure == null) ? LauncherAppWidgetInfo.RESTORE_COMPLETED
                : LauncherAppWidgetInfo.FLAG_UI_NOT_READY;

        LauncherModel.updateItemInDatabase(this, item);
    }

    if (!mIsSafeModeEnabled && item.restoreStatus == LauncherAppWidgetInfo.RESTORE_COMPLETED) {
        final int appWidgetId = item.appWidgetId;
        appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId);
        if (DEBUG_WIDGETS) {
            Log.d(TAG, "bindAppWidget: id=" + item.appWidgetId + " belongs to component "
                    + appWidgetInfo.provider);
        }

        item.hostView = mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo);
    } else {
        appWidgetInfo = null;
        PendingAppWidgetHostView view = new PendingAppWidgetHostView(this, item, mIsSafeModeEnabled);
        view.updateIcon(mIconCache);
        item.hostView = view;
        item.hostView.updateAppWidget(null);
        item.hostView.setOnClickListener(this);
    }

    item.hostView.setTag(item);
    item.onBindAppWidget(this);

    workspace.addInScreen(item.hostView, item.container, item.cellX, item.cellY, item.spanX, item.spanY, false);
    addWidgetToAutoAdvanceIfNeeded(item.hostView, appWidgetInfo);

    workspace.requestLayout();

    if (DEBUG_WIDGETS) {
        Log.d(TAG,
                "bound widget id=" + item.appWidgetId + " in " + (SystemClock.uptimeMillis() - start) + "ms");
    }
}

From source file:dev.dworks.libs.widget.ViewPager.java

/**
 * Fake drag by an offset in pixels. You must have called {@link #beginFakeDrag()} first.
 *
 * @param xOffset Offset in pixels to drag by.
 * @see #beginFakeDrag()//w w  w .  ja v  a2  s .com
 * @see #endFakeDrag()
 */
public void fakeDragByHorizontally(float xOffset) {
    if (!mFakeDragging) {
        throw new IllegalStateException("No fake drag in progress. Call beginFakeDrag first.");
    }

    mLastMotionX += xOffset;

    float oldScrollX = getScrollX();
    float scrollX = oldScrollX - xOffset;
    final int width = getClientWidth();

    float leftBound = width * mFirstOffset;
    float rightBound = width * mLastOffset;

    final ItemInfo firstItem = mItems.get(0);
    final ItemInfo lastItem = mItems.get(mItems.size() - 1);
    if (firstItem.position != 0) {
        leftBound = firstItem.offset * width;
    }
    if (lastItem.position != mAdapter.getCount() - 1) {
        rightBound = lastItem.offset * width;
    }

    if (scrollX < leftBound) {
        scrollX = leftBound;
    } else if (scrollX > rightBound) {
        scrollX = rightBound;
    }
    // Don't lose the rounded component
    mLastMotionX += scrollX - (int) scrollX;
    scrollTo((int) scrollX, getScrollY());
    pageScrolledX((int) scrollX);

    // Synthesize an event for the VelocityTracker.
    final long time = SystemClock.uptimeMillis();
    final MotionEvent ev = MotionEvent.obtain(mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE, mLastMotionX,
            0, 0);
    mVelocityTracker.addMovement(ev);
    ev.recycle();
}