Handle Activity going into Background on Android

This commit is contained in:
Florian Märkl 2019-09-28 14:34:34 +02:00
commit eea9eb9339
No known key found for this signature in database
GPG key ID: 125BC8A5A6A1E857
4 changed files with 30 additions and 14 deletions

View file

@ -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>

View file

@ -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)

View file

@ -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)

View file

@ -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)
} }