Merge "AndroidX: Separate widget class from Media module" into pi-preview1-androidx-dev
diff --git a/buildSrc/src/main/kotlin/androidx/build/LibraryGroups.kt b/buildSrc/src/main/kotlin/androidx/build/LibraryGroups.kt
index 9ba3c38..9466f0c 100644
--- a/buildSrc/src/main/kotlin/androidx/build/LibraryGroups.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/LibraryGroups.kt
@@ -47,6 +47,7 @@
     const val LOCALBROADCASTMANAGER = "androidx.localbroadcastmanager"
     const val MEDIA = "androidx.media"
     const val MEDIAROUTER = "androidx.mediarouter"
+    const val MEDIAWIDGET = "androidx.mediawidget"
     const val PALETTE = "androidx.palette"
     const val PERCENTLAYOUT = "androidx.percentlayout"
     const val PREFERENCE = "androidx.preference"
diff --git a/media-widget/OWNERS b/media-widget/OWNERS
new file mode 100644
index 0000000..c740b62
--- /dev/null
+++ b/media-widget/OWNERS
@@ -0,0 +1,6 @@
+sungsoo@google.com
+insun@google.com
+jinpark@google.com
+hdmoon@google.com
+jaewan@google.com
+akersten@google.com
\ No newline at end of file
diff --git a/media-widget/build.gradle b/media-widget/build.gradle
new file mode 100644
index 0000000..de3f9d9
--- /dev/null
+++ b/media-widget/build.gradle
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import static androidx.build.dependencies.DependenciesKt.*
+import androidx.build.LibraryGroups
+import androidx.build.LibraryVersions
+
+plugins {
+    id("SupportAndroidLibraryPlugin")
+}
+
+dependencies {
+    api(project(":media"))
+    api(project(":mediarouter"))
+    api(project(":appcompat"))
+    api(project(":palette"))
+
+    androidTestImplementation(TEST_RUNNER_TMP, libs.exclude_for_espresso)
+    androidTestImplementation(ESPRESSO_CORE_TMP, libs.exclude_for_espresso)
+    androidTestImplementation(TEST_RULES_TMP, libs.exclude_for_espresso)
+    androidTestImplementation(MOCKITO_CORE, libs.exclude_bytebuddy) // DexMaker has it"s own MockMaker
+    androidTestImplementation(DEXMAKER_MOCKITO, libs.exclude_bytebuddy) // DexMaker has it"s own MockMaker
+    androidTestImplementation project(':internal-testutils')
+}
+
+supportLibrary {
+    name = "Android Media Support Library"
+    publish = true
+    mavenVersion = LibraryVersions.SUPPORT_LIBRARY
+    mavenGroup = LibraryGroups.MEDIA
+    inceptionYear = "2011"
+    description = "Android Media Support Library"
+}
diff --git a/media-widget/src/androidTest/AndroidManifest.xml b/media-widget/src/androidTest/AndroidManifest.xml
new file mode 100644
index 0000000..dd6e9e0
--- /dev/null
+++ b/media-widget/src/androidTest/AndroidManifest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="androidx.media.widget.test">
+    <uses-sdk android:targetSdkVersion="${target-sdk-version}"/>
+
+    <application>
+        <activity android:name="androidx.media.widget.VideoView2TestActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:label="VideoView2TestActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
diff --git a/media/src/androidTest/java/androidx/widget/MediaUtils2.java b/media-widget/src/androidTest/java/androidx/media/widget/MediaUtils2.java
similarity index 98%
rename from media/src/androidTest/java/androidx/widget/MediaUtils2.java
rename to media-widget/src/androidTest/java/androidx/media/widget/MediaUtils2.java
index 29eb9f6..59b2567 100644
--- a/media/src/androidTest/java/androidx/widget/MediaUtils2.java
+++ b/media-widget/src/androidTest/java/androidx/media/widget/MediaUtils2.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package androidx.widget;
+package androidx.media.widget;
 
 import android.content.Context;
 import android.content.res.AssetFileDescriptor;
diff --git a/media/src/androidTest/java/androidx/widget/VideoView2Test.java b/media-widget/src/androidTest/java/androidx/media/widget/VideoView2Test.java
similarity index 98%
rename from media/src/androidTest/java/androidx/widget/VideoView2Test.java
rename to media-widget/src/androidTest/java/androidx/media/widget/VideoView2Test.java
index 7f3dcfc..2876e47 100644
--- a/media/src/androidTest/java/androidx/widget/VideoView2Test.java
+++ b/media-widget/src/androidTest/java/androidx/media/widget/VideoView2Test.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.widget;
+package androidx.media.widget;
 
 import static android.content.Context.KEYGUARD_SERVICE;
 
@@ -44,7 +44,7 @@
 import android.view.WindowManager;
 
 import androidx.media.AudioAttributesCompat;
-import androidx.media.test.R;
+import androidx.media.widget.test.R;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/media/src/androidTest/java/androidx/widget/VideoView2TestActivity.java b/media-widget/src/androidTest/java/androidx/media/widget/VideoView2TestActivity.java
similarity index 93%
rename from media/src/androidTest/java/androidx/widget/VideoView2TestActivity.java
rename to media-widget/src/androidTest/java/androidx/media/widget/VideoView2TestActivity.java
index 26a9c92..d6a3ebc 100644
--- a/media/src/androidTest/java/androidx/widget/VideoView2TestActivity.java
+++ b/media-widget/src/androidTest/java/androidx/media/widget/VideoView2TestActivity.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package androidx.widget;
+package androidx.media.widget;
 
 import android.app.Activity;
 import android.os.Bundle;
 
