mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-19 20:26:32 -07:00
feat: Android TV support (#503)
Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
parent
7ab8c015b9
commit
c299492d6d
168 changed files with 12019 additions and 3073 deletions
|
|
@ -1,7 +1,77 @@
|
|||
package nl.jknaapen.fladder
|
||||
|
||||
import io.flutter.embedding.android.FlutterFragmentActivity
|
||||
import com.ryanheise.audioservice.AudioServiceFragmentActivity;
|
||||
import NativeVideoActivity
|
||||
import PlayerSettingsPigeon
|
||||
import StartResult
|
||||
import VideoPlayerApi
|
||||
import VideoPlayerControlsCallback
|
||||
import VideoPlayerListenerCallback
|
||||
import android.content.Intent
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import com.ryanheise.audioservice.AudioServiceFragmentActivity
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import nl.jknaapen.fladder.objects.PlayerSettingsObject
|
||||
import nl.jknaapen.fladder.objects.VideoPlayerObject
|
||||
import nl.jknaapen.fladder.utility.leanBackEnabled
|
||||
|
||||
class MainActivity: AudioServiceFragmentActivity () {
|
||||
class MainActivity : AudioServiceFragmentActivity(), NativeVideoActivity {
|
||||
private lateinit var videoPlayerLauncher: ActivityResultLauncher<Intent>
|
||||
private var videoPlayerCallback: ((Result<StartResult>) -> Unit)? = null
|
||||
|
||||
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
||||
super.configureFlutterEngine(flutterEngine)
|
||||
|
||||
val videoPlayerHost = VideoPlayerObject
|
||||
NativeVideoActivity.setUp(
|
||||
flutterEngine.dartExecutor.binaryMessenger,
|
||||
this
|
||||
)
|
||||
VideoPlayerApi.setUp(
|
||||
flutterEngine.dartExecutor.binaryMessenger,
|
||||
videoPlayerHost.implementation
|
||||
)
|
||||
videoPlayerHost.videoPlayerListener =
|
||||
VideoPlayerListenerCallback(flutterEngine.dartExecutor.binaryMessenger)
|
||||
|
||||
videoPlayerHost.videoPlayerControls =
|
||||
VideoPlayerControlsCallback(flutterEngine.dartExecutor.binaryMessenger)
|
||||
|
||||
PlayerSettingsPigeon.setUp(
|
||||
flutterEngine.dartExecutor.binaryMessenger,
|
||||
api = PlayerSettingsObject
|
||||
)
|
||||
|
||||
videoPlayerLauncher = registerForActivityResult(
|
||||
ActivityResultContracts.StartActivityForResult()
|
||||
) { result ->
|
||||
val callback = videoPlayerCallback
|
||||
videoPlayerCallback = null
|
||||
|
||||
val startResult = if (result.resultCode == RESULT_OK) {
|
||||
StartResult(resultValue = result.data?.getStringExtra("result") ?: "Finished")
|
||||
} else {
|
||||
StartResult(resultValue = "Cancelled")
|
||||
}
|
||||
|
||||
callback?.invoke(Result.success(startResult))
|
||||
}
|
||||
}
|
||||
|
||||
override fun launchActivity(callback: (Result<StartResult>) -> Unit) {
|
||||
try {
|
||||
videoPlayerCallback = callback
|
||||
val intent = Intent(this, VideoPlayerActivity::class.java)
|
||||
videoPlayerLauncher.launch(intent)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
callback(Result.failure(e))
|
||||
}
|
||||
}
|
||||
|
||||
override fun disposeActivity() {
|
||||
VideoPlayerObject.currentActivity?.finish()
|
||||
}
|
||||
|
||||
override fun isLeanBackEnabled(): Boolean = leanBackEnabled(applicationContext)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue