mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-19 13:09:39 -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
|
<activity
|
||||||
android:name=".stream.StreamActivity"
|
android:name=".stream.StreamActivity"
|
||||||
android:theme="@style/StreamTheme"
|
android:theme="@style/StreamTheme"
|
||||||
|
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
|
||||||
android:screenOrientation="userLandscape"/>
|
android:screenOrientation="userLandscape"/>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
|
|
|
@ -45,13 +45,31 @@ class StreamSession(val connectInfo: ConnectInfo)
|
||||||
|
|
||||||
var surfaceTexture: SurfaceTexture? = null
|
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
|
try
|
||||||
{
|
{
|
||||||
val session = Session(connectInfo)
|
val session = Session(connectInfo)
|
||||||
session.eventCallback = this::eventCallback
|
session.eventCallback = this::eventCallback
|
||||||
session.start()
|
session.start()
|
||||||
|
val surfaceTexture = surfaceTexture
|
||||||
|
if(surfaceTexture != null)
|
||||||
|
session.setSurface(Surface(surfaceTexture))
|
||||||
this.session = session
|
this.session = session
|
||||||
}
|
}
|
||||||
catch(e: SessionCreateError)
|
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)
|
private fun eventCallback(event: Event)
|
||||||
{
|
{
|
||||||
when(event)
|
when(event)
|
||||||
|
|
|
@ -23,8 +23,7 @@ import android.util.Log
|
||||||
import android.view.KeyEvent
|
import android.view.KeyEvent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.*
|
||||||
import androidx.lifecycle.ViewModelProviders
|
|
||||||
import com.metallic.chiaki.R
|
import com.metallic.chiaki.R
|
||||||
import com.metallic.chiaki.lib.ConnectInfo
|
import com.metallic.chiaki.lib.ConnectInfo
|
||||||
import kotlinx.android.synthetic.main.activity_stream.*
|
import kotlinx.android.synthetic.main.activity_stream.*
|
||||||
|
@ -70,6 +69,13 @@ class StreamActivity : AppCompatActivity()
|
||||||
{
|
{
|
||||||
super.onResume()
|
super.onResume()
|
||||||
hideSystemUI()
|
hideSystemUI()
|
||||||
|
viewModel.session.resume()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPause()
|
||||||
|
{
|
||||||
|
super.onPause()
|
||||||
|
viewModel.session.pause()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onWindowFocusChanged(hasFocus: Boolean)
|
override fun onWindowFocusChanged(hasFocus: Boolean)
|
||||||
|
|
|
@ -23,17 +23,15 @@ import com.metallic.chiaki.lib.*
|
||||||
|
|
||||||
class StreamViewModel: ViewModel()
|
class StreamViewModel: ViewModel()
|
||||||
{
|
{
|
||||||
var isInitialized = false
|
private var connectInfo: ConnectInfo? = null
|
||||||
private set(value) { field = value}
|
|
||||||
|
|
||||||
private var _session: StreamSession? = null
|
private var _session: StreamSession? = null
|
||||||
val session: StreamSession get() = _session ?: throw UninitializedPropertyAccessException("StreamViewModel not initialized")
|
val session: StreamSession get() = _session ?: throw UninitializedPropertyAccessException("StreamViewModel not initialized")
|
||||||
|
val isInitialized get() = connectInfo != null
|
||||||
|
|
||||||
fun init(connectInfo: ConnectInfo)
|
fun init(connectInfo: ConnectInfo)
|
||||||
{
|
{
|
||||||
if(isInitialized)
|
if(isInitialized)
|
||||||
return
|
return
|
||||||
isInitialized = true
|
|
||||||
_session = StreamSession(connectInfo)
|
_session = StreamSession(connectInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue