diff --git a/universal7885-common/apps/CameraLightSensor/src/com/eurekateam/cameralightsensor/CameraLightSensorService.kt b/universal7885-common/apps/CameraLightSensor/src/com/eurekateam/cameralightsensor/CameraLightSensorService.kt index 4c8c4d5..2bca323 100755 --- a/universal7885-common/apps/CameraLightSensor/src/com/eurekateam/cameralightsensor/CameraLightSensorService.kt +++ b/universal7885-common/apps/CameraLightSensor/src/com/eurekateam/cameralightsensor/CameraLightSensorService.kt @@ -37,7 +37,8 @@ class CameraLightSensorService : Service() { private fun pushNotification(): Notification { val nm = mContext.getSystemService(NOTIFICATION_SERVICE) as NotificationManager val channel = NotificationChannel( - mContext.packageName, "CameraLightSensor", + mContext.packageName, + "CameraLightSensor", NotificationManager.IMPORTANCE_NONE ) channel.isBlockable = true @@ -45,8 +46,10 @@ class CameraLightSensorService : Service() { val builder = NotificationCompat.Builder(mContext, mContext.packageName) val notificationIntent = Intent(mContext, CameraLightSensorService::class.java) val contentIntent = PendingIntent.getActivity( - mContext, 50, - notificationIntent, PendingIntent.FLAG_IMMUTABLE + mContext, + 50, + notificationIntent, + PendingIntent.FLAG_IMMUTABLE ) builder.setContentIntent(contentIntent) @@ -88,7 +91,10 @@ class CameraLightSensorService : Service() { if (mPoolExecutor == null) { mPoolExecutor = ScheduledThreadPoolExecutor(4) mPoolExecutor!!.scheduleWithFixedDelay( - mScheduler, 0, 2, TimeUnit.SECONDS + mScheduler, + 0, + 2, + TimeUnit.SECONDS ) } } else if (intent.action == Intent.ACTION_SCREEN_OFF) { @@ -119,7 +125,10 @@ class CameraLightSensorService : Service() { if (mPoolExecutor == null) { mPoolExecutor = ScheduledThreadPoolExecutor(4) mPoolExecutor!!.scheduleWithFixedDelay( - mScheduler, 0, 2, TimeUnit.SECONDS + mScheduler, + 0, + 2, + TimeUnit.SECONDS ) } } else { @@ -196,7 +205,7 @@ class CameraLightSensorService : Service() { @SuppressLint("MissingPermission") fun readyCamera() { - if (mIAutoBrightness != null){ + if (mIAutoBrightness != null) { if (!mIAutoBrightness!!.CameraIsFree()) return } try { @@ -213,9 +222,13 @@ class CameraLightSensorService : Service() { mCameraHandlerThread.start() mCameraHandler = Handler(mCameraHandlerThread.looper) mContext = this - bindService(Intent(mContext, IAutoBrightness::class.java).apply { - setClassName("com.eurekateam.camera", "com.eurekateam.camera.CameraAIDL") - }, mConnection, Context.BIND_AUTO_CREATE) + bindService( + Intent(mContext, IAutoBrightness::class.java).apply { + setClassName("com.eurekateam.camera", "com.eurekateam.camera.CameraAIDL") + }, + mConnection, + Context.BIND_AUTO_CREATE + ) @Suppress("SameParameterValue") startForeground(50, pushNotification(), ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA) mRegistered = false @@ -248,8 +261,13 @@ class CameraLightSensorService : Service() { fun actOnReadyCameraDevice() { try { cameraDevice.createCaptureSession( - SessionConfiguration(SessionConfiguration.SESSION_REGULAR, - listOf(OutputConfiguration(imageReader.surface)), mExecutor, sessionStateCallback)) + SessionConfiguration( + SessionConfiguration.SESSION_REGULAR, + listOf(OutputConfiguration(imageReader.surface)), + mExecutor, + sessionStateCallback + ) + ) } catch (e: CameraAccessException) { e.printStackTrace() } @@ -301,11 +319,13 @@ class CameraLightSensorService : Service() { if (DEBUG) Log.i(TAG, "AdjustBrightness: Received Brightness Value $brightness") val oldbrightness = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS) - if (DEBUG) Log.i( - TAG, - "AdjustBrightness: OldVal = " + oldbrightness + " NewVal = " + - brightness + " Adjusting.." - ) + if (DEBUG) { + Log.i( + TAG, + "AdjustBrightness: OldVal = " + oldbrightness + " NewVal = " + + brightness + " Adjusting.." + ) + } var newbrightness = 2 * brightness - oldbrightness if (newbrightness > 255) { newbrightness = 255 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 992ef98..97b2593 100644 --- a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/FMRadioService.kt +++ b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/FMRadioService.kt @@ -48,16 +48,18 @@ class FMRadioService : Service() { ACTION_BEFORE -> { mPlayState = PlayState.STATE_PLAYING Log.i("mCurrentIndex $mIndex") - if (mIndex > 0) + if (mIndex > 0) { mIndex -= 1 + } mNativeFMInterface.setFMFreq(fd, mTracks[mIndex].toInt()) MainFragment.mFreqCurrent = mTracks[mIndex].toInt() } ACTION_NEXT -> { mPlayState = PlayState.STATE_PLAYING Log.i("mCurrentIndex $mIndex") - if (mIndex < mTracks.size - 1) + if (mIndex < mTracks.size - 1) { mIndex += 1 + } mNativeFMInterface.setFMFreq(fd, mTracks[mIndex].toInt()) MainFragment.mFreqCurrent = mTracks[mIndex].toInt() } @@ -118,7 +120,8 @@ class FMRadioService : Service() { private fun pushNotification(): Notification { val nm = mContext.getSystemService(NOTIFICATION_SERVICE) as NotificationManager val channel = NotificationChannel( - mContext.packageName, "FM Radio Playing", + mContext.packageName, + "FM Radio Playing", NotificationManager.IMPORTANCE_HIGH ) nm.createNotificationChannel(channel) @@ -146,7 +149,8 @@ class FMRadioService : Service() { Icon.createWithResource(this, R.drawable.ic_headphones) } }, - "Output Configuration", output + "Output Configuration", + output ).build() val mPausePlayAction: Notification.Action = Notification.Action.Builder( when (mPlayState) { @@ -157,20 +161,24 @@ class FMRadioService : Service() { Icon.createWithResource(this, R.drawable.ic_play) } }, - "Start/Stop", togglePlay + "Start/Stop", + togglePlay ).build() val mRewindAction: Notification.Action = Notification.Action.Builder( Icon.createWithResource(this, R.drawable.ic_rewind), - "Rewind", rewind + "Rewind", + rewind ).build() val mForwardAction: Notification.Action = Notification.Action.Builder( Icon.createWithResource(this, R.drawable.ic_forward), - "Forward", forward + "Forward", + forward ).build() val mCloseAction: Notification.Action = Notification.Action.Builder( Icon.createWithResource(this, R.drawable.ic_close), - "Close", close + "Close", + close ).build() builder.addAction(mOutputAction) builder.addAction(mRewindAction) diff --git a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/NativeFMInterface.kt b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/NativeFMInterface.kt index bb7b4c0..4686f54 100644 --- a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/NativeFMInterface.kt +++ b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/NativeFMInterface.kt @@ -1,15 +1,14 @@ package com.eurekateam.fmradio -import vendor.eureka.hardware.fmradio.IFMDevControl +import android.os.ServiceManager import vendor.eureka.hardware.fmradio.GetType +import vendor.eureka.hardware.fmradio.IFMDevControl import vendor.eureka.hardware.fmradio.SetType -import android.os.ServiceManager - class NativeFMInterface { - private val mDevCtl : IFMDevControl - private val mSysfsCtl : IFMDevControl - private val mDefaultCtl : IFMDevControl + private val mDevCtl: IFMDevControl + private val mSysfsCtl: IFMDevControl + private val mDefaultCtl: IFMDevControl init { mDevCtl = IFMDevControl.Stub.asInterface(ServiceManager.waitForDeclaredService("vendor.eureka.hardware.fmradio.IFMDevControl/default")) @@ -26,7 +25,7 @@ class NativeFMInterface { fun setFMFreq(a: Int, freq: Int) = mDevCtl.setValue(SetType.SET_TYPE_FM_FREQ, freq) fun setFMVolume(a: Int, volume: Int) = mDevCtl.setValue(SetType.SET_TYPE_FM_VOLUME, volume) fun setFMMute(a: Int, mute: Boolean) = mDevCtl.setValue(SetType.SET_TYPE_FM_MUTE, if (mute) 1 else 0) - fun getFmUpper(a: Int) : Int = mDevCtl.getValue(GetType.GET_TYPE_FM_UPPER_LIMIT) + fun getFmUpper(a: Int): Int = mDevCtl.getValue(GetType.GET_TYPE_FM_UPPER_LIMIT) fun getFMLower(a: Int): Int = mDevCtl.getValue(GetType.GET_TYPE_FM_LOWER_LIMIT) fun getRMSSI(a: Int): Int = mDevCtl.getValue(GetType.GET_TYPE_FM_RMSSI) fun getFMTracks(fd: Int): IntArray = mDefaultCtl.getFreqsList() @@ -37,5 +36,5 @@ class NativeFMInterface { fun setFMRSSI(a: Int, rssi: Long) = mDevCtl.setValue(SetType.SET_TYPE_FM_RMSSI, rssi.toInt()) fun closeFMDevice(fd: Int) = mDevCtl.close() fun getSysfsSupport(): Boolean = mSysfsCtl.getValue(GetType.GET_TYPE_FM_SYSFS_IF) == 0 - fun setAudioRoute(speaker: Boolean) = mDevCtl.setValue(SetType.SET_TYPE_FM_SPEAKER_ROUTE, if (speaker) 1 else 0) + fun setAudioRoute(speaker: Boolean) = mDevCtl.setValue(SetType.SET_TYPE_FM_SPEAKER_ROUTE, if (speaker) 1 else 0) } diff --git a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/PebbleTextView.kt b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/PebbleTextView.kt index db212d2..2921a38 100644 --- a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/PebbleTextView.kt +++ b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/PebbleTextView.kt @@ -45,7 +45,6 @@ class PebbleTextView(context: Context, attrs: AttributeSet?, defStyleAttr: Int) desiredWidth: Float, text: String ) { - // Pick a reasonably large value for the test. Larger values produce // more accurate results, but may cause problems with hardware // acceleration. But there are workarounds for that, too; refer to diff --git a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/adapters/ListViewAdapter.kt b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/adapters/ListViewAdapter.kt index 544be7d..9ddceb2 100644 --- a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/adapters/ListViewAdapter.kt +++ b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/adapters/ListViewAdapter.kt @@ -32,7 +32,9 @@ class ListViewAdapter(private val mContext: Context) : BaseAdapter() { override fun getView(id: Int, mConvertView: View?, parent: ViewGroup?): View { val mAnotherConvertView = mConvertView ?: (mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater).inflate( - R.layout.channel_list_items, parent, false + R.layout.channel_list_items, + parent, + false ) mAnotherConvertView.findViewById(R.id.channel_list_title).text = String.format( @@ -44,7 +46,8 @@ class ListViewAdapter(private val mContext: Context) : BaseAdapter() { MainFragment.mFreqCurrent = MainFragment.mTracks[id].toInt() FileUtilities.writeToFile( FileUtilities.mFMFreqFileName, - MainFragment.mFreqCurrent.toString(), mContext + MainFragment.mFreqCurrent.toString(), + mContext ) setCurrentFMChannel(id) } @@ -52,7 +55,8 @@ class ListViewAdapter(private val mContext: Context) : BaseAdapter() { val mStar = ResourcesCompat.getDrawable(mContext.resources, R.drawable.ic_star, mContext.theme) val mStarFilled = ResourcesCompat.getDrawable( mContext.resources, - R.drawable.ic_star_filled, mContext.theme + R.drawable.ic_star_filled, + mContext.theme ) val mIndex = MainFragment.mTracks[id].toInt() if (MainFragment.mFavStats[mIndex] == null) { @@ -77,14 +81,16 @@ class ListViewAdapter(private val mContext: Context) : BaseAdapter() { mItem.value.setBackgroundColor( ResourcesCompat.getColor( mContext.resources, - android.R.color.system_accent2_100, mContext.theme + android.R.color.system_accent2_100, + mContext.theme ) ) } mListofViews[mPosition]?.setBackgroundColor( ResourcesCompat.getColor( mContext.resources, - android.R.color.system_accent3_400, mContext.theme + android.R.color.system_accent3_400, + mContext.theme ) ) } diff --git a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/adapters/PebbleLayoutAdapter.kt b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/adapters/PebbleLayoutAdapter.kt index bb76ce4..646e1a4 100644 --- a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/adapters/PebbleLayoutAdapter.kt +++ b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/adapters/PebbleLayoutAdapter.kt @@ -43,12 +43,15 @@ class PebbleLayoutAdapter(private val mContext: Context) : BaseAdapter() { override fun getView(id: Int, mConvertView: View?, parent: ViewGroup?): View { val mAnotherConvertView = mConvertView ?: (mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater).inflate( - R.layout.favorite_channel_items, parent, false + R.layout.favorite_channel_items, + parent, + false ) mAnotherConvertView.findViewById(R.id.pebble_textview).apply { mText = (mFavoriteList[id].toFloat() / 1000).toString() mColor = ResourcesCompat.getColor( - mContext.resources, android.R.color.system_accent1_400, + mContext.resources, + android.R.color.system_accent1_400, mContext.theme ) setOnClickListener { @@ -56,7 +59,8 @@ class PebbleLayoutAdapter(private val mContext: Context) : BaseAdapter() { MainFragment.mFreqCurrent = mFavoriteList[id] FileUtilities.writeToFile( FileUtilities.mFMFreqFileName, - MainFragment.mFreqCurrent.toString(), mContext + MainFragment.mFreqCurrent.toString(), + mContext ) } } diff --git a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/enums/HeadsetState.kt b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/enums/HeadsetState.kt index 45954c1..2c2476a 100644 --- a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/enums/HeadsetState.kt +++ b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/enums/HeadsetState.kt @@ -7,5 +7,5 @@ package com.eurekateam.fmradio.enums */ enum class HeadsetState { HEADSET_STATE_CONNECTED, - HEADSET_STATE_DISCONNECTED, + HEADSET_STATE_DISCONNECTED } 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 f2cfa1d..050501d 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 @@ -41,10 +41,11 @@ class ChannelListFragment : Configuration.UI_MODE_NIGHT_UNDEFINED -> mIsLight = true } mRootView.findViewById(R.id.channel_list_layout).apply { - if (mIsLight) + if (mIsLight) { setBackgroundColor(resources.getColor(android.R.color.system_accent1_50, requireContext().theme)) - else + } else { setBackgroundColor(resources.getColor(android.R.color.system_accent1_100, requireContext().theme)) + } } return mRootView } diff --git a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/fragments/FavouriteFragment.kt b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/fragments/FavouriteFragment.kt index 1f75983..4bcec5c 100644 --- a/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/fragments/FavouriteFragment.kt +++ b/universal7885-common/apps/FMRadio/src/com/eurekateam/fmradio/fragments/FavouriteFragment.kt @@ -28,10 +28,11 @@ class FavouriteFragment : Fragment(R.layout.fragment_fav_list) { Configuration.UI_MODE_NIGHT_UNDEFINED -> mIsLight = true } mRootView.findViewById(R.id.fav_list_grid).apply { - if (mIsLight) + if (mIsLight) { setBackgroundColor(resources.getColor(android.R.color.system_accent1_50, requireContext().theme)) - else + } else { setBackgroundColor(resources.getColor(android.R.color.system_accent1_100, requireContext().theme)) + } } return mRootView } 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 954db7a..7ba3282 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 @@ -57,11 +57,13 @@ class MainFragment : super.onCreate(savedInstanceState) mStar = ResourcesCompat.getDrawable( requireContext().resources, - R.drawable.ic_star, requireContext().theme + R.drawable.ic_star, + requireContext().theme )!! mStarFilled = ResourcesCompat.getDrawable( requireContext().resources, - R.drawable.ic_star_filled, requireContext().theme + R.drawable.ic_star_filled, + requireContext().theme )!! mAudioManager = requireContext().getSystemService(Context.AUDIO_SERVICE) as AudioManager mVolumeUp = mRootView.findViewById(R.id.volume_up) @@ -92,27 +94,31 @@ class MainFragment : val mTextViewList = listOf(R.id.app_banner, R.id.fm_freq, R.id.freq_misc) for (mResID in mTextViewList) { mRootView.findViewById(mResID).apply { - if (mIsLight) + if (mIsLight) { setTextColor(resources.getColor(android.R.color.system_accent2_500, requireContext().theme)) - else + } else { setTextColor(resources.getColor(android.R.color.system_accent2_100, requireContext().theme)) + } } } mRootView.findViewById(R.id.main_fragment).apply { - if (mIsLight) + if (mIsLight) { setBackgroundColor(resources.getColor(android.R.color.system_accent1_100, requireContext().theme)) - else + } else { setBackgroundColor(resources.getColor(android.R.color.system_accent1_700, requireContext().theme)) + } } GlobalScope.launch { withContext(Dispatchers.IO) { if (FileUtilities.checkIfExistFile(FileUtilities.mFavouriteChannelFileName, requireContext())) { val mFavData = FileUtilities.readFromFile( - FileUtilities.mFavouriteChannelFileName, requireContext() + FileUtilities.mFavouriteChannelFileName, + requireContext() ) for (mItem in mFavData.split("\\r?\\n".toRegex())) { - if (mItem.isNotBlank()) + if (mItem.isNotBlank()) { mFavStats[mItem.toInt()] = true + } } } var mMute = false @@ -157,8 +163,9 @@ class MainFragment : } } } - if (!mMute) + if (!mMute) { mFMInterface.setFMMute(fd, true) + } mFMInterface.setFMFreq(fd, mFMInterface.getFMLower(fd)) mRefreshTracks() if (mFreqCurrent != -1) { @@ -171,10 +178,12 @@ class MainFragment : withContext(Dispatchers.Main) { mFMFreq.text = mCleanFormat.format(mFreqCurrent.toFloat() / 1000) } - if (!mMute) + if (!mMute) { mFMInterface.setFMMute(fd, false) - if (mFreqCurrent == -1) + } + if (mFreqCurrent == -1) { mFMInterface.setFMThread(fd, true) + } withContext(Dispatchers.Main) { mFavButton.let { if (mFavStats[mFreqCurrent] == null) { @@ -201,6 +210,7 @@ class MainFragment : alpha = .7f if (!mTextView) isEnabled = false } + /** * Extension function for [View], for reverting Grayed out, disabled View * @param mTextView Whether the target view is touchable [FloatingActionButton] or @@ -222,20 +232,25 @@ class MainFragment : private fun mUpdateEnableDisable(mEnabled: Boolean, mView: View = requireView()) { val mTextViewList = listOf(R.id.fm_freq, R.id.freq_misc) val mFloatButtonList = listOf( - R.id.volume_down, R.id.volume_up, - R.id.before_channel, R.id.next_channel, R.id.fm_output_btn + R.id.volume_down, + R.id.volume_up, + R.id.before_channel, + R.id.next_channel, + R.id.fm_output_btn ) for (i in mTextViewList) { - if (mEnabled) + if (mEnabled) { mView.findViewById(i).enable(true) - else + } else { mView.findViewById(i).disable(true) + } } for (i in mFloatButtonList) { - if (mEnabled) + if (mEnabled) { mView.findViewById(i).enable() - else + } else { mView.findViewById(i).disable() + } } } @@ -268,25 +283,29 @@ class MainFragment : } } mVolumeUp.id -> { - if (mVolume < 15) + if (mVolume < 15) { mVolume += 1 + } mFMInterface.setFMVolume(fd, mVolume) mSeekBar.progress = mVolume Toast.makeText(requireContext(), "Volume set to $mVolume", Toast.LENGTH_SHORT).show() FileUtilities.writeToFile( FileUtilities.mFMVolumeFileName, - mVolume.toString(), requireContext() + mVolume.toString(), + requireContext() ) } mVolumeDown.id -> { - if (mVolume > 0) + if (mVolume > 0) { mVolume -= 1 + } mFMInterface.setFMVolume(fd, mVolume) mSeekBar.progress = mVolume Toast.makeText(requireContext(), "Volume set to $mVolume", Toast.LENGTH_SHORT).show() FileUtilities.writeToFile( FileUtilities.mFMVolumeFileName, - mVolume.toString(), requireContext() + mVolume.toString(), + requireContext() ) } mBeforeChannelBtn.id -> { @@ -304,7 +323,8 @@ class MainFragment : mFMInterface.setFMMute(fd, false) FileUtilities.writeToFile( FileUtilities.mFMFreqFileName, - mFreqCurrent.toString(), requireContext() + mFreqCurrent.toString(), + requireContext() ) mFavButton.let { if (mFavStats[mFreqCurrent] == null) { @@ -343,7 +363,8 @@ class MainFragment : mFMInterface.setFMMute(fd, false) FileUtilities.writeToFile( FileUtilities.mFMFreqFileName, - mFreqCurrent.toString(), requireContext() + mFreqCurrent.toString(), + requireContext() ) mFavButton.let { if (mFavStats[mFreqCurrent] == null) { diff --git a/universal7885-common/apps/SamsungParts/res/drawable/ic_charge.xml b/universal7885-common/apps/SamsungParts/res/drawable/ic_charge.xml new file mode 100644 index 0000000..bfe6e00 --- /dev/null +++ b/universal7885-common/apps/SamsungParts/res/drawable/ic_charge.xml @@ -0,0 +1,21 @@ + + + + + + diff --git a/universal7885-common/apps/SamsungParts/res/values-de/strings.xml b/universal7885-common/apps/SamsungParts/res/values-de/strings.xml deleted file mode 100644 index 444dea8..0000000 --- a/universal7885-common/apps/SamsungParts/res/values-de/strings.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - SamsungParts - Gerät Spezifische Tweaks - - Display - - FPS Info Overlay - Zeige Overlay mit aktueller Frames per Second. (FPS) - - Sound - - Lautsprecher reinigen - Spiele ein 30 sekündigen Ton ab, um den Lautsprecher zu reinigen. - Starte die Eigenschaft, um den Lautsprecher von Schmutz und Staub zu befreien. Setzte die Lautstärke dabei auf das Maximum.\n\nWenn in dem Lautsprecher zuviel Schmutz und Staub ist, führe dies 2-5 mal aus. - - Dolby Atmos - Aktivere den Dolby Atmos Sound Effekt - Aktiviere Dolby Sound, wie in OneUI (Stock ROM). - Verfügbare Dolby Modi - Wähle ein Modi aus - Auto Profil - Film Profil - Musik Profil - Sprach Profil - Spiel Profil - Kein Profil - Spiel 1 Profil - Spiel 2 Profil - Spezial Sound Profil - - Eureka Kernel Eigenschaften - - Taschenlampe Helligkeit - Einstellen der Taschenlampe Helligkeit - Samsung\'s OneUI hat eine Option zum Einstellen der - Taschenlampe Helligkeit. AOSP hat nicht diese möglichkeit.\n\n - Benutze das feature zum Einstellen der Helligkeit von wenig bis viel. Parameter zwischen 0 bis 10 wählbar. - - Sonstiges - - Batterie - Schnellladen Einstellung - Laden Einstellung - Aktiviere/Deaktiviere den Ladevorgang hier. - Batterie Info und Einstellungen - Aktiviere/Deaktiviere Schnellladen Eigenschaft - Verwalte die Ladevorgang Eigenschaft hier. - Sonstige Batterie Info - Sektion für Geeks - Batterie Max Kapazität (mAh) - Batterie Status - Batterie geladen in (%) - Batterie geladen in (mAh) - Aktuelle Batterie Temperatur - Batterie aktuell (mA) - - An - - Aus - - Werte: %s - Standard - Standard Wert: %s\nLanges drücken um zu setzen. - Standard Werte sind gesetzt. - diff --git a/universal7885-common/apps/SamsungParts/res/values-es/strings.xml b/universal7885-common/apps/SamsungParts/res/values-es/strings.xml deleted file mode 100644 index cc39c68..0000000 --- a/universal7885-common/apps/SamsungParts/res/values-es/strings.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - SamsungParts - Ajustes específicos del dispositivo - - Pantalla - - Superposición FPS - Muestra una superposición con los fotogramas actuales por segundo - - Audio - - Limpiar altavoz - Reproduce un audio de 30 segundos para limpiar el altavoz - Ejecuta esta función una o varias veces si encuentra que su altavoz está ligeramente bloqueado por el polvo. Establezca el volumen multimedia al máximo.\n\nSi el altavoz está muy bloqueado, ejecute esta función de 2 a 5 veces mientras agita el dispositivo con el altavoz hacia abajo. - - Dolby Atmos - Habilita el efecto de audio Dolby Atmos - Habilita el audio Dolby, como en One UI. - Modos Dolby disponibles - Elige uno de estos - Auto Profile - Movie Profile - Music Profile - Voice Profile - Game Profile - No Profile - Game 1 Profile - Game 2 Profile - Special Audio Profile - - Características de Eureka Kernel - - Brillo de la linterna - Ajusta el brillo de la linterna - Samsung OneUI Tiene una opción para ajustar el brillo de la linterna. AOSP no tiene esta función.\n\nUtilice esta función para ajustar el brillo de la linterna bajo o alto. Va de 1 a 10. - - Misc - - Batería - Configuración de Carga rápida - Configuración de carga - Habilite / deshabilite la carga aquí. - Información y configuración de la batería - Habilitar / deshabilitar la función de carga rápida - Administre la función de carga aquí. - Info Variada de la batería - Sección para geeks - Capacidad máxima de la batería (mAh) - Estado de la batería - Batería cargada hasta (%) - Batería cargada hasta (mAh) - Temperatura actual de la batería - Corriente de la batería (mA) - - On - - Off - - Value: %s - Default - Default value: %s\nLong press to set - Default value is set - diff --git a/universal7885-common/apps/SamsungParts/res/values-pt-rBR/strings.xml b/universal7885-common/apps/SamsungParts/res/values-pt-rBR/strings.xml deleted file mode 100644 index 5f657aa..0000000 --- a/universal7885-common/apps/SamsungParts/res/values-pt-rBR/strings.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - SamsungParts - Tweaks específicos do dispositivo - - Tela - - FPS info overlay - Mostrar overlay com informações atuais sobre o FPS - - Áudio - - Limpar alto falante - Tocar um áudio de 30 segundos para limpar o alto falante - Execute este recurso uma ou duas vezes se o alto-falante está ligeiramente bloqueado por poeira. Defina o volume da mídia para o máximo.\n\nSe o alto-falante estiver muito bloqueado, execute este recurso 2 a 5 vezes enquanto agita seu dispositivo com o alto-falante voltado para baixo. - - Dolby Atmos - Ativar o efeito de áudio Dolby Atmos - Ativar Dolby Atmos, Assim como na OneUI. - Modos do Dolby Disponíveis - Selecione um destes - Perfil automático - Perfil de Filme - Perfil de Música - Perfil de Voz - Perfil de Jogos - Nenhum Perfil - Perfil de Jogos 1 - Perfil de Jogos 2 - Perfil automático especial - - Recursos do Eureka Kernel - - Brilho da lanterna - Ajustar o brilho da lanterna - a OneUI da Samsung tem um recurso para ajustar - o brilho da lanterna. AOSP não tem esse recurso.\n\n - Use isto para deixar o brilho da lanterna baixo ou alto. Varia de 0 a 10. - - Diversos - - Bateria - Configurações do Carregamento rápido - Configurações de Carregamento - Ative/Desative o carregamento aqui. - Informações da bateria e configurações - Ativar/Desativar o recurso de carregamento rápido - Controle o carregamento rápido aqui. - Informações diversas sobre a bateria - Seção para Geeks - Capacidade máxima da bateria (mAh) - Status da bateria - Bateria carregada até (%) - Bateria carregada até (mAh) - Temperatura atual da bateria - Corrente da bateria (mA) - - Ligado - - Desligado - - Valor: %s - Padrão - Valor padrão: %s\nPressione longamente para definir - Valor padrão está definido - diff --git a/universal7885-common/apps/SamsungParts/res/values-ro/strings.xml b/universal7885-common/apps/SamsungParts/res/values-ro/strings.xml deleted file mode 100644 index b1f26b0..0000000 --- a/universal7885-common/apps/SamsungParts/res/values-ro/strings.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - Parti Samsung - Tweak-uri specifice dispozitivului - - Afisaj - - FPS Overlay - Arata un overlay cu cate FPS-uri sunt - - Speaker - - Curata speakerul - Audiaza un sunet de 30 de secunde cu care sa cureti speakerul - Utilizeaza acest feature odata sau de doua ori daca speakerul tau este blocat de praf. Seteaza volumul media la maxim.\n\nDaca speakerul este blocat greu, utilizeaza acest feature de 2-5 ori miscand device-ul cu speakerul in jos. - - Dolby Atmos - Activeaza efectul de Dolby Atmos - Activeaza Dolby Audio, ca in OneUI. - Moduri existente Dolby - Alege una din cele de mai jos - Profil Auto - Profil Film - Profil Muzica - Profil Voce - Profil Jocuri - Profil No - Profil joc 1 - Profil joc 2 - Profil Audio Special - - Eureka Kernel Features - - Luminozitate lanterna - Ajusteaza luminozitatea lanternei - OneUI-ul samsungului are o optiune de ajustare a luminozitatii lanternei - AOSP nu are acest feature.\n\n - Utilizeaza acest feature pentru a ajusta luminozitatea lanternei mare sau mica. Intre 0 si 10. - - Misc - - Baterie - Setari FastCharge - Setari incarcare. - Activeaza/Dezactiveaza incarcarea aici. - Informatii baterie si Setari - Activeaza/Dezactiveaza feature-ul Fastcharge - Manage Charging Feature here. - Battery Misc Info - Section for geeks - Capacitate maxima baterie (mAh) - Status baterie - Bateria se poate incarca pana la (%) - Bateria s-a incarcat pana la (mAh) - Temperatura actuala a bateriei - Curent Baterie (mA) - - Activat - - Dezactivat - - Value: %s - Default - Valoare Default: %s\nTine apasat pentru a face modificari. - Valoarea Default este setata - diff --git a/universal7885-common/apps/SamsungParts/res/values-ru/strings.xml b/universal7885-common/apps/SamsungParts/res/values-ru/strings.xml deleted file mode 100644 index d1bfc75..0000000 --- a/universal7885-common/apps/SamsungParts/res/values-ru/strings.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - Опции Samsung - Дополнительные функции устройства - - Экран - - Мониторинг FPS - Показывать частоту кадров в секунду - - Звук - - Очистка динамика - Воспроизведение 30-секундного звука для очистки динамика - Запустите эту функцию один или два раза, если обнаружите, что ваш динамик слегка загрязнён пылью. Установите максимальную громкость мультимедиа.\n\nЕсли динамик сильно загрязнён, запустите эту опцию 2-5 раз, встряхивая устройство динамиком вниз. - - Dolby Atmos - Включение звуковых эффектов от Dolby Atmos - Включите звук Dolby, как в OneUI. - Доступные режимы Dolby - Выберите один из них - Автомотический - Фильм - Музыка - Голос - Игра - Без профиля - Игровой профиль 1 - Игровой профиль 2 - Свой профиль звука - - Функции Eureka Kernel - - Яркость фонарика - Отрегулируйте яркость фонарика - У OneUI есть возможность регулировать яркость фонарика, но данной опции нет в AOSP.\n\nИспользуйте эту функцию для регулировки низкой или высокой яркости фонарика. Колеблется от 0 до 10. - - Разное - - Батарея - Экспресс зарядка - Зарядка - Включение/Отключение зарядки - Информация о батареи и настройки - Включение/Отключение функции быстрой зарядки - Здесь происходит управление зарядкой. - Прочая информация о батареи - Полезная информация (не для всех) - Максимальная ёмкость АКБ (mAh) - Статус батареи - Заряд батареи (%) - Заряд батареи (mAh) - Текущая температура АКБ - Использовано заряда (mA) - - Включено - - Отключено - - Значение: %s - По-умолчанию - Значение по-умолчанию: %s\nДлительное нажатие для настройки - Установлено значение по-умолчанию - diff --git a/universal7885-common/apps/SamsungParts/res/values/strings.xml b/universal7885-common/apps/SamsungParts/res/values/strings.xml index 3d453b3..42f28e1 100644 --- a/universal7885-common/apps/SamsungParts/res/values/strings.xml +++ b/universal7885-common/apps/SamsungParts/res/values/strings.xml @@ -86,4 +86,20 @@ On Off + + Simple SmartCharge Implementation + Enable The Implementation + Adjust Charge Limit % + Tap here to adjust the settings + Adjust Charge Restart % + Current Limit Charge % Setting + Current Restart Charge % Setting + Stats of limited charging count since last boot + Stats of restarted charging count since last boot + Apply current settings + Move the seekbar to adjust values + From the most left, the value will move by -10 -1 0 1 10 + This is a simple smartcharge implementation based on + battery percentage. If the battery percent is above limit, the charging stops, or if it is + below restart, it charges again. Said to improve battery life in long term diff --git a/universal7885-common/apps/SamsungParts/res/xml/battery_settings.xml b/universal7885-common/apps/SamsungParts/res/xml/battery_settings.xml index 2590523..3e86850 100644 --- a/universal7885-common/apps/SamsungParts/res/xml/battery_settings.xml +++ b/universal7885-common/apps/SamsungParts/res/xml/battery_settings.xml @@ -1,12 +1,60 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/universal7885-common/apps/SamsungParts/res/xml/clear_speaker_settings.xml b/universal7885-common/apps/SamsungParts/res/xml/clear_speaker_settings.xml index c9549fc..65e2457 100644 --- a/universal7885-common/apps/SamsungParts/res/xml/clear_speaker_settings.xml +++ b/universal7885-common/apps/SamsungParts/res/xml/clear_speaker_settings.xml @@ -1,4 +1,13 @@ - - + + + + diff --git a/universal7885-common/apps/SamsungParts/res/xml/dolby_settings.xml b/universal7885-common/apps/SamsungParts/res/xml/dolby_settings.xml index b8d94ee..4ff737a 100644 --- a/universal7885-common/apps/SamsungParts/res/xml/dolby_settings.xml +++ b/universal7885-common/apps/SamsungParts/res/xml/dolby_settings.xml @@ -1,13 +1,49 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/universal7885-common/apps/SamsungParts/res/xml/flashlight_settings.xml b/universal7885-common/apps/SamsungParts/res/xml/flashlight_settings.xml index 62aa3cd..aca83f8 100644 --- a/universal7885-common/apps/SamsungParts/res/xml/flashlight_settings.xml +++ b/universal7885-common/apps/SamsungParts/res/xml/flashlight_settings.xml @@ -1,5 +1,19 @@ - - - + + + + + + + diff --git a/universal7885-common/apps/SamsungParts/res/xml/preferences_samsung_parts.xml b/universal7885-common/apps/SamsungParts/res/xml/preferences_samsung_parts.xml index 2438be2..8eb972f 100644 --- a/universal7885-common/apps/SamsungParts/res/xml/preferences_samsung_parts.xml +++ b/universal7885-common/apps/SamsungParts/res/xml/preferences_samsung_parts.xml @@ -1,31 +1,103 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/universal7885-common/apps/SamsungParts/res/xml/smartcharge_settings.xml b/universal7885-common/apps/SamsungParts/res/xml/smartcharge_settings.xml new file mode 100644 index 0000000..0a84cf7 --- /dev/null +++ b/universal7885-common/apps/SamsungParts/res/xml/smartcharge_settings.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/universal7885-common/apps/SamsungParts/res/xml/swap_settings.xml b/universal7885-common/apps/SamsungParts/res/xml/swap_settings.xml index 05c424a..91919f2 100644 --- a/universal7885-common/apps/SamsungParts/res/xml/swap_settings.xml +++ b/universal7885-common/apps/SamsungParts/res/xml/swap_settings.xml @@ -1,7 +1,25 @@ - - - - - + + + + + + + + diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/BootReceiver.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/BootReceiver.kt index 6d10689..ef676bc 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/BootReceiver.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/BootReceiver.kt @@ -42,8 +42,11 @@ class BootReceiver : BroadcastReceiver() { // ZRAM val mSwap = Swap() - if (mSharedPreferences.getBoolean(SwapFragment.PREF_SWAP_ENABLE, false)) - mSwap.setSwapOn(false) else mSwap.setSwapOff() + if (mSharedPreferences.getBoolean(SwapFragment.PREF_SWAP_ENABLE, false)) { + mSwap.setSwapOn(false) + } else { + mSwap.setSwapOff() + } // Display val mDisplay = Display() diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/DeviceSettings.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/DeviceSettings.kt index cbdf7cd..fdfe856 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/DeviceSettings.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/DeviceSettings.kt @@ -28,6 +28,7 @@ import com.eurekateam.samsungextras.flashlight.FlashLightActivity import com.eurekateam.samsungextras.fps.FPSInfoService import com.eurekateam.samsungextras.interfaces.Display import com.eurekateam.samsungextras.speaker.ClearSpeakerActivity +import com.eurekateam.samsungextras.smartcharge.SmartChargeActivity class DeviceSettings : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener { @@ -69,6 +70,13 @@ class DeviceSettings : PreferenceFragmentCompat(), Preference.OnPreferenceChange startActivity(intent) true } + val mSmartCharge = findPreference(PREF_SMARTCHARGE)!! + mSmartCharge.onPreferenceClickListener = + Preference.OnPreferenceClickListener { + val intent = Intent(requireActivity().applicationContext, SmartChargeActivity::class.java) + startActivity(intent) + true + } } override fun onPreferenceChange(preference: Preference, value: Any): Boolean { @@ -106,5 +114,6 @@ class DeviceSettings : PreferenceFragmentCompat(), Preference.OnPreferenceChange const val PREF_DOUBLE_TAP = "dt2w_settings" const val PREF_GLOVE_MODE = "glove_mode_settings" const val PREF_BATTERY = "battery_settings" + const val PREF_SMARTCHARGE = "smartcharge_settings" } } diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/battery/BatteryFragment.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/battery/BatteryFragment.kt index 6eda7f9..26a59b4 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/battery/BatteryFragment.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/battery/BatteryFragment.kt @@ -64,7 +64,7 @@ class BatteryFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChang return true } else if (preference == mFastChargePref) { mBattery.FastCharge = newValue as Boolean - mFastChargePref.isChecked = mBattery.FastCharge + mFastChargePref.isChecked = mBattery.FastCharge mSharedPreferences.edit().putBoolean(PREF_FASTCHARGE, mBattery.FastCharge).apply() return true } @@ -86,7 +86,10 @@ class BatteryFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChang if (mPoolExecutor == null) { mPoolExecutor = ScheduledThreadPoolExecutor(2) mPoolExecutor!!.scheduleWithFixedDelay( - mScheduler, 0, 2, TimeUnit.SECONDS + mScheduler, + 0, + 2, + TimeUnit.SECONDS ) } } else { diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/dolby/DolbyCore.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/dolby/DolbyCore.kt index 8e5c978..c68d3b8 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/dolby/DolbyCore.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/dolby/DolbyCore.kt @@ -53,7 +53,9 @@ object DolbyCore { return context.resources.getString( context.resources.getIdentifier( - resourceName, "string", context.packageName + resourceName, + "string", + context.packageName ) ) } diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/dolby/DolbyFragment.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/dolby/DolbyFragment.kt index d6a55fc..8f9c927 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/dolby/DolbyFragment.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/dolby/DolbyFragment.kt @@ -73,7 +73,7 @@ class DolbyFragment : PreferenceFragmentCompat(), OnMainSwitchChangeListener { "dolby_profile_off" to DolbyCore.PROFILE_OFF, "dolby_profile_game_1" to DolbyCore.PROFILE_GAME_1, "dolby_profile_game_2" to DolbyCore.PROFILE_GAME_2, - "dolby_profile_spacial_audio" to DolbyCore.PROFILE_SPACIAL_AUDIO, + "dolby_profile_spacial_audio" to DolbyCore.PROFILE_SPACIAL_AUDIO ) } } diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/dolby/DolbySearchIndexablesProvider.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/dolby/DolbySearchIndexablesProvider.kt index abb15df..8f6d23f 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/dolby/DolbySearchIndexablesProvider.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/dolby/DolbySearchIndexablesProvider.kt @@ -68,7 +68,10 @@ class DolbySearchIndexablesProvider : SearchIndexablesProvider() { private val INDEXABLE_RES = arrayOf( SearchIndexableResource( - 1, R.xml.dolby_settings, DolbyActivity::class.java.name, 0 + 1, + R.xml.dolby_settings, + DolbyActivity::class.java.name, + 0 ) ) } diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/flashlight/FlashLightFragment.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/flashlight/FlashLightFragment.kt index fee0b3e..ca40707 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/flashlight/FlashLightFragment.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/flashlight/FlashLightFragment.kt @@ -63,9 +63,7 @@ class FlashLightFragment : PreferenceFragmentCompat(), Preference.OnPreferenceCh mFlash.setEnabled(isChecked) mSharedPreferences.edit().putBoolean(PREF_FLASHLIGHT_ENABLE, isChecked) mFlashLightPref.isEnabled = isChecked - } - - companion object { + } companion object { const val PREF_FLASHLIGHT = "flashlight_pref" const val PREF_FLASHLIGHT_ENABLE = "flashlight_enable" } diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/fps/FPSInfoService.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/fps/FPSInfoService.kt index 7177374..9e199fd 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/fps/FPSInfoService.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/fps/FPSInfoService.kt @@ -78,7 +78,8 @@ open class FPSInfoService : Service() { val y = mPaddingTop - mAscent.toInt() val s = fPSInfoString canvas.drawText( - s, (LEFT - mPaddingLeft - mMaxWidth).toFloat(), + s, + (LEFT - mPaddingLeft - mMaxWidth).toFloat(), ( y - 1 ).toFloat(), diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Battery.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Battery.kt index 768bd22..3f37498 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Battery.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Battery.kt @@ -15,13 +15,12 @@ */ package com.eurekateam.samsungextras.interfaces -import vendor.eureka.hardware.parts.IBatteryStats -import vendor.eureka.hardware.parts.BatterySys - import android.os.ServiceManager +import vendor.eureka.hardware.parts.BatterySys +import vendor.eureka.hardware.parts.IBatteryStats class Battery { - private val mBattery : IBatteryStats + private val mBattery: IBatteryStats init { mBattery = IBatteryStats.Stub.asInterface(ServiceManager.waitForDeclaredService("vendor.eureka.hardware.parts.IBatteryStats/default")) @@ -44,11 +43,11 @@ class Battery { } fun getGeneralBatteryStats(id: BatteryIds): Int = when (id) { - BatteryIds.BATTERY_CAPACITY_MAX -> mBattery.getBatteryStats(BatterySys.CAPACITY_MAX) / 1000 - BatteryIds.BATTERY_CAPACITY_CURRENT -> mBattery.getBatteryStats(BatterySys.CAPACITY_CURRENT) - BatteryIds.BATTERY_CAPACITY_CURRENT_MAH -> (mBattery.getBatteryStats(BatterySys.CAPACITY_CURRENT).toFloat() * mBattery.getBatteryStats(BatterySys.CAPACITY_MAX).toFloat() / 100000).toInt() - BatteryIds.CHARGING_STATE -> if (mBattery.getBatteryStats(BatterySys.CURRENT) > 0) 1 else 0 - BatteryIds.BATTERY_TEMP -> mBattery.getBatteryStats(BatterySys.TEMP) / 10 - BatteryIds.BATTERY_CURRENT -> mBattery.getBatteryStats(BatterySys.CURRENT) + BatteryIds.BATTERY_CAPACITY_MAX -> mBattery.getBatteryStats(BatterySys.CAPACITY_MAX) / 1000 + BatteryIds.BATTERY_CAPACITY_CURRENT -> mBattery.getBatteryStats(BatterySys.CAPACITY_CURRENT) + BatteryIds.BATTERY_CAPACITY_CURRENT_MAH -> (mBattery.getBatteryStats(BatterySys.CAPACITY_CURRENT).toFloat() * mBattery.getBatteryStats(BatterySys.CAPACITY_MAX).toFloat() / 100000).toInt() + BatteryIds.CHARGING_STATE -> if (mBattery.getBatteryStats(BatterySys.CURRENT) > 0) 1 else 0 + BatteryIds.BATTERY_TEMP -> mBattery.getBatteryStats(BatterySys.TEMP) / 10 + BatteryIds.BATTERY_CURRENT -> mBattery.getBatteryStats(BatterySys.CURRENT) } } diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/BatteryIds.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/BatteryIds.kt index 67366cd..ec56132 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/BatteryIds.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/BatteryIds.kt @@ -1,10 +1,10 @@ package com.eurekateam.samsungextras.interfaces enum class BatteryIds { - BATTERY_CAPACITY_MAX, - BATTERY_CAPACITY_CURRENT, - BATTERY_CAPACITY_CURRENT_MAH, - CHARGING_STATE, - BATTERY_TEMP, - BATTERY_CURRENT + BATTERY_CAPACITY_MAX, + BATTERY_CAPACITY_CURRENT, + BATTERY_CAPACITY_CURRENT_MAH, + CHARGING_STATE, + BATTERY_TEMP, + BATTERY_CURRENT } diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Display.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Display.kt index 66d951c..44e5b48 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Display.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Display.kt @@ -16,16 +16,15 @@ package com.eurekateam.samsungextras.interfaces -import vendor.eureka.hardware.parts.IDisplayConfigs -import vendor.eureka.hardware.parts.DisplaySys - import android.os.ServiceManager +import vendor.eureka.hardware.parts.DisplaySys +import vendor.eureka.hardware.parts.IDisplayConfigs class Display { - private val mDisplay : IDisplayConfigs + private val mDisplay: IDisplayConfigs init { - mDisplay = IDisplayConfigs.Stub.asInterface(ServiceManager.waitForDeclaredService("vendor.eureka.hardware.parts.IDisplayConfigs/default")) + mDisplay = IDisplayConfigs.Stub.asInterface(ServiceManager.waitForDeclaredService("vendor.eureka.hardware.parts.IDisplayConfigs/default")) } var DT2W: Boolean = false diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Flashlight.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Flashlight.kt index e2b1995..459c9df 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Flashlight.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Flashlight.kt @@ -16,19 +16,18 @@ package com.eurekateam.samsungextras.interfaces +import android.os.ServiceManager import vendor.eureka.hardware.parts.IFlashBrightness -import android.os.ServiceManager - class Flashlight { - private val mFlash : IFlashBrightness + private val mFlash: IFlashBrightness init { - mFlash = IFlashBrightness.Stub.asInterface(ServiceManager.waitForDeclaredService("vendor.eureka.hardware.parts.IFlashBrightness/default")) + mFlash = IFlashBrightness.Stub.asInterface(ServiceManager.waitForDeclaredService("vendor.eureka.hardware.parts.IFlashBrightness/default")) } fun setFlash(value: Int) = mFlash.setFlashlightWritable(value) - + fun getFlash(a10: Boolean): Int = mFlash.readFlashlightstats(!a10) fun setEnabled(enable: Boolean) = mFlash.setFlashlightEnable(enable) } diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/SmartCharge.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/SmartCharge.kt new file mode 100644 index 0000000..2a778aa --- /dev/null +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/SmartCharge.kt @@ -0,0 +1,37 @@ +/* + * 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.interfaces + +import android.os.ServiceManager +import vendor.eureka.hardware.parts.ISmartCharge + +class SmartCharge { + private val mSmartCharge: ISmartCharge + + init { + mSmartCharge = ISmartCharge.Stub.asInterface(ServiceManager.waitForDeclaredService("vendor.eureka.hardware.parts.ISmartCharge/default")) + } + + fun start() = mSmartCharge.start() + fun stop() = mSmartCharge.stop() + fun setConfig(limit: Int, restart: Int) = mSmartCharge.setConfig(limit, restart) + + fun getStats(type: StatsType): Int = when (type) { + StatsType.TYPE_LIMITED_CNT -> mSmartCharge.getLimitCnt() + StatsType.TYPE_RESTARTED_CNT -> mSmartCharge.getRestartCnt() + } +} diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/StatsType.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/StatsType.kt new file mode 100644 index 0000000..86e719d --- /dev/null +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/StatsType.kt @@ -0,0 +1,6 @@ +package com.eurekateam.samsungextras.interfaces + +enum class StatsType { + TYPE_LIMITED_CNT, + TYPE_RESTARTED_CNT +} diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Swap.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Swap.kt index f620c1f..98b9229 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Swap.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Swap.kt @@ -16,22 +16,20 @@ package com.eurekateam.samsungextras.interfaces -import vendor.eureka.hardware.parts.ISwapOnData -import vendor.eureka.hardware.parts.IBoolCallback - import android.os.ServiceManager +import vendor.eureka.hardware.parts.ISwapOnData class Swap { - private val mSwap : ISwapOnData + private val mSwap: ISwapOnData init { - mSwap = ISwapOnData.Stub.asInterface(ServiceManager.waitForDeclaredService("vendor.eureka.hardware.parts.ISwapOnData/default")) + mSwap = ISwapOnData.Stub.asInterface(ServiceManager.waitForDeclaredService("vendor.eureka.hardware.parts.ISwapOnData/default")) } external fun setSwapOn(mCallBackEnabled: Boolean) fun setSwapOff() = mSwap.setSwapOff() fun mkFile(mSize: Int) = mSwap.makeSwapFile(mSize) fun delFile() = mSwap.removeSwapFile() - fun isLocked() : Boolean = mSwap.isMutexLocked() + fun isLocked(): Boolean = mSwap.isMutexLocked() external fun getFreeSpace(): Double external fun getSwapSize(): Long } diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/smartcharge/SelectedOption.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/smartcharge/SelectedOption.kt new file mode 100644 index 0000000..c4adfe6 --- /dev/null +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/smartcharge/SelectedOption.kt @@ -0,0 +1,6 @@ +package com.eurekateam.samsungextras.smartcharge + +enum class SelectedOption { + SELECTED_LIMIT, + SELECTED_RESTART +} diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/smartcharge/SmartChargeActivity.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/smartcharge/SmartChargeActivity.kt new file mode 100644 index 0000000..dafc48d --- /dev/null +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/smartcharge/SmartChargeActivity.kt @@ -0,0 +1,30 @@ +/* + * 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.smartcharge + +import android.os.Bundle +import com.android.settingslib.collapsingtoolbar.CollapsingToolbarBaseActivity +import com.android.settingslib.collapsingtoolbar.R + +class SmartChargeActivity : CollapsingToolbarBaseActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + supportFragmentManager.beginTransaction().replace( + R.id.content_frame, + SmartChargeFragment() + ).commit() + } +} diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/smartcharge/SmartChargeFragment.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/smartcharge/SmartChargeFragment.kt new file mode 100644 index 0000000..891b1c4 --- /dev/null +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/smartcharge/SmartChargeFragment.kt @@ -0,0 +1,163 @@ +/* + * 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.smartcharge + +import android.content.SharedPreferences +import android.os.Bundle +import android.view.View +import android.widget.Switch +import androidx.preference.Preference +import androidx.preference.PreferenceFragmentCompat +import androidx.preference.PreferenceManager +import androidx.preference.SeekBarPreference +import com.android.settingslib.widget.ButtonPreference +import com.android.settingslib.widget.MainSwitchPreference +import com.android.settingslib.widget.OnMainSwitchChangeListener +import com.android.settingslib.widget.SelectorWithWidgetPreference +import com.eurekateam.samsungextras.R +import com.eurekateam.samsungextras.interfaces.StatsType +import com.eurekateam.samsungextras.interfaces.SmartCharge +import java.util.concurrent.ScheduledThreadPoolExecutor +import java.util.concurrent.TimeUnit + +class SmartChargeFragment : PreferenceFragmentCompat(), OnMainSwitchChangeListener, View.OnClickListener, Preference.OnPreferenceChangeListener, SelectorWithWidgetPreference.OnClickListener { + private lateinit var mLimit: SelectorWithWidgetPreference + private lateinit var mRestart: SelectorWithWidgetPreference + private lateinit var mSharedPreferences: SharedPreferences + private lateinit var mSmartChargeBtn: MainSwitchPreference + private lateinit var mAdjust: SeekBarPreference + private lateinit var mApplyBtn: ButtonPreference + private lateinit var mLimitShow: Preference + private lateinit var mRestartShow: Preference + private lateinit var mLimitStat: Preference + private lateinit var mRestartStat: Preference + private val mPoolExecutor = ScheduledThreadPoolExecutor(3) + private var mSelected = SelectedOption.SELECTED_LIMIT + private val mSmartCharge = SmartCharge() + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + addPreferencesFromResource(R.xml.smartcharge_settings) + mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext()) + + mSmartChargeBtn = findPreference(PREF_SMARTCHARGE_MAIN)!! + mAdjust = findPreference(PREF_ADJUST)!! + mLimit = findPreference(PREF_LIMIT_SELECT)!! + mRestart = findPreference(PREF_RESTART_SELECT)!! + + mLimitShow = findPreference(PREF_LIMIT)!! + mRestartShow = findPreference(PREF_RESTART)!! + mLimitStat = findPreference(PREF_LIMIT_STAT)!! + mRestartStat = findPreference(PREF_RESTART_STAT)!! + mApplyBtn = findPreference(PREF_APPLY)!! + + mApplyBtn.setOnClickListener(this) + mApplyBtn.isEnabled = false + mSmartChargeBtn.addOnSwitchChangeListener(this) + mAdjust.min = 1 + mAdjust.max = 5 + mAdjust.value = 3 + mAdjust.onPreferenceChangeListener = this + mLimit.setOnClickListener(this) + mRestart.setOnClickListener(this) + } + + override fun onRadioButtonClicked(btn: SelectorWithWidgetPreference) { + when (btn) { + mLimit -> { + mSelected = SelectedOption.SELECTED_LIMIT + mRestart.isChecked = false + } + mRestart -> { + mSelected = SelectedOption.SELECTED_RESTART + mLimit.isChecked = false + } + else -> {} + } + } + + private inline fun fromStringToNum(s: String): Int { + return if (s.contains("ten")) 10 else if (s.contains("one")) 1 else 0 + } + + private inline fun fromSelectedToId(): String = when (mSelected) { + SelectedOption.SELECTED_LIMIT -> PREF_LIMIT + SelectedOption.SELECTED_RESTART -> PREF_RESTART + } + + override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean { + if (preference == mAdjust) { + var tmp = mSharedPreferences.getInt(fromSelectedToId(), 50) + val toAdd = when (newValue as Int) { + 0 -> -10 + 1 -> -1 + 3 -> 1 + 4 -> 10 + else -> 0 + } + if (tmp + toAdd > 99) tmp = 99 else if (tmp + toAdd < 1) tmp = 1 else tmp += toAdd + mSharedPreferences.edit().putInt(fromSelectedToId(), tmp).apply() + when (mSelected) { + SelectedOption.SELECTED_LIMIT -> mLimitShow + SelectedOption.SELECTED_RESTART -> mRestartShow + }.summary = "$tmp %" + mSmartChargeBtn.isEnabled = false + mApplyBtn.isEnabled = true + mAdjust.value = 3 + return true + } + return false + } + + override fun onClick(v: View) { + if (v == mApplyBtn) { + val limit = mSharedPreferences.getInt(PREF_LIMIT, 20) + val restart = mSharedPreferences.getInt(PREF_RESTART, 80) + if (limit < restart) { + mSmartCharge.setConfig(limit, restart) + mSmartChargeBtn.isEnabled = true + mApplyBtn.isEnabled = false + } + } + } + + private val mScheduler = Runnable { + requireActivity().runOnUiThread { + mLimitStat.summary = "${mSmartCharge.getStats(StatsType.TYPE_LIMITED_CNT)} times" + mRestartStat.summary = "${mSmartCharge.getStats(StatsType.TYPE_RESTARTED_CNT)} times" + } + } + + override fun onSwitchChanged(switchView: Switch, isChecked: Boolean) { + if (isChecked) { + mSmartCharge.start() + mPoolExecutor.scheduleWithFixedDelay(mScheduler, 0, 5, TimeUnit.MINUTES) + } else { + mSmartCharge.stop() + mPoolExecutor.shutdown() + } + } + companion object { + const val PREF_SMARTCHARGE_MAIN = "smartcharge" + const val PREF_LIMIT_SELECT = "choose_limit" + const val PREF_RESTART_SELECT = "choose_restart" + const val PREF_LIMIT = "limit" + const val PREF_RESTART = "restart" + const val PREF_LIMIT_STAT = "limit_stat" + const val PREF_RESTART_STAT = "restart_stat" + const val PREF_APPLY = "apply" + const val PREF_ADJUST = "adjust" + } +} diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/swap/SwapFragment.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/swap/SwapFragment.kt index c682e15..c10d437 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/swap/SwapFragment.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/swap/SwapFragment.kt @@ -28,10 +28,8 @@ import com.android.settingslib.widget.MainSwitchPreference import com.android.settingslib.widget.OnMainSwitchChangeListener import com.eurekateam.samsungextras.R import com.eurekateam.samsungextras.interfaces.Swap -import java.lang.Thread import java.util.concurrent.ScheduledThreadPoolExecutor import java.util.concurrent.TimeUnit -import vendor.eureka.hardware.parts.IBoolCallback class SwapFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener, OnMainSwitchChangeListener { private lateinit var mSwapSizePref: SeekBarPreference @@ -79,7 +77,7 @@ class SwapFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeLi } // This is called from native - DO NOT CHANGE SIGNATURE - fun reactToCallbackNative(res : Boolean) { + fun reactToCallbackNative(res: Boolean) { if (!res) { mSwap.delFile() mSharedPreferences.edit().putBoolean(PREF_SWAP_ENABLE, false).apply() @@ -101,8 +99,8 @@ class SwapFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeLi mSwapEnable.isEnabled = true mSharedPreferences.edit().putBoolean(PREF_SWAP_ENABLE, isChecked).apply() mSwapSizePref.isEnabled = !isChecked - mFreeSpace.summary = "${mSwap.getFreeSpace()} GB" - mSwapFileSize.summary = "${mSwap.getSwapSize()} MB" + mFreeSpace.summary = "${mSwap.getFreeSpace()} GB" + mSwapFileSize.summary = "${mSwap.getSwapSize()} MB" } companion object {