From b62af9648b655ce92a623ab915f1f664b01e96f6 Mon Sep 17 00:00:00 2001 From: lxh2875931338 Date: Thu, 22 Oct 2026 22:04:57 +0800 Subject: [PATCH] =?UTF-8?q?snapshot:=20=E5=AD=98=E6=A1=A3=20flutter=20crea?= =?UTF-8?q?te=20=E6=A8=A1=E6=9D=BF=E8=A6=86=E7=9B=96=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E7=8E=B0=E5=9C=BA=EF=BC=8C=E4=BD=9C=E4=B8=BA=E5=A4=9A=E5=AE=9E?= =?UTF-8?q?=E4=BE=8B=E4=BF=AE=E5=A4=8D=E5=89=8D=E7=9A=84=E5=9F=BA=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/qingting_player/MainActivity.kt | 10 ++++-- android/qingting_player_android.iml | 29 ++++++++++++++++++ gradle-build.log | Bin 0 -> 20710 bytes qingting_player.iml | 17 ++++++++++ 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 android/qingting_player_android.iml create mode 100644 gradle-build.log create mode 100644 qingting_player.iml diff --git a/android/app/src/main/kotlin/com/example/qingting_player/MainActivity.kt b/android/app/src/main/kotlin/com/example/qingting_player/MainActivity.kt index 817e08c..0f0537f 100644 --- a/android/app/src/main/kotlin/com/example/qingting_player/MainActivity.kt +++ b/android/app/src/main/kotlin/com/example/qingting_player/MainActivity.kt @@ -4,14 +4,20 @@ import android.os.Build import android.os.Bundle import android.util.Log import androidx.core.content.FileProvider -import io.flutter.embedding.android.FlutterActivity +import com.ryanheise.audioservice.AudioServiceActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugin.common.MethodChannel import java.io.File import android.content.Context import android.media.AudioManager -class MainActivity : FlutterActivity() { +// 必须继承 AudioServiceActivity,而不是 FlutterActivity: +// audio_service 0.18.x 会把 Dart 入口跑在一个单独的缓存引擎(audio_service_engine)里。 +// 若这里用 FlutterActivity,Activity 会自建第二个 FlutterEngine, +// main() 因此被跑两遍,产生两个 PlaybackService / 两个 media_kit Player(libmpv 多实例), +// 表现为两路声音、通知栏控制的是另一个实例。 +// AudioServiceActivity 通过 provideFlutterEngine() 复用同一个缓存引擎,保证全局只有一个 Player。 +class MainActivity : AudioServiceActivity() { private val CHANNEL = "com.lxh.qingting_player/file_provider" diff --git a/android/qingting_player_android.iml b/android/qingting_player_android.iml new file mode 100644 index 0000000..3bc4b3b --- /dev/null +++ b/android/qingting_player_android.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/gradle-build.log b/gradle-build.log new file mode 100644 index 0000000000000000000000000000000000000000..3a51e680da2bd9f98be130f0afd13695a061617c GIT binary patch literal 20710 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 literal 0 HcmV?d00001 diff --git a/qingting_player.iml b/qingting_player.iml new file mode 100644 index 0000000..f66303d --- /dev/null +++ b/qingting_player.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +