【问题标题】:How to use the new AndroidX Media2?如何使用新的AndroidX Media2?
【发布时间】:2020-12-09 20:11:17
【问题描述】:

我使用Media App Architecture 作为构建音乐播放器应用程序的指南。但它使用来自 support media-compat / Androidx Media 的类。

但是现在AndroidX Media2 可以在稳定的频道中使用,我没有看到任何消息。这是什么?

  • AndroidX Media2 是否应该弃用 AndroidX Media
  • 是否有适用于 AndroidX Media2 的开发人员指南或其他文档来源?

请不要链接到 JavaDoc,谢谢。

【问题讨论】:

    标签: android android-mediaplayer android-mediasession


    【解决方案1】:

    Jetpack Media3 已推出!
    https://developer.android.com/jetpack/androidx/releases/media3

    This blog post gives a great explanation about how the media libraries evolved. 我强烈建议androidx.media3集成。

    如果您出于某种原因不能使用androidx.media3,我的建议是坚持使用androidx.media 而不是androidx.media2,因为后者不受其他媒体集成的支持,例如 Cast连接。将 Media2 与 ExoPlayer 集成也相当复杂。

    在我看来,从 Media1 切换到 Media2 的主要好处是能够提供更细粒度的权限控制。 See Jaewan Kim's blog post 深入介绍了更复杂的 SessionPlayerConnector API 以及在 media2 中接受或拒绝来自控制器的连接的权限。

    如果您有使用 MediaSession 的现有 Media1 实现(最好使用带有 MediaSessionConnector 的 ExoPlayer),并且不需要 Media2 中的权限控制,您可以坚持使用 Media1 或升级到 Media3。

    2021 年 Android 开发者峰会的 “What's next for AndroidX Media and ExoPlayer” 演讲更深入地探讨了 Media3。

    【讨论】:

    • 还是应该使用androidx.media吗?我很难在 androix.media2 上找到示例和文档,这是肯定的......
    • 是的,当然。我建议坚持使用 androidx.media。
    • 我已经更新了这里的建议 Media3 has launched;我建议迁移到 androidx.media3。
    【解决方案2】:

    我能找到的所有文档都是无用且过时的。 androidx.media 和 appcompat 媒体库都被 androidx.media2 取代(但由于某种原因没有被弃用)。媒体应用程序的最高级别 API 似乎是服务的 MediaLibraryService 和前端的 MediaBrowser。只需绝对确保您在服务上声明了正确的意图过滤器(在 javadoc 中 :P)

    【讨论】:

      【解决方案3】:

      这是我使用 Media2 库 (AndroidX) 的工作解决方案:

      1. 在 Build.gradle 中添加 3 个依赖项
      implementation "androidx.media2:media2-session:1.2.0"
      implementation "androidx.media2:media2-widget:1.2.0"
      implementation "androidx.media2:media2-player:1.2.0"
      
      1. 创建布局activity_video_player.xml并将这段代码放入其中:

         <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:id="@+id/accompany_agent_details"
             style="@style/Layout.Default">
             <LinearLayout
                 android:id="@+id/videoLayout"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_alignParentStart="true"
                 android:layout_alignParentLeft="true"
                 android:layout_alignParentTop="true"
                 android:orientation="vertical">
        
                 <android.widget.VideoView android:id="@+id/simpleVideoView"
                     android:layout_width="match_parent"
                     android:layout_height="300dp" />
             </LinearLayout>
         </RelativeLayout>
        
         <style name="Layout.Default">
             <item name="android:layout_width">match_parent</item>
             <item name="android:layout_height">match_parent</item>
         </style>
        
      2. 创建活动类SimpleVideoActivity:

          public class VideoPlayerActivity extends FragmentActivity {
          
              @Override
              protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.activity_video_player_android_x);
                  VideoView simpleVideoView = findViewById(R.id.simpleVideoView);
                  MediaMetadata mediaMetaData = new MediaMetadata.Builder().putString(MediaMetadata.METADATA_KEY_TITLE, "Put your video text here").build();
                  UriMediaItem item = new UriMediaItem.Builder(Uri.parse("Put your video URL here")).setMetadata(mediaMetaData).build();
                  MediaPlayer mediaPlayer = new MediaPlayer(this);
                  simpleVideoView.setPlayer(mediaPlayer);
                  mediaPlayer.setMediaItem(item);
                  mediaPlayer.prepare();
                  mediaPlayer.play();
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2019-12-19
        • 1970-01-01
        • 2019-03-11
        • 2018-09-23
        • 2019-12-22
        • 1970-01-01
        • 1970-01-01
        • 2020-01-09
        • 2020-02-25
        相关资源
        最近更新 更多