-import androidx.media.test.R;
+import androidx.media.widget.test.R;
 
 /**
  * A minimal application for {@link VideoView2} test.
diff --git a/media-widget/src/androidTest/res/layout/videoview2_layout.xml b/media-widget/src/androidTest/res/layout/videoview2_layout.xml
new file mode 100644
index 0000000..40e07d5
--- /dev/null
+++ b/media-widget/src/androidTest/res/layout/videoview2_layout.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <androidx.media.widget.VideoView2
+        android:id="@+id/videoview"
+        android:layout_width="160dp"
+        android:layout_height="120dp"/>
+</LinearLayout>
diff --git a/media-widget/src/androidTest/res/raw/testvideo.3gp b/media-widget/src/androidTest/res/raw/testvideo.3gp
new file mode 100644
index 0000000..8329311
--- /dev/null
+++ b/media-widget/src/androidTest/res/raw/testvideo.3gp
Binary files differ
diff --git a/media-widget/src/androidTest/res/values/themes.xml b/media-widget/src/androidTest/res/values/themes.xml
new file mode 100644
index 0000000..2843f5e
--- /dev/null
+++ b/media-widget/src/androidTest/res/values/themes.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<resources>
+
+    <style name="HasWindowTitle">
+        <item name="windowNoTitle">false</item>
+    </style>
+
+</resources>
\ No newline at end of file
diff --git a/media-widget/src/main/AndroidManifest.xml b/media-widget/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..824903e
--- /dev/null
+++ b/media-widget/src/main/AndroidManifest.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<manifest package="androidx.media.widget"/>
diff --git a/media/src/main/java/androidx/widget/BaseLayout.java b/media-widget/src/main/java/androidx/media/widget/BaseLayout.java
similarity index 93%
rename from media/src/main/java/androidx/widget/BaseLayout.java
rename to media-widget/src/main/java/androidx/media/widget/BaseLayout.java
index 127006e..0b6988a 100644
--- a/media/src/main/java/androidx/widget/BaseLayout.java
+++ b/media-widget/src/main/java/androidx/media/widget/BaseLayout.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.widget;
+package androidx.media.widget;
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
@@ -22,8 +22,6 @@
 import android.util.AttributeSet;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.ViewGroup.LayoutParams;
-import android.view.ViewGroup.MarginLayoutParams;
 
 import androidx.annotation.AttrRes;
 import androidx.annotation.NonNull;
@@ -83,8 +81,8 @@
         int count = getChildCount();
 
         final boolean measureMatchParentChildren =
-                View.MeasureSpec.getMode(widthMeasureSpec) != View.MeasureSpec.EXACTLY
-                        || View.MeasureSpec.getMode(heightMeasureSpec) != View.MeasureSpec.EXACTLY;
+                MeasureSpec.getMode(widthMeasureSpec) != MeasureSpec.EXACTLY
+                        || MeasureSpec.getMode(heightMeasureSpec) != MeasureSpec.EXACTLY;
         mMatchParentChildren.clear();
 
         int maxHeight = 0;
@@ -144,8 +142,8 @@
                     final int width = Math.max(0, getMeasuredWidth()
                             - getPaddingLeftWithForeground() - getPaddingRightWithForeground()
                             - lp.leftMargin - lp.rightMargin);
-                    childWidthMeasureSpec = View.MeasureSpec.makeMeasureSpec(
-                            width, View.MeasureSpec.EXACTLY);
+                    childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(
+                            width, MeasureSpec.EXACTLY);
                 } else {
                     childWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec,
                             getPaddingLeftWithForeground() + getPaddingRightWithForeground()
@@ -157,8 +155,8 @@
                     final int height = Math.max(0, getMeasuredHeight()
                             - getPaddingTopWithForeground() - getPaddingBottomWithForeground()
                             - lp.topMargin - lp.bottomMargin);
-                    childHeightMeasureSpec = View.MeasureSpec.makeMeasureSpec(
-                            height, View.MeasureSpec.EXACTLY);
+                    childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(
+                            height, MeasureSpec.EXACTLY);
                 } else {
                     childHeightMeasureSpec = getChildMeasureSpec(heightMeasureSpec,
                             getPaddingTopWithForeground() + getPaddingBottomWithForeground()
diff --git a/media/src/main/java/androidx/widget/MediaControlView2.java b/media-widget/src/main/java/androidx/media/widget/MediaControlView2.java
similarity index 97%
rename from media/src/main/java/androidx/widget/MediaControlView2.java
rename to media-widget/src/main/java/androidx/media/widget/MediaControlView2.java
index 51d427f..89fa946 100644
--- a/media/src/main/java/androidx/widget/MediaControlView2.java
+++ b/media-widget/src/main/java/androidx/media/widget/MediaControlView2.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright 2018 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.widget;
+package androidx.media.widget;
 
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 
@@ -50,11 +50,7 @@
 import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
 import androidx.annotation.RestrictTo;
-import androidx.media.R;
 import androidx.media.SessionToken2;
-// import androidx.mediarouter.app.MediaRouteButton;
-// import androidx.mediarouter.media.MediaRouter;
-// import androidx.mediarouter.media.MediaRouteSelector;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -64,6 +60,10 @@
 import java.util.List;
 import java.util.Locale;
 
+// import androidx.mediarouter.app.MediaRouteButton;
+// import androidx.mediarouter.media.MediaRouter;
+// import androidx.mediarouter.media.MediaRouteSelector;
+
 /**
  * @hide
  * A View that contains the controls for MediaPlayer2.
@@ -96,7 +96,9 @@
 @RequiresApi(21) // TODO correct minSdk API use incompatibilities and remove before release.
 @RestrictTo(LIBRARY_GROUP)
 public class MediaControlView2 extends BaseLayout {
-    /** @hide */
+    /**
+     * @hide
+     */
     @RestrictTo(LIBRARY_GROUP)
     @IntDef({
             BUTTON_PLAY_PAUSE,
@@ -710,6 +712,7 @@
         return inflater.inflate(resId, null);
     }
 
+    @SuppressWarnings("deprecation")
     private void initControllerView(ViewGroup v) {
         // Relating to Title Bar View
         mTitleBar = v.findViewById(R.id.title_bar);
@@ -819,7 +822,7 @@
         mSettingsWindowMargin = (-1) * mResources.getDimensionPixelSize(
                 R.dimen.mcv2_settings_offset);
         mSettingsWindow = new PopupWindow(mSettingsListView, mEmbeddedSettingsItemWidth,
-                ViewGroup.LayoutParams.WRAP_CONTENT, true);
+                LayoutParams.WRAP_CONTENT, true);
     }
 
     /**
@@ -1033,14 +1036,14 @@
         }
     };
 
-    private final View.OnClickListener mPlayPauseListener = new View.OnClickListener() {
+    private final OnClickListener mPlayPauseListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             togglePausePlayState();
         }
     };
 
-    private final View.OnClickListener mRewListener = new View.OnClickListener() {
+    private final OnClickListener mRewListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             int pos = getCurrentPosition() - REWIND_TIME_MS;
@@ -1049,7 +1052,7 @@
         }
     };
 
-    private final View.OnClickListener mFfwdListener = new View.OnClickListener() {
+    private final OnClickListener mFfwdListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             int pos = getCurrentPosition() + FORWARD_TIME_MS;
@@ -1058,28 +1061,28 @@
         }
     };
 
-    private final View.OnClickListener mNextListener = new View.OnClickListener() {
+    private final OnClickListener mNextListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             mControls.skipToNext();
         }
     };
 
-    private final View.OnClickListener mPrevListener = new View.OnClickListener() {
+    private final OnClickListener mPrevListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             mControls.skipToPrevious();
         }
     };
 
-    private final View.OnClickListener mBackListener = new View.OnClickListener() {
+    private final OnClickListener mBackListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             // TODO: implement
         }
     };
 
-    private final View.OnClickListener mSubtitleListener = new View.OnClickListener() {
+    private final OnClickListener mSubtitleListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             mSettingsMode = SETTINGS_MODE_SUBTITLE_TRACK;
@@ -1089,7 +1092,7 @@
         }
     };
 
-    private final View.OnClickListener mVideoQualityListener = new View.OnClickListener() {
+    private final OnClickListener mVideoQualityListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             mSettingsMode = SETTINGS_MODE_VIDEO_QUALITY;
@@ -1099,7 +1102,7 @@
         }
     };
 
-    private final View.OnClickListener mFullScreenListener = new View.OnClickListener() {
+    private final OnClickListener mFullScreenListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             final boolean isEnteringFullScreen = !mIsFullScreen;
@@ -1119,7 +1122,7 @@
         }
     };
 
-    private final View.OnClickListener mOverflowRightListener = new View.OnClickListener() {
+    private final OnClickListener mOverflowRightListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             mBasicControls.setVisibility(View.GONE);
@@ -1127,7 +1130,7 @@
         }
     };
 
-    private final View.OnClickListener mOverflowLeftListener = new View.OnClickListener() {
+    private final OnClickListener mOverflowLeftListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             mBasicControls.setVisibility(View.VISIBLE);
@@ -1135,7 +1138,7 @@
         }
     };
 
-    private final View.OnClickListener mMuteButtonListener = new View.OnClickListener() {
+    private final OnClickListener mMuteButtonListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             if (!mIsMute) {
@@ -1156,7 +1159,7 @@
         }
     };
 
-    private final View.OnClickListener mSettingsButtonListener = new View.OnClickListener() {
+    private final OnClickListener mSettingsButtonListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
             mSettingsMode = SETTINGS_MODE_MAIN;
@@ -1389,6 +1392,7 @@
         }
     }
 
+    @SuppressWarnings("deprecation")
     private void updateLayoutForSizeChange(int sizeType) {
         mSizeType = sizeType;
         RelativeLayout.LayoutParams timeViewParams =
@@ -1671,7 +1675,7 @@
                     button.setImageResource(action.getIcon());
                     button.setTooltipText(action.getName());
                     final String actionString = action.getAction().toString();
-                    button.setOnClickListener(new View.OnClickListener() {
+                    button.setOnClickListener(new OnClickListener() {
                         @Override
                         public void onClick(View v) {
                             // TODO: Currently, we are just sending extras that came from session.
diff --git a/media/src/main/java/androidx/widget/VideoSurfaceView.java b/media-widget/src/main/java/androidx/media/widget/VideoSurfaceView.java
similarity index 98%
rename from media/src/main/java/androidx/widget/VideoSurfaceView.java
rename to media-widget/src/main/java/androidx/media/widget/VideoSurfaceView.java
index eafa6f3..d417bd2 100644
--- a/media/src/main/java/androidx/widget/VideoSurfaceView.java
+++ b/media-widget/src/main/java/androidx/media/widget/VideoSurfaceView.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package androidx.widget;
+package androidx.media.widget;
 
-import static androidx.widget.VideoView2.VIEW_TYPE_SURFACEVIEW;
+import static androidx.media.widget.VideoView2.VIEW_TYPE_SURFACEVIEW;
 
 import android.content.Context;
 import android.graphics.Rect;
diff --git a/media/src/main/java/androidx/widget/VideoTextureView.java b/media-widget/src/main/java/androidx/media/widget/VideoTextureView.java
similarity index 98%
rename from media/src/main/java/androidx/widget/VideoTextureView.java
rename to media-widget/src/main/java/androidx/media/widget/VideoTextureView.java
index 836fdc3..cdc833b 100644
--- a/media/src/main/java/androidx/widget/VideoTextureView.java
+++ b/media-widget/src/main/java/androidx/media/widget/VideoTextureView.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package androidx.widget;
+package androidx.media.widget;
 
-import static androidx.widget.VideoView2.VIEW_TYPE_TEXTUREVIEW;
+import static androidx.media.widget.VideoView2.VIEW_TYPE_TEXTUREVIEW;
 
 import android.content.Context;
 import android.graphics.SurfaceTexture;
diff --git a/media/src/main/java/androidx/widget/VideoView2.java b/media-widget/src/main/java/androidx/media/widget/VideoView2.java
similarity index 98%
rename from media/src/main/java/androidx/widget/VideoView2.java
rename to media-widget/src/main/java/androidx/media/widget/VideoView2.java
index 3cb1717..a8ea450 100644
--- a/media/src/main/java/androidx/widget/VideoView2.java
+++ b/media-widget/src/main/java/androidx/media/widget/VideoView2.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.widget;
+package androidx.media.widget;
 
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 
@@ -47,7 +47,6 @@
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
-import android.view.ViewGroup.LayoutParams;
 import android.view.WindowManager;
 import android.view.accessibility.AccessibilityManager;
 import android.widget.ImageView;
@@ -63,7 +62,6 @@
 import androidx.media.DataSourceDesc;
 import androidx.media.MediaItem2;
 import androidx.media.MediaMetadata2;
-import androidx.media.R;
 import androidx.media.SessionToken2;
 import androidx.palette.graphics.Palette;
 
@@ -187,9 +185,9 @@
     private int mAudioFocusType = AudioManager.AUDIOFOCUS_GAIN; // legacy focus gain
     private boolean mAudioFocused = false;
 
-    private Pair<Executor, VideoView2.OnCustomActionListener> mCustomActionListenerRecord;
-    private VideoView2.OnViewTypeChangedListener mViewTypeChangedListener;
-    private VideoView2.OnFullScreenRequestListener mFullScreenRequestListener;
+    private Pair<Executor, OnCustomActionListener> mCustomActionListenerRecord;
+    private OnViewTypeChangedListener mViewTypeChangedListener;
+    private OnFullScreenRequestListener mFullScreenRequestListener;
 
     private VideoViewInterface mCurrentView;
     private VideoTextureView mTextureView;
@@ -472,7 +470,7 @@
      * Returns MediaController instance which is connected with MediaSession that VideoView2 is
      * using. This method should be called when VideoView2 is attached to window, or it throws
      * IllegalStateException, since internal MediaSession instance is not available until
-     * this view is attached to window. Please check {@link android.view.View#isAttachedToWindow}
+     * this view is attached to window. Please check {@link View#isAttachedToWindow}
      * before calling this method.
      *
      * @throws IllegalStateException if interal MediaSession is not created yet.
@@ -487,13 +485,14 @@
     }
 
     /**
-     * Returns {@link androidx.media.SessionToken2} so that developers create their own
+     * Returns {@link SessionToken2} so that developers create their own
      * {@link androidx.media.MediaController2} instance. This method should be called when
      * VideoView2 is attached to window, or it throws IllegalStateException.
      *
      * @throws IllegalStateException if interal MediaSession is not created yet.
      * @hide
      */
