Skip to content

Commit

Permalink
Merge pull request #103 from remotv/develop
Browse files Browse the repository at this point in the history
Release 0.16.0
  • Loading branch information
SkyeOfBreeze authored Mar 15, 2020
2 parents bd1c77d + c055127 commit eb441f1
Show file tree
Hide file tree
Showing 31 changed files with 741 additions and 492 deletions.
7 changes: 6 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,17 @@ android {
}
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

defaultConfig {
applicationId "tv.remo.android.controller"
minSdkVersion 16
targetSdkVersion 28
versionCode 13
versionName "0.15.0"
versionName "0.16.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
Expand Down
33 changes: 33 additions & 0 deletions app/src/main/java/tv/remo/android/controller/RemoApplication.kt
Original file line number Diff line number Diff line change
@@ -1,18 +1,51 @@
package tv.remo.android.controller

import android.app.Application
import android.util.Log
import org.btelman.controlsdk.services.ControlSDKService
import org.btelman.logutil.kotlin.LogLevel
import org.btelman.logutil.kotlin.LogUtil
import org.btelman.logutil.kotlin.LogUtilInstance

/**
* Created by Brendon on 7/28/2019.
*/
class RemoApplication : Application() {
private val log = LogUtil("RemoApplication", logID)

override fun onCreate() {
super.onCreate()
LogUtilInstance(ControlSDKService.CONTROL_SERVICE, LogLevel.VERBOSE).also {
Log.d("RemoApplication", "Setup ControlSDK logger")
LogUtil.addCustomLogUtilInstance(ControlSDKService::class.java.name, it)
}

log.d{
"Remo.TV ${BuildConfig.VERSION_NAME} onCreate..."
}

Instance = this
}

companion object{
var Instance : RemoApplication? = null
val logID = "Remo.TV".also {name->
LogUtilInstance(ControlSDKService.CONTROL_SERVICE, LogLevel.VERBOSE).also {
Log.d("RemoApplication", "Setup Remo.TV logger")
LogUtil.addCustomLogUtilInstance(name, it)
}
}

fun getLogger(tag : String) : LogUtil{
return LogUtil(tag, logID)
}

fun getLogger(obj : Any, extra : String? = null) : LogUtil{
var log = obj.javaClass.simpleName
extra?.let{
log += " : $extra"
}
return getLogger(log)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,39 @@ import android.os.Handler
import android.os.Looper
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import com.google.gson.Gson
import kotlinx.android.synthetic.main.activity_main.*
import org.btelman.controlsdk.enums.Operation
import org.btelman.controlsdk.interfaces.ControlSdkApi
import org.btelman.controlsdk.hardware.components.CommunicationDriverComponent
import org.btelman.controlsdk.interfaces.ControlSdkServiceWrapper
import org.btelman.controlsdk.models.ComponentHolder
import org.btelman.controlsdk.services.ControlSDKServiceConnection
import org.btelman.controlsdk.services.observeAutoCreate
import org.btelman.controlsdk.tts.SystemDefaultTTSComponent
import tv.remo.android.controller.R
import tv.remo.android.controller.sdk.RemoSettingsUtil
import tv.remo.android.controller.sdk.models.api.Message
import tv.remo.android.controller.sdk.utils.ChatUtil
import tv.remo.android.controller.sdk.components.RemoSocketComponent
import tv.remo.android.controller.sdk.components.StatusBroadcasterComponent
import tv.remo.android.controller.sdk.components.audio.RemoAudioProcessor
import tv.remo.android.controller.sdk.components.video.RemoVideoProcessor
import tv.remo.android.controller.sdk.utils.ComponentBuilderUtil

class MainActivity : AppCompatActivity(), View.OnClickListener {
private val listenerControllerList = ArrayList<ComponentHolder<*>>()
private var recording = false
private val arrayList = ArrayList<ComponentHolder<*>>()
private var controlSDKServiceApi: ControlSdkApi? = null
private var controlSDKServiceApi: ControlSdkServiceWrapper? = null
private lateinit var handler : Handler
private val telemetryEnabled = false

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
handler = Handler(Looper.getMainLooper())
setContentView(R.layout.activity_main)
setupControlSDK()
setupUI()
window.decorView.post {
buildStatusList()
}
}

override fun onClick(v: View?) {
Expand All @@ -49,6 +57,7 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {

override fun onDestroy() {
super.onDestroy()
handleListenerAddOrRemove(Operation.NOT_OK)
controlSDKServiceApi?.disconnectFromService()
}

Expand All @@ -57,18 +66,41 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
controlSDKServiceApi?.getServiceStateObserver()?.observeAutoCreate(this, operationObserver)
controlSDKServiceApi?.getServiceBoundObserver()?.observeAutoCreate(this){ connected ->
powerButton.isEnabled = connected == Operation.OK
handleListenerAddOrRemove(connected)
}
controlSDKServiceApi?.connectToService()
createComponentHolders()
}

private fun handleListenerAddOrRemove(connected : Operation) {
if(connected == Operation.OK){
listenerControllerList.forEach {
controlSDKServiceApi?.addListenerOrController(it)
}
}
else if(connected == Operation.NOT_OK){
listenerControllerList.forEach {
controlSDKServiceApi?.removeListenerOrController(it)
}
}
}

private fun setupUI() {
remoChatView.setOnTouchListener { _, _ ->
handleSleepLayoutTouch()
return@setOnTouchListener false
}
settingsButton.setOnClickListener(this)
powerButton?.setOnClickListener(this)

}

private fun buildStatusList() {
websiteConnectionStatusView.registerStatusEvents(RemoSocketComponent::class.java)
hardwareConnectionStatusView.registerStatusEvents(CommunicationDriverComponent::class.java)
audioConnectionStatusView.registerStatusEvents(RemoAudioProcessor::class.java)
videoConnectionStatusView.registerStatusEvents(RemoVideoProcessor::class.java)
ttsConnectionStatusView.registerStatusEvents(SystemDefaultTTSComponent::class.java)
}

val operationObserver : (Operation) -> Unit = { serviceStatus ->
Expand Down Expand Up @@ -113,14 +145,6 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
}
}

private fun UnitTestRunChat(){
val json = "{\"message\":\"test\",\"sender\":\"ReconDelta090\",\"sender_id\":\"user-6a9591cc-f3d3-4e47-a208-e749679a899a\",\"chat_id\":\"chat-8a05f730-c663-434d-9f24-6d8c24453c5f\",\"server_id\":\"serv-46437781-4a9b-4531-9db1-74bc2f818b58\",\"id\":\"mesg-ec54bf9a-23d4-4fa6-b6f1-9a5c8e3e2440\",\"time_stamp\":1574296097994,\"broadcast\":\"\",\"channel_id\":\"chan-7a304995-cba0-463c-81a6-ffeffc059058\",\"display_message\":true,\"badges\":[\"owner\"],\"type\":\"\"}"
Gson().fromJson(json, Message::class.java).also { rawMessage ->
ChatUtil.broadcastChatMessage(this, rawMessage)
ChatUtil.broadcastChatMessage(this, rawMessage) //should just be ignored
}
}

private fun launchSettings() {
if(controlSDKServiceApi?.getServiceStateObserver()?.value == Operation.OK){
powerCycle()
Expand All @@ -139,10 +163,10 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
}
Operation.LOADING -> {} //do nothing
Operation.OK -> {
controlSDKServiceApi?.disable()
arrayList.forEach {
controlSDKServiceApi?.detachFromLifecycle(it)
}
controlSDKServiceApi?.disable()
}
null -> powerButton.setTextColor(parseColorForOperation(null))
}
Expand All @@ -154,6 +178,7 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
arrayList.addAll(ComponentBuilderUtil.createTTSComponents(settings))
arrayList.addAll(ComponentBuilderUtil.createStreamingComponents(settings))
arrayList.addAll(ComponentBuilderUtil.createHardwareComponents(settings))
listenerControllerList.add(ComponentHolder(StatusBroadcasterComponent::class.java, null))
}
}

Expand All @@ -172,6 +197,18 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
or View.SYSTEM_UI_FLAG_FULLSCREEN)
}


@Suppress("DEPRECATION")
fun parseColorForOperation(state : Operation?) : Int{
return when(state){
Operation.OK -> resources.getColor(R.color.powerIndicatorOn)
Operation.NOT_OK -> resources.getColor(R.color.powerIndicatorOff)
Operation.LOADING -> resources.getColor(R.color.powerIndicatorInProgress)
null -> resources.getColor(R.color.powerIndicatorError)
else -> Color.BLACK
}
}

// Shows the system bars by removing all the flags
// except for the ones that make the content appear under the system bars.
private fun showSystemUI() {
Expand All @@ -182,17 +219,6 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
fun getIntent(context: Context) : Intent {
return Intent(context, MainActivity::class.java)
}

fun parseColorForOperation(state : Operation?) : Int{
val color : Int = when(state){
Operation.OK -> Color.GREEN
Operation.NOT_OK -> Color.RED
Operation.LOADING -> Color.YELLOW
null -> Color.CYAN
else -> Color.BLACK
}
return color
}
}
}

Expand Down
Loading

0 comments on commit eb441f1

Please sign in to comment.