diff --git a/universal7885-common/apps/FMRadio/res/values/strings.xml b/universal7885-common/apps/FMRadio/res/values/strings.xml index f04a807..7725abf 100644 --- a/universal7885-common/apps/FMRadio/res/values/strings.xml +++ b/universal7885-common/apps/FMRadio/res/values/strings.xml @@ -40,4 +40,5 @@ Retry Exit App FM %s Mhz + Updating channel freqs list diff --git a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/FMRadioService.kt b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/FMRadioService.kt index 37859f4..1d41d5a 100644 --- a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/FMRadioService.kt +++ b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/FMRadioService.kt @@ -64,12 +64,12 @@ class FMRadioService : Service() { } ACTION_START -> { mMediaSession = MediaSession(this, "FMRadio") - mContext = this setPlaybackState() mMediaSession.isActive = true } } } + mContext = this sendMetaData("FM ${mNativeFMInterface.mDefaultCtl.getValue(GetType.GET_TYPE_FM_FREQ).toFloat() / 1000} Mhz") startForeground(51, pushNotification()) Log.i("--- FMRadio Background (OUT) ---") diff --git a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/MainActivity.kt b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/MainActivity.kt index cb3c53e..184c4c1 100644 --- a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/MainActivity.kt +++ b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/MainActivity.kt @@ -25,6 +25,7 @@ import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.color.DynamicColors import com.google.android.material.textview.MaterialTextView import vendor.eureka.hardware.fmradio.SetType +import vendor.eureka.hardware.fmradio.GetType class MainActivity : AppCompatActivity() { private lateinit var mIntent: Intent @@ -96,6 +97,7 @@ class MainActivity : AppCompatActivity() { }, 500) } .show() + return } val receiverFilter = IntentFilter(Intent.ACTION_HEADSET_PLUG) registerReceiver(mWiredHeadsetReceiver, receiverFilter) @@ -167,16 +169,23 @@ class MainActivity : AppCompatActivity() { override fun onPause() { super.onPause() Log.i("Application onPause") - mIntent.action = ACTION_START - startService(mIntent) + if (mFMInterface.mDefaultCtl.getValue(GetType.GET_TYPE_FM_MUTEX_LOCKED) == 0) { + mIntent.action = ACTION_START + startService(mIntent) + mStartedService = true + } } override fun onRestart() { super.onRestart() - stopService(mIntent) + if (mStartedService) { + stopService(mIntent) + mStartedService = false + } } companion object { private const val ACTION_START = "com.eurekateam.fmradio.START" + private var mStartedService = false } } diff --git a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/fragments/ChannelListFragment.kt b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/fragments/ChannelListFragment.kt index 36240fe..e6ab219 100644 --- a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/fragments/ChannelListFragment.kt +++ b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/fragments/ChannelListFragment.kt @@ -1,5 +1,6 @@ package com.eurekateam.fmradio.fragments +import android.app.ProgressDialog import android.content.res.Configuration import android.os.Bundle import android.view.LayoutInflater @@ -56,19 +57,23 @@ class ChannelListFragment : override fun onClick(v: View?) { mNativeIF.mDefaultCtl.setValue(SetType.SET_TYPE_FM_SEARCH_START, 0) - requireActivity().window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE) + val loading = ProgressDialog(requireContext()) + loading.setMessage(requireContext().resources.getString(R.string.update_freq)) + loading.setCancelable(false) + loading.setInverseBackgroundForced(false) + loading.show() WaitUntil.setTimer( requireActivity(), object : IWaitUntil { override fun cond(): Boolean = mNativeIF.mDefaultCtl.getValue(GetType.GET_TYPE_FM_MUTEX_LOCKED) == 0 override fun todo() { if (isAdded()) { + loading.hide() (requireActivity() as MainActivity).getMySupportFragmentManager().apply { beginTransaction().remove(this@ChannelListFragment).commit() executePendingTransactions() - beginTransaction().add(R.id.container_view, this@ChannelListFragment).commit() + beginTransaction().add(R.id.container_view, this@ChannelListFragment).commit() } - requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE) } } } diff --git a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/fragments/MainFragment.kt b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/fragments/MainFragment.kt index 0b69c4b..5a21922 100644 --- a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/fragments/MainFragment.kt +++ b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/fragments/MainFragment.kt @@ -1,5 +1,6 @@ package com.eurekateam.fmradio.fragments +import android.app.ProgressDialog import android.content.Context import android.content.SharedPreferences import android.content.res.Configuration @@ -123,9 +124,12 @@ class MainFragment : mFMInterface.mDefaultCtl.setValue(SetType.SET_TYPE_FM_FREQ, mRestoreFreq) mFMFreq.text = mCleanFormat.format(mRestoreFreq.toFloat() / 1000) mFMInterface.mDevCtl.setValue(SetType.SET_TYPE_FM_THREAD, 1) - Toast.makeText(requireContext(), "Updating freqs list... Please wait", Toast.LENGTH_LONG).show() - requireActivity().window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE) - mFMInterface.mDefaultCtl.setValue(SetType.SET_TYPE_FM_SEARCH_START, 0) + val loading = ProgressDialog(requireContext()) + loading.setMessage(requireContext().resources.getString(R.string.update_freq)) + loading.setCancelable(false) + loading.setInverseBackgroundForced(false) + loading.show() + mFMInterface.mDefaultCtl.setValue(SetType.SET_TYPE_FM_SEARCH_START, 0) WaitUntil.setTimer( requireActivity(), object : IWaitUntil { @@ -136,8 +140,7 @@ class MainFragment : if (mSharedPref.getBoolean("fav_$i", false)) mFavList += i } if (!mFMPower) mUpdateEnableDisable(false) - requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE) - Toast.makeText(requireContext(), "Done", Toast.LENGTH_SHORT).show() + loading.hide() } } ) diff --git a/universal7885-common/sepolicy/private/hal_fmradio_default.te b/universal7885-common/sepolicy/private/hal_fmradio_default.te index b8cba6d..cd8ef75 100644 --- a/universal7885-common/sepolicy/private/hal_fmradio_default.te +++ b/universal7885-common/sepolicy/private/hal_fmradio_default.te @@ -13,5 +13,7 @@ allow hal_fmradio_default sysfs_virtual:dir search; allow hal_fmradio_default fm_radio_device:chr_file { read write open ioctl }; allow hal_fmradio_default hal_audio_route_service:service_manager find; +allow hal_fmradio_default self:capability kill; +allow hal_fmradio_default system_app:process signull; binder_call(hal_fmradio_default, hal_audio_route_default)