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.PlayerViewandroid: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.exoplayerimport 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? = nulloverride 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()}
}