// Testing Case #5 public void testVideoPageCyclicScrolling() { enterVideoPageWaitForIdle(); long startTime = SystemClock.elapsedRealtime(); VideoPage p = mActivity.getVideoPage(); final int pageCount = p.getTotalVideoPage(); final int beginIndex = p.getIndex(); for (int i = 0; i < pageCount; ++i) { CommonTestUtil.sendDragSync(mInstrumentation, mActivity, CommonTestUtil.DragDirection.UP); } CommonTestUtil.wait(mInstrumentation, CommonTestUtil.WAIT_FOR_INNER_PAGE_SWITCH_TIME_IN_SECS); assertTrue(mMedia3DView.getCurrentPage() == p); final int afterUpScrollingIndex = p.getIndex(); assertEquals(beginIndex, afterUpScrollingIndex); for (int i = 0; i < pageCount; ++i) { CommonTestUtil.sendDragSync(mInstrumentation, mActivity, CommonTestUtil.DragDirection.DOWN); } CommonTestUtil.wait(mInstrumentation, CommonTestUtil.WAIT_FOR_INNER_PAGE_SWITCH_TIME_IN_SECS); assertTrue(mMedia3DView.getCurrentPage() == p); final int afterDownScrollingIndex = p.getIndex(); assertEquals(beginIndex, afterDownScrollingIndex); }
private void loadPageAsync(Bundle savedInstanceState, Page... pages) { final int count = pages.length; for (int i = 0; i < count; i++) { pages[i].onAttach(this); pages[i].onCreate(savedInstanceState); mMedia3DView.addPage(pages[i]); } mMedia3DView.loadPageAsync(pages); }
// Testing Case #2 public void testLeaveVideoPageBySlide() { enterVideoPageWaitForIdle(); CommonTestUtil.sendDragSync(mInstrumentation, mActivity, CommonTestUtil.DragDirection.RIGHT); assertTrue(mMedia3DView.getCurrentPage() != mActivity.getVideoPage()); CommonTestUtil.sendDragSync(mInstrumentation, mActivity, CommonTestUtil.DragDirection.LEFT); assertTrue(mMedia3DView.getCurrentPage() == mActivity.getVideoPage()); }
private void loadPage(Page page, Bundle savedInstanceState) { if (Media3D.DEBUG) { Log.v(TAG, "Load page " + page); } page.onAttach(this); page.onCreate(savedInstanceState); mMedia3DView.addPage(page); mMedia3DView.loadPage(page); }
@Override public void onConfigurationChanged(Configuration config) { super.onConfigurationChanged(config); if (Media3D.DEBUG) { Log.v(TAG, "onConfigurationChanged"); } // handle configuration change to avoid drawing on lock screen // and the surface memory which makes gpu oom. if (mMedia3DView == null) { return; } mMedia3DView.onConfigurationChanged(config); mMedia3DView.setVisibility(View.VISIBLE); }
// Testing Case #6 public void testFolderOnMenuBar() { enterVideoPageWaitForIdle(); // trigger menu bar CommonTestUtil.sendSingleTapConfirmedEventOnUiThread( mActivity, mMedia3DView, CommonTestUtil.NON_ACTOR_POINT); CommonTestUtil.waitMenuBarForActionSync( mInstrumentation, mMedia3DView, CommonTestUtil.DEFAULT_MENU_BAR_TIMEOUT_IN_MS); // click folder icon on menu bar CommonTestUtil.sendTouchEventsOnUiThread( mActivity, mMedia3DView, CommonTestUtil.FOLDER_ICON_IN_TOP_MENU); CommonTestUtil.waitPageForIdleSync( mInstrumentation, mMedia3DView, mActivity.getVideoPage(), CommonTestUtil.DEFAULT_PAGE_SWITCH_TIMEOUT_IN_MS); final int REQUEST_PICK_FOLDER = 0; // refer to VideoPage int requestCode = mActivity.getVideoPage().hashCode() + REQUEST_PICK_FOLDER; // refer to VideoPage CommonTestUtil.finishLaunchedActivity(mActivity, requestCode); CommonTestUtil.wait(mInstrumentation, CommonTestUtil.WAIT_FOR_PAGE_SWITCH_TIME_IN_SECS); assertTrue(mMedia3DView.getCurrentPage() == mActivity.getVideoPage()); }
private void unloadPage(Page page) { if (Media3D.DEBUG) { Log.v(TAG, "Unload page " + page); } mMedia3DView.removePage(page); page.onDestroy(); page.onDetach(); }
@Override protected void onResume() { super.onResume(); if (Media3D.DEBUG) { Log.d(TAG, "onResume"); } startMonitorExternalStorage(); mMedia3DView.onResume(); }
@Override protected void onPause() { if (Media3D.DEBUG) { Log.d(TAG, "onPause"); } mMedia3DView.onPause(); stopMonitorExternalStorage(); super.onPause(); }
// Testing Case #1 public void testLeaveVideoPageByBack() { enterVideoPageWaitForIdle(); sendKeys(KeyEvent.KEYCODE_BACK); CommonTestUtil.waitPageForIdleSync( mInstrumentation, mMedia3DView, mActivity.getPortalPage(), CommonTestUtil.DEFAULT_PAGE_SWITCH_TIMEOUT_IN_MS); assertTrue(mMedia3DView.getCurrentPage() == mActivity.getPortalPage()); }
@Override public boolean onTouchEvent(MotionEvent m) { if (Media3D.DEBUG) { Log.v( TAG, "onTouchEvent, action = " + m.getAction() + ", (" + m.getX() + ", " + m.getY() + ")"); } mMedia3DView.onTouchEvent(m); return false; }
// Testing Case #4 public void testPauseResume() { enterVideoPageWaitForIdle(); mInstrumentation.callActivityOnPause(mActivity); CommonTestUtil.wait(mInstrumentation, CommonTestUtil.WAIT_FOR_PAGE_SWITCH_TIME_IN_SECS); mInstrumentation.callActivityOnResume(mActivity); CommonTestUtil.waitPageForIdleSync( mInstrumentation, mMedia3DView, mActivity.getVideoPage(), CommonTestUtil.DEFAULT_PAGE_SWITCH_TIMEOUT_IN_MS); assertTrue(mMedia3DView.getCurrentPage() == mActivity.getVideoPage()); }
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (Media3D.DEBUG) { Log.v(TAG, "onKeyUp - " + keyCode); } if ((keyCode == KeyEvent.KEYCODE_BACK)) { Page backPage = mMedia3DView.getBackPage(); if (backPage == null) { if (mPortalPage.isShowLoading()) { mPortalPage.cancelLoading(); Log.v(TAG, "cancel loading"); } else { onBackPressed(); Log.v(TAG, "back key"); } } else { mMedia3DView.enterPage(backPage); } return true; } else if (keyCode == KeyEvent.KEYCODE_MENU) { return mMedia3DView.onBarShowHide(); } return super.onKeyUp(keyCode, event); }
// Testing Case #7 public void testBackOnMenuBar() { enterVideoPageWaitForIdle(); // trigger menu bar CommonTestUtil.sendSingleTapConfirmedEventOnUiThread( mActivity, mMedia3DView, CommonTestUtil.NON_ACTOR_POINT); CommonTestUtil.waitMenuBarForActionSync( mInstrumentation, mMedia3DView, CommonTestUtil.DEFAULT_MENU_BAR_TIMEOUT_IN_MS); // click back icon on menu bar CommonTestUtil.sendTouchEventsOnUiThread( mActivity, mMedia3DView, CommonTestUtil.BACK_ICON_IN_TOP_MENU); CommonTestUtil.waitPageForIdleSync( mInstrumentation, mMedia3DView, mActivity.getPortalPage(), CommonTestUtil.DEFAULT_PAGE_SWITCH_TIMEOUT_IN_MS); assertTrue(mMedia3DView.getCurrentPage() == mActivity.getPortalPage()); }
public void enterVideoPageWaitForIdle() { validateNoNullMember(); CommonTestUtil.waitPageForIdleSync( mInstrumentation, mMedia3DView, mActivity.getPortalPage(), CommonTestUtil.DEFAULT_PAGE_SWITCH_TIMEOUT_IN_MS); CommonTestUtil.waitLoadForIdleSync( mInstrumentation, mActivity.getVideoPage(), CommonTestUtil.DEFAULT_PAGE_SWITCH_TIMEOUT_IN_MS); CommonTestUtil.sendSingleTapConfirmedEventOnUiThread( mActivity, mMedia3DView, CommonTestUtil.VIDEO_ICON_IN_PORTALPAGE); CommonTestUtil.waitPageForIdleSync( mInstrumentation, mMedia3DView, mActivity.getVideoPage(), CommonTestUtil.DEFAULT_PAGE_SWITCH_TIMEOUT_IN_MS); assertTrue(mMedia3DView.getCurrentPage() == mActivity.getVideoPage()); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Media3D.DEBUG) { Log.v(TAG, "onCreate()"); } setContentView(R.layout.media3d); AnimationLoader.setCacheDir(getCacheDir()); SimpleVideoView backgroundVideo = (SimpleVideoView) findViewById(R.id.bg_video); mGestureDetector = new GestureDetector(this, new MyGestureListener()); mStage = new Stage(); mStage.setBackgroundColor(new com.mediatek.ngin3d.Color(0x00, 0x00, 0x00, 0x00)); mStage.addTextureAtlas(getResources(), R.raw.media3d_atlas, R.raw.media3d); mStage.setMaxFPS(60); // Media3D was designed with a system that used left-handed coordinates. // The graphics engine now uses a conventional right-handed system so we // use a 'special' projection to compensate for this. mStage.setProjection(Stage.UI_PERSPECTIVE_LHC, 2.0f, 3000.0f, -1111.0f); mMedia3DView = new Media3DView(this, mStage, backgroundVideo); mPortalPage = new PortalPage(mStage); loadPage(mPortalPage, savedInstanceState); mPortalPage.setPageQueryCallback(this); mWeatherPage = new WeatherPage(mStage); mPhotoPage = new PhotoPage(mStage); mVideoPage = new VideoPage(mStage); Setting setting = Setting.realize(this, R.xml.configuration); WeatherPage.loadConfiguration(setting); PhotoPage.loadConfiguration(setting); VideoPage.loadConfiguration(setting); loadPageAsync(savedInstanceState, mWeatherPage, mPhotoPage, mVideoPage); backgroundVideo.setZOrderMediaOverlay(false); mMedia3DView.setZOrderMediaOverlay(true); FrameLayout frame = (FrameLayout) findViewById(R.id.stage_root); frame.addView(mMedia3DView); mOrientationListener = new OrientationListener(this, SensorManager.SENSOR_DELAY_NORMAL); if (mOrientationListener.canDetectOrientation()) { mOrientationListener.enable(); } Intent intent = getIntent(); if (intent.getAction() != null) { if (intent.getAction().equalsIgnoreCase("android.intent.action.ROTATED_MAIN")) { mIsAutoRotateLaunched = true; } } if (mCurrentPage == null) { mCurrentPage = mPortalPage; } mMedia3DView.enterPage(mCurrentPage); }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { mMedia3DView.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data); }