mirror of
https://github.com/chararomandroid/android_device_samsung_a20
synced 2026-08-21 11:55:31 -04:00
universal7885: parts: Refactor
* Convert null properties to lateinit * Implement apply on boot again * Cleanup unused file
This commit is contained in:
parent
cae95b3c27
commit
4a9ca4730c
15 changed files with 137 additions and 111 deletions
|
|
@ -3,7 +3,7 @@
|
|||
package="com.eurekateam.samsungextras"
|
||||
android:sharedUserId="android.uid.system">
|
||||
|
||||
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER"/>
|
||||
|
||||
<protected-broadcast android:name="com.android.systemui.doze.pulse" />
|
||||
|
|
@ -12,6 +12,13 @@
|
|||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.SubSettingsBase"
|
||||
android:fullBackupOnly="true">
|
||||
<receiver android:name=".BootReceiver"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<activity
|
||||
android:name=".DeviceSettingsActivity"
|
||||
android:exported="true"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
package com.eurekateam.samsungextras
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.util.Log
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.eurekateam.samsungextras.battery.BatteryFragment
|
||||
import com.eurekateam.samsungextras.dolby.DolbyCore
|
||||
import com.eurekateam.samsungextras.dolby.DolbyFragment
|
||||
import com.eurekateam.samsungextras.flashlight.FlashLightFragment
|
||||
import com.eurekateam.samsungextras.interfaces.Battery
|
||||
import com.eurekateam.samsungextras.interfaces.Display
|
||||
import com.eurekateam.samsungextras.interfaces.Flashlight
|
||||
|
||||
class BootReceiver : BroadcastReceiver() {
|
||||
override fun onReceive(p0: Context?, p1: Intent?) {
|
||||
val mSharedPreferences = p0?.let { PreferenceManager.getDefaultSharedPreferences(it) }
|
||||
if (p1 != null && mSharedPreferences != null) {
|
||||
if (p1.action == Intent.ACTION_BOOT_COMPLETED){
|
||||
// Battery
|
||||
Battery.chargeSysfs = if (mSharedPreferences
|
||||
.getBoolean(BatteryFragment.PREF_CHARGE, true)) 0 else 1
|
||||
Battery.setFastCharge(if (mSharedPreferences
|
||||
.getBoolean(BatteryFragment.PREF_FASTCHARGE, true)) 0 else 1)
|
||||
// Dolby
|
||||
DolbyCore.setEnabled(mSharedPreferences
|
||||
.getBoolean(DolbyFragment.PREF_DOLBY_ENABLE, false))
|
||||
DolbyCore.setProfile(mSharedPreferences
|
||||
.getInt(DolbyFragment.PREF_DOLBY_PROFILE, 0))
|
||||
|
||||
// FlashLight
|
||||
Flashlight.setFlash(mSharedPreferences.getInt(FlashLightFragment.PREF_FLASHLIGHT, 5))
|
||||
|
||||
// Display
|
||||
Display.DT2W = mSharedPreferences.getBoolean(DeviceSettings.PREF_DOUBLE_TAP, true)
|
||||
Display.GloveMode = mSharedPreferences.getBoolean(DeviceSettings.PREF_GLOVE_MODE, false)
|
||||
Log.i("SamsungParts", "Applied settings")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -16,9 +16,9 @@
|
|||
package com.eurekateam.samsungextras
|
||||
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Bundle
|
||||
import android.os.Build
|
||||
import android.widget.Toast
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.preference.PreferenceManager
|
||||
|
|
@ -31,11 +31,11 @@ import com.eurekateam.samsungextras.interfaces.Display.DT2W
|
|||
import com.eurekateam.samsungextras.speaker.ClearSpeakerActivity
|
||||
|
||||
class DeviceSettings : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener {
|
||||
|
||||
private val mPrefs: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
System.loadLibrary("samsungparts_jni")
|
||||
setPreferencesFromResource(R.xml.preferences_samsung_parts, rootKey)
|
||||
val mContext = this.context
|
||||
val prefs = PreferenceManager.getDefaultSharedPreferences(mContext)
|
||||
val mClearSpeakerPref = findPreference<Preference>(PREF_CLEAR_SPEAKER)!!
|
||||
mClearSpeakerPref.onPreferenceClickListener =
|
||||
Preference.OnPreferenceClickListener {
|
||||
|
|
@ -44,14 +44,16 @@ class DeviceSettings : PreferenceFragmentCompat(), Preference.OnPreferenceChange
|
|||
true
|
||||
}
|
||||
val mFpsInfo = findPreference<SwitchPreference>(PREF_KEY_FPS_INFO)!!
|
||||
mFpsInfo.isChecked = prefs.getBoolean(PREF_KEY_FPS_INFO, false)
|
||||
mFpsInfo.isChecked = mPrefs.getBoolean(PREF_KEY_FPS_INFO, false)
|
||||
mFpsInfo.onPreferenceChangeListener = this
|
||||
val mDT2W = findPreference<SwitchPreference>(PREF_DOUBLE_TAP)!!
|
||||
mDT2W.onPreferenceChangeListener = this
|
||||
mDT2W.isEnabled = !(Build.PRODUCT == "a10" || Build.PRODUCT == "a20e")
|
||||
mDT2W.isChecked = mPrefs.getBoolean(PREF_DOUBLE_TAP, false)
|
||||
val mGloveMode = findPreference<SwitchPreference>(PREF_GLOVE_MODE)!!
|
||||
mGloveMode.onPreferenceChangeListener = this
|
||||
mGloveMode.isEnabled = !(Build.PRODUCT == "a10" || Build.PRODUCT == "a20e")
|
||||
mGloveMode.isChecked = mPrefs.getBoolean(PREF_GLOVE_MODE, false)
|
||||
val mFlashLight = findPreference<Preference>(PREF_FLASHLIGHT)!!
|
||||
mFlashLight.onPreferenceClickListener =
|
||||
Preference.OnPreferenceClickListener {
|
||||
|
|
@ -71,23 +73,26 @@ class DeviceSettings : PreferenceFragmentCompat(), Preference.OnPreferenceChange
|
|||
override fun onPreferenceChange(preference: Preference, value: Any): Boolean {
|
||||
when (preference.key) {
|
||||
PREF_KEY_FPS_INFO -> {
|
||||
val fps_enabled = value as Boolean
|
||||
val fpsinfo = Intent(this.context, FPSInfoService::class.java)
|
||||
if (fps_enabled) {
|
||||
requireContext().startService(fpsinfo)
|
||||
val mEnabled = value as Boolean
|
||||
val mFPSService = Intent(this.context, FPSInfoService::class.java)
|
||||
if (mEnabled) {
|
||||
requireContext().startService(mFPSService)
|
||||
} else {
|
||||
requireContext().stopService(fpsinfo)
|
||||
requireContext().stopService(mFPSService)
|
||||
}
|
||||
mPrefs.edit().putBoolean(PREF_KEY_FPS_INFO, mEnabled).apply()
|
||||
}
|
||||
PREF_DOUBLE_TAP -> {
|
||||
DT2W = value as Boolean
|
||||
mPrefs.edit().putBoolean(PREF_DOUBLE_TAP, value).apply()
|
||||
}
|
||||
PREF_GLOVE_MODE -> {
|
||||
GloveMode = value as Boolean
|
||||
mPrefs.edit().putBoolean(PREF_GLOVE_MODE, value).apply()
|
||||
}
|
||||
PREF_GLOVE_MODE -> {
|
||||
GloveMode = value as Boolean
|
||||
}
|
||||
else -> {
|
||||
return false
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2022 Eureka Team
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.eurekateam.samsungextras
|
||||
|
||||
object GlobalConstants {
|
||||
/**
|
||||
* Global Variables
|
||||
*/
|
||||
const val FLASHLIGHT_SYSFS = "/sys/class/camera/flash/torch_brightness_lvl"
|
||||
const val TAG = "SamsungExtras"
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.eurekateam.samsungextras.utils
|
||||
package com.eurekateam.samsungextras
|
||||
|
||||
import android.os.Parcel
|
||||
import android.os.ServiceManager
|
||||
|
|
@ -18,17 +18,17 @@ package com.eurekateam.samsungextras.battery
|
|||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import com.android.internal.R.id.content
|
||||
import com.android.internal.R.id.home
|
||||
import android.R.id.content
|
||||
import android.R.id.home
|
||||
|
||||
class BatteryActivity : FragmentActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
val fragment = this.supportFragmentManager.findFragmentById(content)
|
||||
val fragment = supportFragmentManager.findFragmentById(content)
|
||||
val batteryFragment: BatteryFragment
|
||||
if (fragment == null) {
|
||||
batteryFragment = BatteryFragment()
|
||||
this.supportFragmentManager.beginTransaction()
|
||||
supportFragmentManager.beginTransaction()
|
||||
.add(content, batteryFragment)
|
||||
.commit()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,23 +20,23 @@ import android.widget.Toast
|
|||
import androidx.preference.ListPreference
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.preference.PreferenceManager
|
||||
import androidx.preference.SwitchPreference
|
||||
import com.eurekateam.samsungextras.R
|
||||
import com.eurekateam.samsungextras.interfaces.Battery
|
||||
|
||||
class BatteryFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener {
|
||||
private var mFastChargePref: SwitchPreference? = null
|
||||
private var mChargePref: SwitchPreference? = null
|
||||
private lateinit var mFastChargePref: SwitchPreference
|
||||
private lateinit var mChargePref: SwitchPreference
|
||||
private val mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
addPreferencesFromResource(R.xml.battery_settings)
|
||||
mFastChargePref = findPreference(PREF_FASTCHARGE)
|
||||
assert(mFastChargePref != null)
|
||||
mFastChargePref!!.onPreferenceChangeListener = this
|
||||
mFastChargePref!!.isChecked = Battery.chargeSysfs == 0
|
||||
mChargePref = findPreference(PREF_CHARGE)
|
||||
assert(mChargePref != null)
|
||||
mChargePref!!.onPreferenceChangeListener = this
|
||||
mChargePref!!.isChecked = Battery.fastChargeSysfs == 0
|
||||
mFastChargePref = findPreference(PREF_FASTCHARGE)!!
|
||||
mFastChargePref.onPreferenceChangeListener = this
|
||||
mFastChargePref.isChecked = mSharedPreferences.getBoolean(PREF_FASTCHARGE, true)
|
||||
mChargePref = findPreference(PREF_CHARGE)!!
|
||||
mChargePref.onPreferenceChangeListener = this
|
||||
mChargePref.isChecked = mSharedPreferences.getBoolean(PREF_CHARGE, true)
|
||||
val mBatteryInfo : ListPreference = findPreference(BATTERY_INFO)!!
|
||||
val items = arrayOf<CharSequence>(
|
||||
Battery.getGeneralBatteryStats(1).toString() + " mAh",
|
||||
|
|
@ -60,21 +60,22 @@ class BatteryFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChang
|
|||
if (preference === mChargePref) {
|
||||
val value = newValue as Boolean
|
||||
Battery.chargeSysfs = if (value) 0 else 1
|
||||
mChargePref!!.isChecked = Battery.chargeSysfs == 0
|
||||
mChargePref.isChecked = Battery.chargeSysfs == 0
|
||||
mSharedPreferences.edit().putBoolean(PREF_CHARGE, Battery.chargeSysfs == 0).apply()
|
||||
return true
|
||||
} else if (preference === mFastChargePref) {
|
||||
val value = newValue as Boolean
|
||||
Battery.setFastCharge(if (value) 0 else 1)
|
||||
mFastChargePref!!.isChecked =
|
||||
Battery.fastChargeSysfs == 0
|
||||
mFastChargePref.isChecked = Battery.fastChargeSysfs == 0
|
||||
mSharedPreferences.edit().putBoolean(PREF_FASTCHARGE, Battery.fastChargeSysfs == 0).apply()
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val PREF_FASTCHARGE = "fastcharge_pref"
|
||||
private const val PREF_CHARGE = "charge_pref"
|
||||
const val PREF_FASTCHARGE = "fastcharge_pref"
|
||||
const val PREF_CHARGE = "charge_pref"
|
||||
private const val BATTERY_INFO = "battery_info"
|
||||
}
|
||||
}
|
||||
|
|
@ -19,7 +19,7 @@ package com.eurekateam.samsungextras.dolby
|
|||
import android.os.Bundle
|
||||
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import com.android.internal.R.id.content
|
||||
import android.R.id.content
|
||||
|
||||
class DolbyActivity : FragmentActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
|
@ -28,7 +28,7 @@ class DolbyActivity : FragmentActivity() {
|
|||
val dolbyFragment: DolbyFragment
|
||||
if (fragment == null) {
|
||||
dolbyFragment = DolbyFragment()
|
||||
this.supportFragmentManager.beginTransaction()
|
||||
supportFragmentManager.beginTransaction()
|
||||
.add(content, dolbyFragment)
|
||||
.commit()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,9 +17,11 @@
|
|||
package com.eurekateam.samsungextras.dolby
|
||||
|
||||
import android.os.Bundle
|
||||
import android.os.PerformanceHintManager
|
||||
import android.widget.Switch
|
||||
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.preference.PreferenceManager
|
||||
|
||||
import com.android.settingslib.widget.MainSwitchPreference
|
||||
import com.android.settingslib.widget.OnMainSwitchChangeListener
|
||||
|
|
@ -30,7 +32,7 @@ import com.eurekateam.samsungextras.R
|
|||
class DolbyFragment : PreferenceFragmentCompat(), OnMainSwitchChangeListener {
|
||||
|
||||
private lateinit var switchBar: MainSwitchPreference
|
||||
|
||||
private val mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
addPreferencesFromResource(R.xml.dolby_settings)
|
||||
|
||||
|
|
@ -49,6 +51,7 @@ class DolbyFragment : PreferenceFragmentCompat(), OnMainSwitchChangeListener {
|
|||
|
||||
override fun onSwitchChanged(switchView: Switch, isChecked: Boolean) {
|
||||
DolbyCore.setEnabled(isChecked)
|
||||
mSharedPreferences.edit().putBoolean(PREF_DOLBY_ENABLE, true).apply()
|
||||
}
|
||||
|
||||
private fun setProfile(profile: Int) {
|
||||
|
|
@ -58,11 +61,12 @@ class DolbyFragment : PreferenceFragmentCompat(), OnMainSwitchChangeListener {
|
|||
val preference = findPreference<RadioButtonPreference>(key)!!
|
||||
preference.isChecked = value == profile
|
||||
}
|
||||
mSharedPreferences.edit().putInt(PREF_DOLBY_PROFILE, profile).apply()
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val PREF_DOLBY_ENABLE = "dolby_enable"
|
||||
|
||||
const val PREF_DOLBY_PROFILE = "dolby_profile"
|
||||
val PREF_DOLBY_MODES = mapOf(
|
||||
"dolby_profile_auto" to DolbyCore.PROFILE_AUTO,
|
||||
"dolby_profile_movie" to DolbyCore.PROFILE_MOVIE,
|
||||
|
|
|
|||
|
|
@ -43,6 +43,6 @@ class DolbyTile : TileService() {
|
|||
PreferenceManager.getDefaultSharedPreferences(this)
|
||||
.edit()
|
||||
.putBoolean(PREF_DOLBY_ENABLE, isEnabled)
|
||||
.commit()
|
||||
.apply()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@ import android.R.id.content
|
|||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import com.android.internal.R.id.home
|
||||
import android.R.id.home
|
||||
|
||||
class FlashLightActivity : FragmentActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
val fragment = this.supportFragmentManager.findFragmentById(content)
|
||||
val fragment = supportFragmentManager.findFragmentById(content)
|
||||
val flashLightFragment: FlashLightFragment
|
||||
if (fragment == null) {
|
||||
flashLightFragment = FlashLightFragment()
|
||||
|
|
|
|||
|
|
@ -15,43 +15,39 @@
|
|||
*/
|
||||
package com.eurekateam.samsungextras.flashlight
|
||||
|
||||
import android.os.Bundle
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.PerformanceHintManager
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import com.eurekateam.samsungextras.GlobalConstants
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.eurekateam.samsungextras.R
|
||||
import com.eurekateam.samsungextras.interfaces.Flashlight
|
||||
import com.eurekateam.samsungextras.preferences.CustomSeekBarPreference
|
||||
import java.io.File
|
||||
|
||||
class FlashLightFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener {
|
||||
private var mFlashLightPref: CustomSeekBarPreference? = null
|
||||
private lateinit var mFlashLightPref: CustomSeekBarPreference
|
||||
private val mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
addPreferencesFromResource(R.xml.flashlight_settings)
|
||||
mFlashLightPref = findPreference(PREF_FLASHLIGHT)
|
||||
assert(mFlashLightPref != null)
|
||||
mFlashLightPref!!.onPreferenceChangeListener = this
|
||||
if (!File(GlobalConstants.FLASHLIGHT_SYSFS).exists()) {
|
||||
mFlashLightPref!!.isEnabled = false
|
||||
}
|
||||
mFlashLightPref!!.setMax(10)
|
||||
mFlashLightPref!!.setMin(1)
|
||||
val isa10 = Build.DEVICE == "a10"
|
||||
mFlashLightPref!!.value = Flashlight.getFlash(if (isa10) 1 else 0)
|
||||
mFlashLightPref = findPreference(PREF_FLASHLIGHT)!!
|
||||
mFlashLightPref.onPreferenceChangeListener = this
|
||||
mFlashLightPref.setMax(10)
|
||||
mFlashLightPref.setMin(1)
|
||||
mFlashLightPref.value = Flashlight.getFlash(if (Build.DEVICE == "a10") 1 else 0)
|
||||
}
|
||||
|
||||
override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean {
|
||||
if (preference === mFlashLightPref) {
|
||||
if (preference == mFlashLightPref) {
|
||||
val value = newValue as Int
|
||||
Flashlight.setFlash(value)
|
||||
mFlashLightPref!!.setValue(value, true)
|
||||
mSharedPreferences.edit().putInt(PREF_FLASHLIGHT, value).apply()
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val PREF_FLASHLIGHT = "flashlight_pref"
|
||||
const val PREF_FLASHLIGHT = "flashlight_pref"
|
||||
}
|
||||
}
|
||||
|
|
@ -28,7 +28,7 @@ import android.util.Log
|
|||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import com.eurekateam.samsungextras.utils.SurfaceFlingerFPS
|
||||
import com.eurekateam.samsungextras.SurfaceFlingerFPS
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
open class FPSInfoService : Service() {
|
||||
|
|
|
|||
|
|
@ -24,11 +24,11 @@ import androidx.fragment.app.FragmentActivity
|
|||
class ClearSpeakerActivity : FragmentActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
val fragment = this.supportFragmentManager.findFragmentById(content)
|
||||
val fragment = supportFragmentManager.findFragmentById(content)
|
||||
val clearSpeakerFragment: ClearSpeakerFragment
|
||||
if (fragment == null) {
|
||||
clearSpeakerFragment = ClearSpeakerFragment()
|
||||
this.supportFragmentManager.beginTransaction()
|
||||
supportFragmentManager.beginTransaction()
|
||||
.add(content, clearSpeakerFragment)
|
||||
.commit()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
*/
|
||||
package com.eurekateam.samsungextras.speaker
|
||||
|
||||
import android.content.Context
|
||||
import android.media.AudioManager
|
||||
import android.media.MediaPlayer
|
||||
import android.os.Bundle
|
||||
|
|
@ -29,16 +28,14 @@ import com.eurekateam.samsungextras.R
|
|||
import java.io.IOException
|
||||
|
||||
class ClearSpeakerFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener {
|
||||
private var mAudioManager: AudioManager? = null
|
||||
private var mHandler: Handler? = null
|
||||
private var mMediaPlayer: MediaPlayer? = null
|
||||
private var mClearSpeakerPref: SwitchPreference? = null
|
||||
private lateinit var mHandler: Handler
|
||||
private lateinit var mMediaPlayer: MediaPlayer
|
||||
private lateinit var mClearSpeakerPref: SwitchPreference
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
addPreferencesFromResource(R.xml.clear_speaker_settings)
|
||||
mClearSpeakerPref = findPreference(PREF_CLEAR_SPEAKER)
|
||||
mClearSpeakerPref!!.onPreferenceChangeListener = this
|
||||
mClearSpeakerPref = findPreference(PREF_CLEAR_SPEAKER)!!
|
||||
mClearSpeakerPref.onPreferenceChangeListener = this
|
||||
mHandler = Handler(Looper.getMainLooper())
|
||||
mAudioManager = requireContext().getSystemService(Context.AUDIO_SERVICE) as AudioManager
|
||||
}
|
||||
|
||||
override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean {
|
||||
|
|
@ -46,8 +43,8 @@ class ClearSpeakerFragment : PreferenceFragmentCompat(), Preference.OnPreference
|
|||
val value = newValue as Boolean
|
||||
if (value) {
|
||||
if (startPlaying()) {
|
||||
mHandler!!.removeCallbacksAndMessages(null)
|
||||
mHandler!!.postDelayed({ stopPlaying() }, 30000)
|
||||
mHandler.removeCallbacksAndMessages(null)
|
||||
mHandler.postDelayed({ stopPlaying() }, 30000)
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
|
@ -65,23 +62,22 @@ class ClearSpeakerFragment : PreferenceFragmentCompat(), Preference.OnPreference
|
|||
* @return true on success, else false
|
||||
*/
|
||||
private fun startPlaying(): Boolean {
|
||||
mAudioManager!!.setParameters("status_earpiece_clean=on")
|
||||
mMediaPlayer = MediaPlayer()
|
||||
requireActivity().volumeControlStream = AudioManager.STREAM_MUSIC
|
||||
mMediaPlayer!!.setAudioStreamType(AudioManager.STREAM_MUSIC)
|
||||
mMediaPlayer!!.isLooping = true
|
||||
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC)
|
||||
mMediaPlayer.isLooping = true
|
||||
try {
|
||||
resources.openRawResourceFd(R.raw.clear_speaker_sound).use { file ->
|
||||
mMediaPlayer!!.setDataSource(
|
||||
mMediaPlayer.setDataSource(
|
||||
file.fileDescriptor,
|
||||
file.startOffset,
|
||||
file.length
|
||||
)
|
||||
}
|
||||
mClearSpeakerPref!!.isEnabled = false
|
||||
mMediaPlayer!!.setVolume(1.0f, 1.0f)
|
||||
mMediaPlayer!!.prepare()
|
||||
mMediaPlayer!!.start()
|
||||
mClearSpeakerPref.isEnabled = false
|
||||
mMediaPlayer.setVolume(1.0f, 1.0f)
|
||||
mMediaPlayer.prepare()
|
||||
mMediaPlayer.start()
|
||||
} catch (ioe: IOException) {
|
||||
Log.e(TAG, "Failed to play speaker clean sound!", ioe)
|
||||
return false
|
||||
|
|
@ -93,14 +89,13 @@ class ClearSpeakerFragment : PreferenceFragmentCompat(), Preference.OnPreference
|
|||
* Stops and invalidates
|
||||
*/
|
||||
private fun stopPlaying() {
|
||||
if (mMediaPlayer != null) {
|
||||
mMediaPlayer!!.stop()
|
||||
mMediaPlayer!!.reset()
|
||||
mMediaPlayer!!.release()
|
||||
if (::mMediaPlayer.isInitialized) {
|
||||
mMediaPlayer.stop()
|
||||
mMediaPlayer.reset()
|
||||
mMediaPlayer.release()
|
||||
}
|
||||
mAudioManager!!.setParameters("status_earpiece_clean=off")
|
||||
mClearSpeakerPref!!.isEnabled = true
|
||||
mClearSpeakerPref!!.isChecked = false
|
||||
mClearSpeakerPref.isEnabled = true
|
||||
mClearSpeakerPref.isChecked = false
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
|||
Loading…
Reference in a new issue