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 0000000..3a51e68 Binary files /dev/null and b/gradle-build.log differ 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 @@ + + + + + + + + + + + + + + + + +