Commit 32626d73 authored by wanglei's avatar wanglei

...

parent 45731203
...@@ -59,5 +59,9 @@ dependencies { ...@@ -59,5 +59,9 @@ dependencies {
implementation("androidx.camera:camera-view:${cameraxVersion}") implementation("androidx.camera:camera-view:${cameraxVersion}")
implementation("androidx.camera:camera-lifecycle:${cameraxVersion}") implementation("androidx.camera:camera-lifecycle:${cameraxVersion}")
//播放器
implementation("androidx.media3:media3-exoplayer:1.4.0")
implementation("androidx.media3:media3-ui:1.4.0")
} }
\ No newline at end of file
...@@ -35,6 +35,18 @@ ...@@ -35,6 +35,18 @@
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:name=".ui.activity.mediabrowser.MediaVideoDetailActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.activity.mediabrowser.MediaImageDetailActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".ui.activity.mediabrowser.MediaBrowserActivity" android:name=".ui.activity.mediabrowser.MediaBrowserActivity"
android:exported="false" android:exported="false"
......
package com.base.browserwhite.ui.activity.mediabrowser package com.base.browserwhite.ui.activity.mediabrowser
import android.content.Intent
import android.graphics.Color import android.graphics.Color
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
...@@ -13,6 +14,7 @@ import com.base.browserwhite.ui.activity.BaseActivity ...@@ -13,6 +14,7 @@ import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.adapter.MediaAdapter import com.base.browserwhite.ui.adapter.MediaAdapter
import com.base.browserwhite.ui.fragment.FileFragment import com.base.browserwhite.ui.fragment.FileFragment
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.MediaStoreUtils.getMediaAudio import com.base.browserwhite.utils.MediaStoreUtils.getMediaAudio
import com.base.browserwhite.utils.MediaStoreUtils.getMediaAudioSize import com.base.browserwhite.utils.MediaStoreUtils.getMediaAudioSize
import com.base.browserwhite.utils.MediaStoreUtils.getMediaFile import com.base.browserwhite.utils.MediaStoreUtils.getMediaFile
...@@ -27,6 +29,8 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() { ...@@ -27,6 +29,8 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() {
override val binding: ActivityMediaBrowserBinding by lazy { override val binding: ActivityMediaBrowserBinding by lazy {
ActivityMediaBrowserBinding.inflate(layoutInflater) ActivityMediaBrowserBinding.inflate(layoutInflater)
} }
private val TAG = "MediaBrowserActivity"
private lateinit var adapter: MediaAdapter private lateinit var adapter: MediaAdapter
private var tittle: String = "" private var tittle: String = ""
override fun initView() { override fun initView() {
...@@ -41,7 +45,16 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() { ...@@ -41,7 +45,16 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() {
when (tittle) { when (tittle) {
"Picture", "Video" -> { "Picture", "Video" -> {
adapter = MediaAdapter(1) adapter = MediaAdapter(1, clickAction = { bean ->
if (tittle == "Picture") {
startActivity(Intent(this, MediaImageDetailActivity::class.java))
} else {
LogEx.logDebug(TAG, "uri=${bean.uri}")
val videoIntent = Intent(this, MediaVideoDetailActivity::class.java)
videoIntent.putExtra("uri", bean.uri.toString())
startActivity(videoIntent)
}
})
binding.rv.layoutManager = GridLayoutManager(this, 4).apply { binding.rv.layoutManager = GridLayoutManager(this, 4).apply {
spanSizeLookup = object : SpanSizeLookup() { spanSizeLookup = object : SpanSizeLookup() {
override fun getSpanSize(position: Int): Int { override fun getSpanSize(position: Int): Int {
...@@ -98,7 +111,7 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() { ...@@ -98,7 +111,7 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() {
) )
"Music" -> getMediaAudio() "Music" -> getMediaAudio()
"Zip"-> getMediaFile( "Zip" -> getMediaFile(
arrayOf( arrayOf(
ConstObject.MIME_TYPE_ZIP ConstObject.MIME_TYPE_ZIP
) )
......
package com.base.browserwhite.ui.activity.mediabrowser
import com.base.browserwhite.databinding.ActivityMediaImageDetailBinding
import com.base.browserwhite.ui.activity.BaseActivity
class MediaImageDetailActivity : BaseActivity<ActivityMediaImageDetailBinding>() {
override val binding: ActivityMediaImageDetailBinding by lazy {
ActivityMediaImageDetailBinding.inflate(layoutInflater)
}
override fun initView() {
}
}
\ No newline at end of file
package com.base.browserwhite.ui.activity.mediabrowser
import androidx.media3.common.MediaItem
import androidx.media3.exoplayer.ExoPlayer
import com.base.browserwhite.databinding.ActivityMediaVideoDetailBinding
import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.utils.LogEx
class MediaVideoDetailActivity : BaseActivity<ActivityMediaVideoDetailBinding>() {
private val TAG = "MediaVideoDetailActivity"
override val binding: ActivityMediaVideoDetailBinding by lazy {
ActivityMediaVideoDetailBinding.inflate(layoutInflater)
}
private lateinit var player: ExoPlayer
override fun initView() {
val uri = intent.extras?.getString("uri")?:""
LogEx.logDebug(TAG, "uri=$uri")
player = ExoPlayer.Builder(this).build()
binding.playerView.player = player
val mediaItem = MediaItem.fromUri(uri)
player.setMediaItem(mediaItem)
player.prepare()
player.play()
}
override fun onPause() {
super.onPause()
player.pause()
}
override fun onResume() {
super.onResume()
player.play()
}
}
\ No newline at end of file
...@@ -175,6 +175,7 @@ object MediaStoreUtils { ...@@ -175,6 +175,7 @@ object MediaStoreUtils {
while (cursor.moveToNext()) { while (cursor.moveToNext()) {
val id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID)) val id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID))
val uri = Uri.withAppendedPath(baseUri, id.toString()) val uri = Uri.withAppendedPath(baseUri, id.toString())
LogEx.logDebug(TAG, "getMediaVideo uri=$uri")
val path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA)) val path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA))
val mimeType = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE)) val mimeType = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE))
list.add(MediaBean(path = path, uri = uri, mimeType = mimeType)) list.add(MediaBean(path = path, uri = uri, mimeType = mimeType))
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.activity.mediabrowser.MediaImageDetailActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.activity.mediabrowser.MediaVideoDetailActivity">
<androidx.media3.ui.PlayerView
android:id="@+id/playerView"
android:layout_width="match_parent"
android:layout_height="300dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -16,11 +16,11 @@ dependencyResolutionManagement { ...@@ -16,11 +16,11 @@ dependencyResolutionManagement {
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
maven("https://s01.oss.sonatype.org/content/groups/public" )
maven("https://jitpack.io") maven("https://jitpack.io")
maven("https://android-sdk.is.com" ) maven("https://android-sdk.is.com" )
maven("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" ) maven("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" )
maven("https://artifact.bytedance.com/repository/pangle" ) maven("https://artifact.bytedance.com/repository/pangle" )
maven("https://s01.oss.sonatype.org/content/groups/public" )
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment