修复camera、hardware、system卡顿的问题
This commit is contained in:
parent
596daf5fcc
commit
689b92bfd0
@ -36,6 +36,11 @@ class AppsFragment : Fragment(),AppListAdapter.OnShowDialogListener {
|
||||
super.onCreate(savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
viewModel.loadApps()
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
|
||||
@ -7,16 +7,22 @@ import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import com.xyzshell.andinfo.AndInfo
|
||||
import com.xyzshell.myphoneinfo.R
|
||||
import com.xyzshell.myphoneinfo.custom.RefreshManager.load
|
||||
import com.xyzshell.myphoneinfo.custom.RefreshManager.stop
|
||||
import com.xyzshell.myphoneinfo.custom.SetNumberOrWordUtils.setDecimal0
|
||||
import com.xyzshell.myphoneinfo.custom.SetNumberOrWordUtils.setDecimal1
|
||||
import com.xyzshell.myphoneinfo.databinding.FragmentCameraBinding
|
||||
import com.xyzshell.myphoneinfo.databinding.ItemCameraTypeBinding
|
||||
import com.xyzshell.myphoneinfo.dialog.DialogCameraMore
|
||||
import com.xyzshell.myphoneinfo.main.MainViewModel
|
||||
import kotlin.getValue
|
||||
|
||||
class CameraFragment : Fragment() {
|
||||
private lateinit var binding:FragmentCameraBinding
|
||||
private val mainViewModel: MainViewModel by activityViewModels()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@ -25,6 +31,11 @@ class CameraFragment : Fragment() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
mainViewModel.refreshCameraInfo()
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
@ -32,16 +43,21 @@ class CameraFragment : Fragment() {
|
||||
// Inflate the layout for this fragment
|
||||
binding = FragmentCameraBinding.inflate(inflater, container, false)
|
||||
initText()
|
||||
|
||||
// binding.frontMore.setOnClickListener {
|
||||
// dialogCamera1= dialogCamera1?:DialogCameraMore(1)
|
||||
// dialogCamera1?.show(childFragmentManager, "DialogCameraMore1")
|
||||
// }
|
||||
binding.swipeRefresh.setOnRefreshListener {
|
||||
load(binding.swipeRefresh)
|
||||
mainViewModel.refreshCameraInfo()
|
||||
}
|
||||
return binding.root
|
||||
}
|
||||
|
||||
private fun initText() {
|
||||
val cameraInfo = AndInfo.instance.camera
|
||||
// binding.open2.text=cameraInfo.get
|
||||
binding.videoCheck1.content.text=getString(R.string.hight_speed_video)
|
||||
binding.videoCheck2.content.text=getString(R.string.video_stabilization)
|
||||
mainViewModel.cameraInfo.observe(viewLifecycleOwner, ){
|
||||
cameraInfo ->
|
||||
stop(binding.swipeRefresh)
|
||||
cameraInfo?.let {
|
||||
val cameraIds = cameraInfo.cameraIds
|
||||
if(!cameraIds.isEmpty()){
|
||||
cameraIds.forEachIndexed { index, cameraId ->
|
||||
@ -152,9 +168,8 @@ class CameraFragment : Fragment() {
|
||||
}
|
||||
}
|
||||
}
|
||||
// binding.open2.text=cameraInfo.get
|
||||
binding.videoCheck1.content.text=getString(R.string.hight_speed_video)
|
||||
binding.videoCheck2.content.text=getString(R.string.video_stabilization)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -22,6 +22,8 @@ import com.xyzshell.andinfo.AndInfo
|
||||
import com.xyzshell.andinfo.libs.CpuInfo
|
||||
import com.xyzshell.andinfo.libs.MemInfo
|
||||
import com.xyzshell.myphoneinfo.R
|
||||
import com.xyzshell.myphoneinfo.custom.RefreshManager.load
|
||||
import com.xyzshell.myphoneinfo.custom.RefreshManager.stop
|
||||
import com.xyzshell.myphoneinfo.custom.SetNumberOrWordUtils.convertToApproximateAspectRatio
|
||||
import com.xyzshell.myphoneinfo.databinding.FragmentHardWareBinding
|
||||
import com.xyzshell.myphoneinfo.dialog.DialogBlueTooth
|
||||
@ -66,7 +68,7 @@ class HardWareFragment : Fragment() {
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
checkAndDisplayBluetoothInfo()
|
||||
mainViewModel.refreshHardwareInfo(requireContext())
|
||||
binding.root.postDelayed({mainViewModel.refreshHardwareInfo(requireContext())},300)
|
||||
}
|
||||
|
||||
|
||||
@ -88,6 +90,10 @@ class HardWareFragment : Fragment() {
|
||||
dialogDiskPart = dialogDiskPart ?: DialogDiskPart()
|
||||
dialogDiskPart?.show(childFragmentManager, "DiskPart")
|
||||
}
|
||||
binding.swipeRefresh.setOnRefreshListener {
|
||||
load(binding.swipeRefresh)
|
||||
mainViewModel.refreshHardwareInfo(requireContext())
|
||||
}
|
||||
|
||||
return binding.root
|
||||
}
|
||||
@ -363,6 +369,7 @@ class HardWareFragment : Fragment() {
|
||||
//频率
|
||||
binding.text9.textTitle.text = getString(R.string.frequencies)
|
||||
mainViewModel.cpuInfo.observe(viewLifecycleOwner) { cpu ->
|
||||
stop(binding.swipeRefresh)
|
||||
cpu?.let {
|
||||
binding.text0.textContent.text = cpu.getProcessorName()
|
||||
binding.text1.textContent.text = cpu.getVendor()
|
||||
|
||||
@ -5,23 +5,37 @@ import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import com.xyzshell.andinfo.AndInfo
|
||||
import com.xyzshell.andinfo.libs.DRMInfo
|
||||
import com.xyzshell.myphoneinfo.R
|
||||
import com.xyzshell.myphoneinfo.custom.RefreshManager.load
|
||||
import com.xyzshell.myphoneinfo.custom.RefreshManager.stop
|
||||
import com.xyzshell.myphoneinfo.databinding.FragmentSystemShowBinding
|
||||
import com.xyzshell.myphoneinfo.main.MainViewModel
|
||||
|
||||
class SystemShowFragment : Fragment() {
|
||||
private lateinit var binding: FragmentSystemShowBinding
|
||||
private val mainViewModel: MainViewModel by activityViewModels()
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
binding.root.postDelayed({mainViewModel.refreshSystemInfo()},300)
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
binding= FragmentSystemShowBinding.inflate(inflater,container,false)
|
||||
binding.swipeRefresh.setOnRefreshListener {
|
||||
load(binding.swipeRefresh)
|
||||
mainViewModel.refreshSystemInfo()
|
||||
}
|
||||
initView()
|
||||
return binding.root
|
||||
}
|
||||
@ -34,21 +48,19 @@ private lateinit var binding: FragmentSystemShowBinding
|
||||
}
|
||||
|
||||
private fun setDrm() {
|
||||
val clearkeyDrmDetail = AndInfo.instance.drm.getDrmDetail(DRMInfo.CLEARKEY_UUID)
|
||||
val widevineDrmDetail = AndInfo.instance.drm.getDrmDetail(DRMInfo.WIDEVINE_UUID)
|
||||
binding.textclear1.textTitle.text=getString(R.string.vendor)
|
||||
binding.textclear2.textTitle.text=getString(R.string.version)
|
||||
clearkeyDrmDetail.let {
|
||||
binding.textclear1.textContent.text=it?.vendor
|
||||
binding.textclear2.textContent.text=it?.version
|
||||
}
|
||||
binding.textwide1.textTitle.text=getString(R.string.vendor)
|
||||
binding.textwide2.textTitle.text=getString(R.string.version)
|
||||
binding.textwide3.textTitle.text=getString(R.string.algorithm)
|
||||
binding.textwide4.textTitle.text=getString(R.string.device_id)
|
||||
binding.textwide5.textTitle.text=getString(R.string.security_level)
|
||||
binding.textwide6.textTitle.text=getString(R.string.highest_hdcp_level)
|
||||
widevineDrmDetail.let {
|
||||
mainViewModel.clearkeyDrmDetail.observe(viewLifecycleOwner) {
|
||||
binding.textclear1.textContent.text=it?.vendor
|
||||
binding.textclear2.textContent.text=it?.version
|
||||
}
|
||||
mainViewModel.widevineDrmDetail.observe(viewLifecycleOwner) {
|
||||
binding.textwide1.textContent.text=it?.vendor
|
||||
binding.textwide2.textContent.text=it?.version
|
||||
binding.textwide3.textContent.text=it?.algorithms?.joinToString()
|
||||
@ -62,80 +74,95 @@ private lateinit var binding: FragmentSystemShowBinding
|
||||
* Identifier
|
||||
* */
|
||||
private fun setIdentifier() {
|
||||
val buildInfo = AndInfo.instance.build
|
||||
mainViewModel.buildInfo.observe(viewLifecycleOwner){
|
||||
buildInfo ->
|
||||
buildInfo?.let {
|
||||
binding.idDev1.text=buildInfo.googlePlayServicesVersionCode.toString()
|
||||
binding.idDev2.text=buildInfo.deviceUniqueId
|
||||
//google play services
|
||||
binding.textgoogle.textTitle.text=getString(R.string.google_play_services_version)
|
||||
binding.textgoogle.textContent.text=buildInfo.googlePlayServicesVersion
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 操作系统
|
||||
* */
|
||||
private fun setOperatingSystem() {
|
||||
val buildInfo = AndInfo.instance.build
|
||||
binding.textOp1.textTitle.text=getString(R.string.android_version)
|
||||
binding.textOp1.textContent.text=buildInfo.versionRelease
|
||||
binding.textOp2.textTitle.text=getString(R.string.api)
|
||||
binding.textOp2.textContent.text=buildInfo.versionSdkInt.toString()
|
||||
// binding.textOp3.textTitle.text=getString(R.string.emui)
|
||||
|
||||
binding.textOp4.textTitle.text=getString(R.string.security_patch)
|
||||
binding.textOp4.textContent.text=buildInfo.securityPatch
|
||||
binding.textOp5.textTitle.text=getString(R.string.version)
|
||||
binding.textOp5.textContent.text=buildInfo.display
|
||||
binding.textOp6.textTitle.text=getString(R.string.baseband)
|
||||
binding.textOp6.textContent.text=buildInfo.brand
|
||||
binding.textOp7.textTitle.text=getString(R.string.fingerprint)
|
||||
binding.textOp7.textContent.text=buildInfo.fingerprint
|
||||
binding.textOp8.textTitle.text=getString(R.string.build_time)
|
||||
binding.textOp8.textContent.text=buildInfo.buildDate.toString()
|
||||
binding.textOp9.textTitle.text=getString(R.string.initial_release)
|
||||
// todo
|
||||
binding.textOp10.textTitle.text=getString(R.string.architecture)
|
||||
binding.textOp10.textContent.text=buildInfo.kernelArchitecture
|
||||
binding.textOp11.textTitle.text=getString(R.string.instruction_sets)
|
||||
// todo
|
||||
binding.textOp10.textTitle.text=getString(R.string.architecture)
|
||||
binding.textOp12.textTitle.text=getString(R.string.treble)
|
||||
binding.textOp12.textContent.text=if (buildInfo.isTrebleEnabled) "Supported" else "Not supported"
|
||||
binding.textOp13.textTitle.text=getString(R.string.root_access)
|
||||
binding.textOp13.textContent.text=if (AndInfo.instance.build.isRooted) "Yes" else "No"
|
||||
binding.textOp14.textTitle.text=getString(R.string.google_play_services)
|
||||
binding.textOp14.textContent.text=buildInfo.googlePlayServicesVersion
|
||||
binding.textOp15.textTitle.text=getString(R.string.toybox)
|
||||
binding.textOp15.textContent.text=buildInfo.toyboxVersion
|
||||
binding.textOp16.textTitle.text=getString(R.string.java_VM)
|
||||
binding.textOp16.textContent.text=AndInfo.instance.build.jvmName + " " + AndInfo.instance.build.jvmVersion
|
||||
binding.textOp17.textTitle.text=getString(R.string.ssl_version)
|
||||
binding.textOp17.textContent.text=AndInfo.instance.build.openSslVersion + " " + AndInfo.instance.build.boringSslVersion
|
||||
binding.textOp18.textTitle.text=getString(R.string.language)
|
||||
binding.textOp18.textContent.text=AndInfo.instance.build.systemLanguage
|
||||
binding.textOp19.textTitle.text=getString(R.string.usb_debugging)
|
||||
binding.textOp20.textTitle.text=getString(R.string.kernel)
|
||||
mainViewModel.buildInfo.observe(viewLifecycleOwner) { buildInfo ->
|
||||
buildInfo?.let {
|
||||
binding.textOp1.textContent.text=buildInfo.versionRelease
|
||||
binding.textOp2.textContent.text=buildInfo.versionSdkInt.toString()
|
||||
binding.textOp4.textContent.text=buildInfo.securityPatch
|
||||
binding.textOp5.textContent.text=buildInfo.display
|
||||
binding.textOp6.textContent.text=buildInfo.brand
|
||||
binding.textOp7.textContent.text=buildInfo.fingerprint
|
||||
binding.textOp8.textContent.text=buildInfo.buildDate.toString()
|
||||
binding.textOp10.textContent.text=buildInfo.kernelArchitecture
|
||||
binding.textOp12.textContent.text=if (buildInfo.isTrebleEnabled) "Supported" else "Not supported"
|
||||
binding.textOp13.textContent.text=if (AndInfo.instance.build.isRooted) "Yes" else "No"
|
||||
binding.textOp14.textContent.text=buildInfo.googlePlayServicesVersion
|
||||
binding.textOp15.textContent.text=buildInfo.toyboxVersion
|
||||
binding.textOp16.textContent.text=buildInfo.jvmName + " " + buildInfo.jvmVersion
|
||||
binding.textOp17.textContent.text=buildInfo.openSslVersion + " " + buildInfo.boringSslVersion
|
||||
binding.textOp18.textContent.text=buildInfo.systemLanguage
|
||||
binding.textOp19.textContent.text=if (buildInfo.isUsbDebuggingEnabled) "Enabled" else "Disabled"
|
||||
//内核
|
||||
binding.textOp20.textTitle.text=getString(R.string.kernel)
|
||||
binding.textOp20.textContent.text=AndInfo.instance.build.kernelCompleteVersion
|
||||
binding.textOp20.textContent.text=buildInfo.kernelCompleteVersion
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置设备信息
|
||||
* */
|
||||
private fun setDeviceInfo() {
|
||||
val deviceInfo = AndInfo.instance.device
|
||||
binding.phoneName.text=deviceInfo.brand
|
||||
binding.text0.textTitle.text=getString(R.string.model)
|
||||
binding.text0.textContent.text=deviceInfo.model
|
||||
binding.text1.textTitle.text=getString(R.string.product)
|
||||
binding.text1.textContent.text=deviceInfo.productName
|
||||
binding.text2.textTitle.text=getString(R.string.device)
|
||||
binding.text2.textContent.text=deviceInfo.device
|
||||
binding.text3.textTitle.text=getString(R.string.board)
|
||||
binding.text3.textContent.text=deviceInfo.boardName
|
||||
binding.text4.textTitle.text=getString(R.string.manufacturer)
|
||||
|
||||
mainViewModel.deviceInfo.observe(viewLifecycleOwner) {
|
||||
deviceInfo ->
|
||||
stop(binding.swipeRefresh)
|
||||
deviceInfo?.let {
|
||||
binding.phoneName.text=deviceInfo.brand
|
||||
binding.text0.textContent.text=deviceInfo.model
|
||||
binding.text1.textContent.text=deviceInfo.productName
|
||||
binding.text2.textContent.text=deviceInfo.device
|
||||
binding.text3.textContent.text=deviceInfo.boardName
|
||||
binding.text4.textContent.text=deviceInfo.manufacturer
|
||||
// binding.text5.textTitle.text=getString(R.string.baseband)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
|
||||
@ -10,7 +10,11 @@ import androidx.lifecycle.viewModelScope
|
||||
import com.xyzshell.andinfo.AndInfo
|
||||
import com.xyzshell.andinfo.libs.AppDetails
|
||||
import com.xyzshell.andinfo.libs.BluetoothInfo
|
||||
import com.xyzshell.andinfo.libs.BuildInfo
|
||||
import com.xyzshell.andinfo.libs.CameraInfo
|
||||
import com.xyzshell.andinfo.libs.CpuInfo
|
||||
import com.xyzshell.andinfo.libs.DRMInfo
|
||||
import com.xyzshell.andinfo.libs.DeviceInfo
|
||||
import com.xyzshell.andinfo.libs.DisplayInfo
|
||||
import com.xyzshell.andinfo.libs.GpuInfo
|
||||
import com.xyzshell.andinfo.libs.InputInfo
|
||||
@ -20,6 +24,7 @@ import com.xyzshell.andinfo.libs.NetworkInfo
|
||||
import com.xyzshell.andinfo.libs.StorageInfo
|
||||
import com.xyzshell.myphoneinfo.custom.PermissionChecker
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class MainViewModel: ViewModel() {
|
||||
@ -44,6 +49,17 @@ class MainViewModel: ViewModel() {
|
||||
private val _inputInfo= MutableLiveData<InputInfo?>()
|
||||
val input: LiveData<InputInfo?> = _inputInfo
|
||||
|
||||
// 系统相关数据
|
||||
private val _deviceInfo = MutableLiveData<DeviceInfo?>()
|
||||
val deviceInfo: LiveData<DeviceInfo?> = _deviceInfo
|
||||
private val _buildInfo = MutableLiveData<BuildInfo?>()
|
||||
val buildInfo: LiveData<BuildInfo?> = _buildInfo
|
||||
private val _clearkeyDrmDetail = MutableLiveData<DRMInfo.DRMDetail?>()
|
||||
val clearkeyDrmDetail: LiveData<DRMInfo.DRMDetail?> = _clearkeyDrmDetail
|
||||
|
||||
private val _widevineDrmDetail = MutableLiveData<DRMInfo.DRMDetail?>()
|
||||
val widevineDrmDetail: LiveData<DRMInfo.DRMDetail?> = _widevineDrmDetail
|
||||
|
||||
//网络相关
|
||||
private val networkInfo= AndInfo.instance.network
|
||||
private val _networkStatus= MutableLiveData<NetworkInfo.NetworkType?>()
|
||||
@ -60,12 +76,16 @@ class MainViewModel: ViewModel() {
|
||||
|
||||
//应用列表
|
||||
private val _installedApps= MutableLiveData<List<AppDetails>>()
|
||||
|
||||
|
||||
val installedApps: LiveData<List<AppDetails>> = _installedApps
|
||||
|
||||
//相机相关
|
||||
private val _cameraInfo = MutableLiveData<CameraInfo?>()
|
||||
val cameraInfo: LiveData<CameraInfo?> = _cameraInfo
|
||||
|
||||
init{
|
||||
loadApps()
|
||||
refreshSystemInfo()
|
||||
refreshCameraInfo()
|
||||
}
|
||||
|
||||
fun refreshApps() {
|
||||
@ -120,21 +140,6 @@ class MainViewModel: ViewModel() {
|
||||
_networkPermissionGranted.postValue(hasPermissions)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前网络状态(快速检查)
|
||||
*/
|
||||
fun getCurrentNetworkType(context: Context): NetworkInfo.NetworkType? {
|
||||
return try {
|
||||
if (PermissionChecker.getMissingPermissions(context).isEmpty()) {
|
||||
networkInfo.getCurrentNetworkType()
|
||||
} else {
|
||||
null
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
null
|
||||
}
|
||||
}
|
||||
fun loadApps() {
|
||||
viewModelScope.launch(Dispatchers.IO){
|
||||
val apps= AndInfo.instance.app.getInstalledApps()
|
||||
@ -149,20 +154,20 @@ class MainViewModel: ViewModel() {
|
||||
fun refreshHardwareInfo(context: Context){
|
||||
viewModelScope.launch(Dispatchers.IO){
|
||||
try {
|
||||
val cpu= AndInfo.instance.cpu
|
||||
_cpuInfo.postValue(cpu)
|
||||
val gpu= AndInfo.instance.gpu
|
||||
_gpuInfo.postValue(gpu)
|
||||
val display = AndInfo.instance.display
|
||||
_displayInfo.postValue(display)
|
||||
val storage = AndInfo.instance.storage
|
||||
_storageInfo.postValue(storage)
|
||||
val mem = AndInfo.instance.memory
|
||||
_memInfo.postValue(mem)
|
||||
val cpu= async{AndInfo.instance.cpu}
|
||||
_cpuInfo.postValue(cpu.await())
|
||||
val gpu= async{AndInfo.instance.gpu}
|
||||
_gpuInfo.postValue(gpu.await())
|
||||
val display = async{AndInfo.instance.display}
|
||||
_displayInfo.postValue(display.await())
|
||||
val storage = async{AndInfo.instance.storage}
|
||||
_storageInfo.postValue(storage.await())
|
||||
val mem = async{AndInfo.instance.memory}
|
||||
_memInfo.postValue(mem.await())
|
||||
// 检查权限
|
||||
val bluetoothInfo = AndInfo.instance.bluetooth
|
||||
val inputInfo= AndInfo.instance.input
|
||||
_inputInfo.postValue(inputInfo)
|
||||
val inputInfo= async{AndInfo.instance.input}
|
||||
_inputInfo.postValue(inputInfo.await())
|
||||
|
||||
val hasPermissions= bluetoothInfo.requiredPermissions.all { permission ->
|
||||
ActivityCompat.checkSelfPermission(context, permission) ==
|
||||
@ -179,4 +184,25 @@ class MainViewModel: ViewModel() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun refreshSystemInfo(){
|
||||
viewModelScope.launch(Dispatchers.IO){
|
||||
val device = AndInfo.instance.device
|
||||
_deviceInfo.postValue(device)
|
||||
val buildInfo = AndInfo.instance.build
|
||||
_buildInfo.postValue(buildInfo)
|
||||
val clearkeyDrmDetail = AndInfo.instance.drm.getDrmDetail(DRMInfo.CLEARKEY_UUID)
|
||||
_clearkeyDrmDetail.postValue(clearkeyDrmDetail)
|
||||
val widevineDrmDetail = AndInfo.instance.drm.getDrmDetail(DRMInfo.WIDEVINE_UUID)
|
||||
_widevineDrmDetail.postValue(widevineDrmDetail)
|
||||
}
|
||||
}
|
||||
|
||||
fun refreshCameraInfo(){
|
||||
viewModelScope.launch(Dispatchers.IO){
|
||||
val cameraInfo = AndInfo.instance.camera
|
||||
_cameraInfo.postValue(cameraInfo)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -3,6 +3,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/swipeRefresh"
|
||||
android:background="@color/background_color"
|
||||
tools:context=".dashboard.BatteryFragment">
|
||||
<androidx.core.widget.NestedScrollView
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:id="@+id/swipeRefresh"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/background_color"
|
||||
tools:context=".dashboard.DashboardFragment">
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/swipeRefresh"
|
||||
android:background="@color/background_color"
|
||||
tools:context=".dashboard.DashboardFragment">
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user