+    @RestrictTo(LIBRARY_GROUP)
     public SessionToken2 getMediaSessionToken() {
         //return mProvider.getMediaSessionToken_impl();
         return null;
@@ -639,6 +638,7 @@
      * @see #setMediaItem
      * @hide
      */
+    @RestrictTo(LIBRARY_GROUP)
     public void setDataSource(@NonNull DataSourceDesc dataSource) {
         //mProvider.setDataSource_impl(dataSource);
     }
@@ -1004,6 +1004,7 @@
         }
     };
 
+    @SuppressWarnings("deprecation")
     private void requestAudioFocus(int focusType) {
         int result;
         if (android.os.Build.VERSION.SDK_INT >= 26) {
@@ -1091,6 +1092,7 @@
     /*
      * Reset the media player in any state
      */
+    @SuppressWarnings("deprecation")
     private void resetPlayer() {
         if (mMediaPlayer != null) {
             mMediaPlayer.reset();
@@ -1352,6 +1354,7 @@
         }
     }
 
+    @SuppressWarnings("deprecation")
     private void extractAudioMetadata() {
         if (!mIsMusicMediaType) {
             return;
@@ -1583,6 +1586,7 @@
 
     MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {
         @Override
+        @SuppressWarnings("deprecation")
         public void onCompletion(MediaPlayer mp) {
             mCurrentState = STATE_PLAYBACK_COMPLETED;
             mTargetState = STATE_PLAYBACK_COMPLETED;
diff --git a/media/src/main/java/androidx/widget/VideoViewInterface.java b/media-widget/src/main/java/androidx/media/widget/VideoViewInterface.java
similarity index 98%
rename from media/src/main/java/androidx/widget/VideoViewInterface.java
rename to media-widget/src/main/java/androidx/media/widget/VideoViewInterface.java
index eca8c82..81b40a9 100644
--- a/media/src/main/java/androidx/widget/VideoViewInterface.java
+++ b/media-widget/src/main/java/androidx/media/widget/VideoViewInterface.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.widget;
+package androidx.media.widget;
 
 import android.media.MediaPlayer;
 import android.view.View;
diff --git a/media/src/main/res/drawable/custom_progress.xml b/media-widget/src/main/res/drawable/custom_progress.xml
similarity index 100%
rename from media/src/main/res/drawable/custom_progress.xml
rename to media-widget/src/main/res/drawable/custom_progress.xml
diff --git a/media/src/main/res/drawable/custom_progress_thumb.xml b/media-widget/src/main/res/drawable/custom_progress_thumb.xml
similarity index 100%
rename from media/src/main/res/drawable/custom_progress_thumb.xml
rename to media-widget/src/main/res/drawable/custom_progress_thumb.xml
diff --git a/media/src/main/res/drawable/ic_arrow_back.xml b/media-widget/src/main/res/drawable/ic_arrow_back.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_arrow_back.xml
rename to media-widget/src/main/res/drawable/ic_arrow_back.xml
diff --git a/media/src/main/res/drawable/ic_aspect_ratio.xml b/media-widget/src/main/res/drawable/ic_aspect_ratio.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_aspect_ratio.xml
rename to media-widget/src/main/res/drawable/ic_aspect_ratio.xml
diff --git a/media/src/main/res/drawable/ic_audiotrack.xml b/media-widget/src/main/res/drawable/ic_audiotrack.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_audiotrack.xml
rename to media-widget/src/main/res/drawable/ic_audiotrack.xml
diff --git a/media/src/main/res/drawable/ic_check.xml b/media-widget/src/main/res/drawable/ic_check.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_check.xml
rename to media-widget/src/main/res/drawable/ic_check.xml
diff --git a/media/src/main/res/drawable/ic_chevron_left.xml b/media-widget/src/main/res/drawable/ic_chevron_left.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_chevron_left.xml
rename to media-widget/src/main/res/drawable/ic_chevron_left.xml
diff --git a/media/src/main/res/drawable/ic_chevron_right.xml b/media-widget/src/main/res/drawable/ic_chevron_right.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_chevron_right.xml
rename to media-widget/src/main/res/drawable/ic_chevron_right.xml
diff --git a/media/src/main/res/drawable/ic_default_album_image.xml b/media-widget/src/main/res/drawable/ic_default_album_image.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_default_album_image.xml
rename to media-widget/src/main/res/drawable/ic_default_album_image.xml
diff --git a/media/src/main/res/drawable/ic_forward_30.xml b/media-widget/src/main/res/drawable/ic_forward_30.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_forward_30.xml
rename to media-widget/src/main/res/drawable/ic_forward_30.xml
diff --git a/media/src/main/res/drawable/ic_fullscreen.xml b/media-widget/src/main/res/drawable/ic_fullscreen.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_fullscreen.xml
rename to media-widget/src/main/res/drawable/ic_fullscreen.xml
diff --git a/media/src/main/res/drawable/ic_fullscreen_exit.xml b/media-widget/src/main/res/drawable/ic_fullscreen_exit.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_fullscreen_exit.xml
rename to media-widget/src/main/res/drawable/ic_fullscreen_exit.xml
diff --git a/media/src/main/res/drawable/ic_help.xml b/media-widget/src/main/res/drawable/ic_help.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_help.xml
rename to media-widget/src/main/res/drawable/ic_help.xml
diff --git a/media/src/main/res/drawable/ic_high_quality.xml b/media-widget/src/main/res/drawable/ic_high_quality.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_high_quality.xml
rename to media-widget/src/main/res/drawable/ic_high_quality.xml
diff --git a/media/src/main/res/drawable/ic_launch.xml b/media-widget/src/main/res/drawable/ic_launch.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_launch.xml
rename to media-widget/src/main/res/drawable/ic_launch.xml
diff --git a/media/src/main/res/drawable/ic_mute.xml b/media-widget/src/main/res/drawable/ic_mute.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_mute.xml
rename to media-widget/src/main/res/drawable/ic_mute.xml
diff --git a/media/src/main/res/drawable/ic_pause_circle_filled.xml b/media-widget/src/main/res/drawable/ic_pause_circle_filled.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_pause_circle_filled.xml
rename to media-widget/src/main/res/drawable/ic_pause_circle_filled.xml
diff --git a/media/src/main/res/drawable/ic_play_circle_filled.xml b/media-widget/src/main/res/drawable/ic_play_circle_filled.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_play_circle_filled.xml
rename to media-widget/src/main/res/drawable/ic_play_circle_filled.xml
diff --git a/media/src/main/res/drawable/ic_replay_circle_filled.xml b/media-widget/src/main/res/drawable/ic_replay_circle_filled.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_replay_circle_filled.xml
rename to media-widget/src/main/res/drawable/ic_replay_circle_filled.xml
diff --git a/media/src/main/res/drawable/ic_rewind_10.xml b/media-widget/src/main/res/drawable/ic_rewind_10.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_rewind_10.xml
rename to media-widget/src/main/res/drawable/ic_rewind_10.xml
diff --git a/media/src/main/res/drawable/ic_sd.xml b/media-widget/src/main/res/drawable/ic_sd.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_sd.xml
rename to media-widget/src/main/res/drawable/ic_sd.xml
diff --git a/media/src/main/res/drawable/ic_settings.xml b/media-widget/src/main/res/drawable/ic_settings.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_settings.xml
rename to media-widget/src/main/res/drawable/ic_settings.xml
diff --git a/media/src/main/res/drawable/ic_skip_next.xml b/media-widget/src/main/res/drawable/ic_skip_next.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_skip_next.xml
rename to media-widget/src/main/res/drawable/ic_skip_next.xml
diff --git a/media/src/main/res/drawable/ic_skip_previous.xml b/media-widget/src/main/res/drawable/ic_skip_previous.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_skip_previous.xml
rename to media-widget/src/main/res/drawable/ic_skip_previous.xml
diff --git a/media/src/main/res/drawable/ic_subtitle_off.xml b/media-widget/src/main/res/drawable/ic_subtitle_off.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_subtitle_off.xml
rename to media-widget/src/main/res/drawable/ic_subtitle_off.xml
diff --git a/media/src/main/res/drawable/ic_subtitle_on.xml b/media-widget/src/main/res/drawable/ic_subtitle_on.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_subtitle_on.xml
rename to media-widget/src/main/res/drawable/ic_subtitle_on.xml
diff --git a/media/src/main/res/drawable/ic_unmute.xml b/media-widget/src/main/res/drawable/ic_unmute.xml
similarity index 100%
rename from media/src/main/res/drawable/ic_unmute.xml
rename to media-widget/src/main/res/drawable/ic_unmute.xml
diff --git a/media/src/main/res/layout/embedded_music.xml b/media-widget/src/main/res/layout/embedded_music.xml
similarity index 100%
rename from media/src/main/res/layout/embedded_music.xml
rename to media-widget/src/main/res/layout/embedded_music.xml
diff --git a/media/src/main/res/layout/embedded_settings_list_item.xml b/media-widget/src/main/res/layout/embedded_settings_list_item.xml
similarity index 100%
rename from media/src/main/res/layout/embedded_settings_list_item.xml
rename to media-widget/src/main/res/layout/embedded_settings_list_item.xml
diff --git a/media/src/main/res/layout/embedded_sub_settings_list_item.xml b/media-widget/src/main/res/layout/embedded_sub_settings_list_item.xml
similarity index 100%
rename from media/src/main/res/layout/embedded_sub_settings_list_item.xml
rename to media-widget/src/main/res/layout/embedded_sub_settings_list_item.xml
diff --git a/media/src/main/res/layout/embedded_transport_controls.xml b/media-widget/src/main/res/layout/embedded_transport_controls.xml
similarity index 100%
rename from media/src/main/res/layout/embedded_transport_controls.xml
rename to media-widget/src/main/res/layout/embedded_transport_controls.xml
diff --git a/media/src/main/res/layout/full_landscape_music.xml b/media-widget/src/main/res/layout/full_landscape_music.xml
similarity index 100%
rename from media/src/main/res/layout/full_landscape_music.xml
rename to media-widget/src/main/res/layout/full_landscape_music.xml
diff --git a/media/src/main/res/layout/full_portrait_music.xml b/media-widget/src/main/res/layout/full_portrait_music.xml
similarity index 100%
rename from media/src/main/res/layout/full_portrait_music.xml
rename to media-widget/src/main/res/layout/full_portrait_music.xml
diff --git a/media/src/main/res/layout/full_settings_list_item.xml b/media-widget/src/main/res/layout/full_settings_list_item.xml
similarity index 100%
rename from media/src/main/res/layout/full_settings_list_item.xml
rename to media-widget/src/main/res/layout/full_settings_list_item.xml
diff --git a/media/src/main/res/layout/full_sub_settings_list_item.xml b/media-widget/src/main/res/layout/full_sub_settings_list_item.xml
similarity index 100%
rename from media/src/main/res/layout/full_sub_settings_list_item.xml
rename to media-widget/src/main/res/layout/full_sub_settings_list_item.xml
diff --git a/media/src/main/res/layout/full_transport_controls.xml b/media-widget/src/main/res/layout/full_transport_controls.xml
similarity index 100%
rename from media/src/main/res/layout/full_transport_controls.xml
rename to media-widget/src/main/res/layout/full_transport_controls.xml
diff --git a/media/src/main/res/layout/media_controller.xml b/media-widget/src/main/res/layout/media_controller.xml
similarity index 100%
rename from media/src/main/res/layout/media_controller.xml
rename to media-widget/src/main/res/layout/media_controller.xml
diff --git a/media/src/main/res/layout/minimal_transport_controls.xml b/media-widget/src/main/res/layout/minimal_transport_controls.xml
similarity index 100%
rename from media/src/main/res/layout/minimal_transport_controls.xml
rename to media-widget/src/main/res/layout/minimal_transport_controls.xml
diff --git a/media/src/main/res/layout/settings_list.xml b/media-widget/src/main/res/layout/settings_list.xml
similarity index 100%
rename from media/src/main/res/layout/settings_list.xml
rename to media-widget/src/main/res/layout/settings_list.xml
diff --git a/media/src/main/res/layout/title_bar_gradient.xml b/media-widget/src/main/res/layout/title_bar_gradient.xml
similarity index 100%
rename from media/src/main/res/layout/title_bar_gradient.xml
rename to media-widget/src/main/res/layout/title_bar_gradient.xml
diff --git a/media/src/main/res/values/arrays.xml b/media-widget/src/main/res/values/arrays.xml
similarity index 100%
rename from media/src/main/res/values/arrays.xml
rename to media-widget/src/main/res/values/arrays.xml
diff --git a/media-widget/src/main/res/values/colors.xml b/media-widget/src/main/res/values/colors.xml
new file mode 100644
index 0000000..3aff9da
--- /dev/null
+++ b/media-widget/src/main/res/values/colors.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+  -->
+<resources>
+
+    <!-- The color of the material notification background for media notifications when no custom
+     color is specified -->
+    <color name="notification_material_background_media_default_color">#ff424242</color>
+
+    <color name="gray">#808080</color>
+    <color name="white">#ffffff</color>
+    <color name="white_opacity_70">#B3ffffff</color>
+    <color name="black_opacity_70">#B3000000</color>
+    <color name="title_bar_gradient_start">#50000000</color>
+    <color name="title_bar_gradient_end">#00000000</color>
+    <color name="bottom_bar_background">#40202020</color>
+</resources>
\ No newline at end of file
diff --git a/media-widget/src/main/res/values/dimens.xml b/media-widget/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..796f345
--- /dev/null
+++ b/media-widget/src/main/res/values/dimens.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+  -->
+
+<resources>
+    <dimen name="mcv2_embedded_settings_width">150dp</dimen>
+    <dimen name="mcv2_embedded_settings_height">36dp</dimen>
+    <dimen name="mcv2_embedded_settings_icon_size">20dp</dimen>
+    <dimen name="mcv2_embedded_settings_text_height">18dp</dimen>
+    <dimen name="mcv2_embedded_settings_main_text_size">12sp</dimen>
+    <dimen name="mcv2_embedded_settings_sub_text_size">10sp</dimen>
+    <dimen name="mcv2_full_settings_width">225dp</dimen>
+    <dimen name="mcv2_full_settings_height">54dp</dimen>
+    <dimen name="mcv2_full_settings_icon_size">30dp</dimen>
+    <dimen name="mcv2_full_settings_text_height">27dp</dimen>
+    <dimen name="mcv2_full_settings_main_text_size">16sp</dimen>
+    <dimen name="mcv2_full_settings_sub_text_size">13sp</dimen>
+    <dimen name="mcv2_settings_offset">8dp</dimen>
+
+    <dimen name="mcv2_transport_controls_padding">4dp</dimen>
+    <dimen name="mcv2_pause_icon_size">36dp</dimen>
+    <dimen name="mcv2_full_icon_size">28dp</dimen>
+    <dimen name="mcv2_embedded_icon_size">24dp</dimen>
+    <dimen name="mcv2_minimal_icon_size">24dp</dimen>
+    <dimen name="mcv2_icon_margin">10dp</dimen>
+
+    <dimen name="mcv2_full_album_image_portrait_size">232dp</dimen>
+    <dimen name="mcv2_full_album_image_landscape_size">176dp</dimen>
+
+    <dimen name="mcv2_custom_progress_max_size">2dp</dimen>
+    <dimen name="mcv2_custom_progress_thumb_size">12dp</dimen>
+    <dimen name="mcv2_buffer_view_height">5dp</dimen>
+</resources>
diff --git a/media/src/main/res/values/strings.xml b/media-widget/src/main/res/values/strings.xml
similarity index 92%
rename from media/src/main/res/values/strings.xml
rename to media-widget/src/main/res/values/strings.xml
index 4f46ccf..10889df 100644
--- a/media/src/main/res/values/strings.xml
+++ b/media-widget/src/main/res/values/strings.xml
@@ -1,22 +1,22 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2018 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
+<!--
+  ~ Copyright 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-
     <!-- Name for the default system route prior to Jellybean. [CHAR LIMIT=30] -->
     <string name="mr_system_route_name">System</string>
 
@@ -48,7 +48,7 @@
     <!-- Button to disconnect from a media route.  [CHAR LIMIT=30] -->
     <string name="mr_controller_disconnect">Disconnect</string>
 
-    <!-- Button to stop playback and disconnect from a media route. [CHAR LIMIT=30] -->
+    <!-- Button to stop playback and disconnect from a media route. [CHAR LIMIT=32] -->
     <string name="mr_controller_stop_casting">Stop casting</string>
 
     <!-- Content description for accessibility (not shown on the screen): dialog close button. [CHAR LIMIT=NONE] -->
diff --git a/media/src/main/res/values/style.xml b/media-widget/src/main/res/values/styles.xml
similarity index 100%
rename from media/src/main/res/values/style.xml
rename to media-widget/src/main/res/values/styles.xml
diff --git a/media/build.gradle b/media/build.gradle
index ee0744b..eda587d 100644
--- a/media/build.gradle
+++ b/media/build.gradle
@@ -9,7 +9,6 @@
 dependencies {
     api(project(":annotation"))
     api(project(":core"))
-    api(project(":palette"))
 
     androidTestImplementation(TEST_RUNNER_TMP, libs.exclude_for_espresso)
     androidTestImplementation(ESPRESSO_CORE_TMP, libs.exclude_for_espresso)
diff --git a/media/src/androidTest/AndroidManifest.xml b/media/src/androidTest/AndroidManifest.xml
index 4fd25ca..32987a5 100644
--- a/media/src/androidTest/AndroidManifest.xml
+++ b/media/src/androidTest/AndroidManifest.xml
@@ -19,14 +19,6 @@
     <uses-sdk android:targetSdkVersion="${target-sdk-version}"/>
 
     <application>
-        <activity android:name="androidx.widget.VideoView2TestActivity"
-            android:configChanges="keyboardHidden|orientation|screenSize"
-            android:label="VideoVeiw2TestActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
         <activity android:name="androidx.media.MediaStubActivity"
                   android:label="MediaStubActivity"
                   android:screenOrientation="nosensor"
diff --git a/media/src/androidTest/res/layout/videoview2_layout.xml b/media/src/androidTest/res/layout/videoview2_layout.xml
deleted file mode 100644
index e3783c0..0000000
--- a/media/src/androidTest/res/layout/videoview2_layout.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <androidx.widget.VideoView2
-        android:id="@+id/videoview"
-        android:layout_width="160dp"
-        android:layout_height="120dp"/>
-</LinearLayout>
diff --git a/media/src/main/res/values/colors.xml b/media/src/main/res/values/colors.xml
index e44662a..d210220 100644
--- a/media/src/main/res/values/colors.xml
+++ b/media/src/main/res/values/colors.xml
@@ -19,12 +19,4 @@
     <!-- The color of the material notification background for media notifications when no custom
      color is specified -->
     <color name="notification_material_background_media_default_color">#ff424242</color>
-
-    <color name="gray">#808080</color>
-    <color name="white">#ffffff</color>
-    <color name="white_opacity_70">#B3ffffff</color>
-    <color name="black_opacity_70">#B3000000</color>
-    <color name="title_bar_gradient_start">#50000000</color>
-    <color name="title_bar_gradient_end">#00000000</color>
-    <color name="bottom_bar_background">#40202020</color>
 </resources>
\ No newline at end of file
diff --git a/media/src/main/res/values/dimens.xml b/media/src/main/res/values/dimens.xml
deleted file mode 100644
index 2d7b022..0000000
--- a/media/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2018 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <!-- Dialog size -->
-    <eat-comment />
-    <!-- The platform's desired fixed width for a dialog along the major axis
-         (the screen is in landscape). This may be either a fraction or a dimension.-->
-    <dimen name="mr_dialog_fixed_width_major">320dp</dimen>
-    <!-- The platform's desired fixed width for a dialog along the minor axis
-         (the screen is in portrait). This may be either a fraction or a dimension.-->
-    <dimen name="mr_dialog_fixed_width_minor">320dp</dimen>
-
-    <!-- MediaRouteController's volume group list -->
-    <eat-comment />
-    <!-- Maximum height of volume group list. -->
-    <dimen name="mr_controller_volume_group_list_max_height">288dp</dimen>
-    <!-- Height of volume group item. -->
-    <dimen name="mr_controller_volume_group_list_item_height">68dp</dimen>
-    <!-- Size of an item's icon. -->
-    <dimen name="mr_controller_volume_group_list_item_icon_size">24dp</dimen>
-
-    <dimen name="mr_controller_volume_group_list_padding_top">16dp</dimen>
-    <!-- Group list expand/collapse animation duration. -->
-    <integer name="mr_controller_volume_group_list_animation_duration_ms">400</integer>
-    <!-- Group list fade in animation duration. -->
-    <integer name="mr_controller_volume_group_list_fade_in_duration_ms">400</integer>
-    <!-- Group list fade out animation duration. -->
-    <integer name="mr_controller_volume_group_list_fade_out_duration_ms">200</integer>
-
-    <dimen name="mcv2_embedded_settings_width">150dp</dimen>
-    <dimen name="mcv2_embedded_settings_height">36dp</dimen>
-    <dimen name="mcv2_embedded_settings_icon_size">20dp</dimen>
-    <dimen name="mcv2_embedded_settings_text_height">18dp</dimen>
-    <dimen name="mcv2_embedded_settings_main_text_size">12sp</dimen>
-    <dimen name="mcv2_embedded_settings_sub_text_size">10sp</dimen>
-    <dimen name="mcv2_full_settings_width">225dp</dimen>
-    <dimen name="mcv2_full_settings_height">54dp</dimen>
-    <dimen name="mcv2_full_settings_icon_size">30dp</dimen>
-    <dimen name="mcv2_full_settings_text_height">27dp</dimen>
-    <dimen name="mcv2_full_settings_main_text_size">16sp</dimen>
-    <dimen name="mcv2_full_settings_sub_text_size">13sp</dimen>
-    <dimen name="mcv2_settings_offset">8dp</dimen>
-
-    <dimen name="mcv2_transport_controls_padding">4dp</dimen>
-    <dimen name="mcv2_pause_icon_size">36dp</dimen>
-    <dimen name="mcv2_full_icon_size">28dp</dimen>
-    <dimen name="mcv2_embedded_icon_size">24dp</dimen>
-    <dimen name="mcv2_minimal_icon_size">24dp</dimen>
-    <dimen name="mcv2_icon_margin">10dp</dimen>
-
-    <dimen name="mcv2_full_album_image_portrait_size">232dp</dimen>
-    <dimen name="mcv2_full_album_image_landscape_size">176dp</dimen>
-
-    <dimen name="mcv2_custom_progress_max_size">2dp</dimen>
-    <dimen name="mcv2_custom_progress_thumb_size">12dp</dimen>
-    <dimen name="mcv2_buffer_view_height">5dp</dimen>
-    <!-- TODO: adjust bottom bar view -->
-</resources>
diff --git a/media/src/main/res/values/symbols.xml b/media/src/main/res/values/symbols.xml
deleted file mode 100644
index ee0e8c6..0000000
--- a/media/src/main/res/values/symbols.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/* Copyright 2017, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources>
-    <!--java-symbol type="id" name="cc" />
-    <java-symbol type="id" name="ffwd" />
-    <java-symbol type="id" name="mediacontroller_progress" />
-    <java-symbol type="id" name="next" />
-    <java-symbol type="id" name="pause" />
-    <java-symbol type="id" name="prev" />
-    <java-symbol type="id" name="rew" />
-    <java-symbol type="id" name="time" />
-    <java-symbol type="id" name="time_current" /-->
-</resources>
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index 7ec91e5..0a2d8ce 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -66,6 +66,7 @@
 includeProject(":loader", "loader")
 includeProject(":localbroadcastmanager", "localbroadcastmanager")
 includeProject(":media", "media")
+includeProject(":media-widget", "media-widget")
 includeProject(":mediarouter", "mediarouter")
 includeProject(":palette", "palette")
 includeProject(":percentlayout", "percent")