[Feature] fps diagnostics (#55)
This commit is contained in:
Родитель
55d79f144c
Коммит
9b9d5e3d82
|
@ -11,6 +11,7 @@ import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import com.azure.android.communication.ui.callingcompositedemoapp.databinding.ActivityCallLauncherBinding
|
import com.azure.android.communication.ui.callingcompositedemoapp.databinding.ActivityCallLauncherBinding
|
||||||
|
import com.azure.android.communication.ui.callingcompositedemoapp.diagnostics.FpsDiagnostics
|
||||||
import com.azure.android.communication.ui.callingcompositedemoapp.diagnostics.MemoryViewer
|
import com.azure.android.communication.ui.callingcompositedemoapp.diagnostics.MemoryViewer
|
||||||
import com.azure.android.communication.ui.callingcompositedemoapp.launcher.CallingCompositeLauncher
|
import com.azure.android.communication.ui.callingcompositedemoapp.launcher.CallingCompositeLauncher
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
@ -113,12 +114,19 @@ class CallLauncherActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
memoryDiagnosticsCheckBox.visibility = View.VISIBLE
|
val diagnostics =
|
||||||
memoryDiagnosticsCheckBox.setOnCheckedChangeListener { _, isChecked ->
|
applicationContext.resources.getBoolean(R.bool.diagnostics)
|
||||||
if (isChecked) {
|
|
||||||
MemoryViewer.getMemoryViewer(application).show()
|
if (diagnostics) {
|
||||||
} else {
|
diagnosticsCheckBox.visibility = View.VISIBLE
|
||||||
MemoryViewer.getMemoryViewer(application).hide()
|
diagnosticsCheckBox.setOnCheckedChangeListener { _, isChecked ->
|
||||||
|
if (isChecked) {
|
||||||
|
MemoryViewer.getMemoryViewer(application).show()
|
||||||
|
FpsDiagnostics.getFpsDiagnostics(application).start()
|
||||||
|
} else {
|
||||||
|
MemoryViewer.getMemoryViewer(application).hide()
|
||||||
|
FpsDiagnostics.getFpsDiagnostics(application).stop()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -148,9 +156,10 @@ class CallLauncherActivity : AppCompatActivity() {
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
// helps to turn on memory profiling when permissions change
|
// helps to turn on memory, fps profiling when permissions change
|
||||||
if (binding.memoryDiagnosticsCheckBox.isChecked) {
|
if (binding.diagnosticsCheckBox.isChecked) {
|
||||||
MemoryViewer.getMemoryViewer(application).show()
|
MemoryViewer.getMemoryViewer(application).show()
|
||||||
|
FpsDiagnostics.getFpsDiagnostics(application).start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -216,7 +225,10 @@ class CallLauncherActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun saveState(outState: Bundle?) {
|
private fun saveState(outState: Bundle?) {
|
||||||
outState?.putBoolean(isTokenFunctionOptionSelected, callLauncherViewModel.isTokenFunctionOptionSelected)
|
outState?.putBoolean(
|
||||||
|
isTokenFunctionOptionSelected,
|
||||||
|
callLauncherViewModel.isTokenFunctionOptionSelected
|
||||||
|
)
|
||||||
outState?.putBoolean(isKotlinLauncherOptionSelected, callLauncherViewModel.isKotlinLauncher)
|
outState?.putBoolean(isKotlinLauncherOptionSelected, callLauncherViewModel.isKotlinLauncher)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
// Licensed under the MIT License.
|
||||||
|
|
||||||
|
package com.azure.android.communication.ui.callingcompositedemoapp.diagnostics
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
|
import com.microsoft.office.outlook.magnifierlib.Magnifier
|
||||||
|
import com.microsoft.office.outlook.magnifierlib.frame.FPSMonitorConfig
|
||||||
|
|
||||||
|
class FpsDiagnostics private constructor(
|
||||||
|
private val context: Application,
|
||||||
|
) {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private lateinit var fpsDiagnostics: FpsDiagnostics
|
||||||
|
fun getFpsDiagnostics(context: Application): FpsDiagnostics {
|
||||||
|
if (!::fpsDiagnostics.isInitialized) {
|
||||||
|
fpsDiagnostics = FpsDiagnostics(context)
|
||||||
|
}
|
||||||
|
return fpsDiagnostics
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun start() {
|
||||||
|
Magnifier.startMonitorFPS(
|
||||||
|
FPSMonitorConfig.Builder(context)
|
||||||
|
.lowPercentage(40 / 60f) // show red tips, (2.0f / 3.0f) by default
|
||||||
|
.mediumPercentage(50 / 60f) // show yellow tips, (5.0f / 6.0f) by default
|
||||||
|
.refreshRate(60f) // defaultDisplay.refreshRate by default
|
||||||
|
.build()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun stop() {
|
||||||
|
Magnifier.stopMonitorFPS()
|
||||||
|
}
|
||||||
|
}
|
|
@ -138,9 +138,9 @@
|
||||||
</RadioGroup>
|
</RadioGroup>
|
||||||
|
|
||||||
<CheckBox
|
<CheckBox
|
||||||
android:id="@+id/memoryDiagnosticsCheckBox"
|
android:id="@+id/diagnosticsCheckBox"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:text="@string/memoryDiagnostics"
|
android:text="@string/diagnostics"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
@ -154,7 +154,7 @@
|
||||||
android:text="@string/launchButtonText"
|
android:text="@string/launchButtonText"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/memoryDiagnosticsCheckBox"
|
app:layout_constraintTop_toBottomOf="@id/diagnosticsCheckBox"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
Licensed under the MIT License.
|
||||||
|
-->
|
||||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||||
<!-- Base application theme. -->
|
<!-- Base application theme. -->
|
||||||
<style name="Theme.MeetingUI" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
|
<style name="Theme.MeetingUI" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
Licensed under the MIT License.
|
||||||
|
-->
|
||||||
|
<resources>
|
||||||
|
<bool name="diagnostics">false</bool>
|
||||||
|
</resources>
|
|
@ -1,3 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
Licensed under the MIT License.
|
||||||
|
-->
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">Communication UI Demo</string>
|
<string name="app_name">Communication UI Demo</string>
|
||||||
<string name="tokenUrlHint">Token function URL</string>
|
<string name="tokenUrlHint">Token function URL</string>
|
||||||
|
@ -12,5 +17,5 @@
|
||||||
<string name="launchTypeText">Launch In:</string>
|
<string name="launchTypeText">Launch In:</string>
|
||||||
<string name="tokenFunctionRadioButtonText">Token Function</string>
|
<string name="tokenFunctionRadioButtonText">Token Function</string>
|
||||||
<string name="acsTokenRadioButtonText">@string/acsTokenHint</string>
|
<string name="acsTokenRadioButtonText">@string/acsTokenHint</string>
|
||||||
<string name="memoryDiagnostics">Memory Diagnostics</string>
|
<string name="diagnostics">FPS, Memory Diagnostics</string>
|
||||||
</resources>
|
</resources>
|
|
@ -1,3 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
Licensed under the MIT License.
|
||||||
|
-->
|
||||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||||
<!-- Base application theme. -->
|
<!-- Base application theme. -->
|
||||||
<style name="Theme.MeetingUI" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
|
<style name="Theme.MeetingUI" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
|
||||||
|
|
Загрузка…
Ссылка в новой задаче