1.导包

    implementation 'com.google.android.exoplayer:exoplayer-core:2.15.1'
    implementation 'com.google.android.exoplayer:exoplayer-ui:2.15.1'

2.在Androidifest.xml加入权限,我这里加了网络与读写权限

 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

 3.布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.exoplayer2.ui.PlayerView
        android:id="@+id/player_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</RelativeLayout>

这时候我去运行了一下,发现出现报错:
 Error inflating class com.google.android.exoplayer2.ui.SimpleExoPlayerView但是我有这个报错里面的属性。后来经过查询,找到了解决方案,这不是任何开发错误,因为如果它是任何代码错误,那么它应该已经在多个设备上发生。因此,我最后的手段是纠正到底发生了什么。由于应用程序的apk是作为捆绑包上传的,因此如果用户在通过ShareIt或Whatsapp共享捆绑包apk (侧加载)之后安装应用程序,它将崩溃,因为它是应用程序捆绑包的属性,我们不能共享从捆绑包生成的APK。然后我在build.gradle里面加了一句话就可以了。

4.ExoPlayer正常使用,因为我使用的是开发板,所以我直接指定的绝对地址:

package com.example.exoplayer

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.google.android.exoplayer2.MediaItem
import com.google.android.exoplayer2.SimpleExoPlayer
import kotlinx.android.synthetic.main.activity_main.*


class MainActivity : AppCompatActivity() {

    private var mPlayer: SimpleExoPlayer? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        mPlayer = SimpleExoPlayer.Builder(this).build()
        player_view!!.player = mPlayer

        //也可以把这个地址替换成网络地址
        val videoUrl = "/sdcard/Download/VID_20240229_102508.mp4"
        val mediaItem = MediaItem.fromUri(videoUrl)
        mPlayer!!.setMediaItem(mediaItem)
        mPlayer!!.prepare()

        mPlayer!!.play()

    }
}

GitHub 加速计划 / ex / ExoPlayer
21.67 K
6 K
下载
最近提交(Master分支:3 个月前 )
dd430f70 - 3 个月前
c00f90aa (cherry picked from commit 5b2b7f4e6147678dc56ce28826682ba21c4c9508) 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