赞
踩
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()
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。