mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-14 02:36:51 -07:00
Handle Activity going into Background on Android
This commit is contained in:
parent
778e0564c9
commit
eea9eb9339
4 changed files with 30 additions and 14 deletions
|
@ -23,6 +23,7 @@
|
|||
<activity
|
||||
android:name=".stream.StreamActivity"
|
||||
android:theme="@style/StreamTheme"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
|
||||
android:screenOrientation="userLandscape"/>
|
||||
</application>
|
||||
|
||||
|
|
|
@ -45,13 +45,31 @@ class StreamSession(val connectInfo: ConnectInfo)
|
|||
|
||||
var surfaceTexture: SurfaceTexture? = null
|
||||
|
||||
init
|
||||
fun shutdown()
|
||||
{
|
||||
session?.stop()
|
||||
session?.dispose()
|
||||
session = null
|
||||
//surfaceTexture?.release()
|
||||
}
|
||||
|
||||
fun pause()
|
||||
{
|
||||
shutdown()
|
||||
}
|
||||
|
||||
fun resume()
|
||||
{
|
||||
if(session != null)
|
||||
return
|
||||
try
|
||||
{
|
||||
val session = Session(connectInfo)
|
||||
session.eventCallback = this::eventCallback
|
||||
session.start()
|
||||
val surfaceTexture = surfaceTexture
|
||||
if(surfaceTexture != null)
|
||||
session.setSurface(Surface(surfaceTexture))
|
||||
this.session = session
|
||||
}
|
||||
catch(e: SessionCreateError)
|
||||
|
@ -60,13 +78,6 @@ class StreamSession(val connectInfo: ConnectInfo)
|
|||
}
|
||||
}
|
||||
|
||||
fun shutdown()
|
||||
{
|
||||
session?.stop()
|
||||
session?.dispose()
|
||||
surfaceTexture?.release()
|
||||
}
|
||||
|
||||
private fun eventCallback(event: Event)
|
||||
{
|
||||
when(event)
|
||||
|
|
|
@ -23,8 +23,7 @@ import android.util.Log
|
|||
import android.view.KeyEvent
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.ViewModelProviders
|
||||
import androidx.lifecycle.*
|
||||
import com.metallic.chiaki.R
|
||||
import com.metallic.chiaki.lib.ConnectInfo
|
||||
import kotlinx.android.synthetic.main.activity_stream.*
|
||||
|
@ -70,6 +69,13 @@ class StreamActivity : AppCompatActivity()
|
|||
{
|
||||
super.onResume()
|
||||
hideSystemUI()
|
||||
viewModel.session.resume()
|
||||
}
|
||||
|
||||
override fun onPause()
|
||||
{
|
||||
super.onPause()
|
||||
viewModel.session.pause()
|
||||
}
|
||||
|
||||
override fun onWindowFocusChanged(hasFocus: Boolean)
|
||||
|
|
|
@ -23,17 +23,15 @@ import com.metallic.chiaki.lib.*
|
|||
|
||||
class StreamViewModel: ViewModel()
|
||||
{
|
||||
var isInitialized = false
|
||||
private set(value) { field = value}
|
||||
|
||||
private var connectInfo: ConnectInfo? = null
|
||||
private var _session: StreamSession? = null
|
||||
val session: StreamSession get() = _session ?: throw UninitializedPropertyAccessException("StreamViewModel not initialized")
|
||||
val isInitialized get() = connectInfo != null
|
||||
|
||||
fun init(connectInfo: ConnectInfo)
|
||||
{
|
||||
if(isInitialized)
|
||||
return
|
||||
isInitialized = true
|
||||
_session = StreamSession(connectInfo)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue