Skip to content

Commit 687dbe5

Browse files
committed
restore flashlight/stroboscope state on device rotation
1 parent 71c9a03 commit 687dbe5

File tree

4 files changed

+33
-9
lines changed

4 files changed

+33
-9
lines changed

app/src/main/kotlin/com/simplemobiletools/flashlight/activities/MainActivity.kt

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,12 @@ import kotlinx.android.synthetic.main.activity_main.*
2525
class MainActivity : SimpleActivity() {
2626
private val MAX_STROBO_DELAY = 2000
2727
private val MIN_STROBO_DELAY = 30
28+
private val FLASHLIGHT_STATE = "flashlight_state"
29+
private val STROBOSCOPE_STATE = "stroboscope_state"
2830

2931
private var mBus: Bus? = null
3032
private var mCameraImpl: MyCameraImpl? = null
33+
private var mIsFlashlightOn = false
3134

3235
override fun onCreate(savedInstanceState: Bundle?) {
3336
super.onCreate(savedInstanceState)
@@ -41,7 +44,7 @@ class MainActivity : SimpleActivity() {
4144
startActivity(Intent(applicationContext, BrightDisplayActivity::class.java))
4245
}
4346

44-
toggle_btn.setOnClickListener {
47+
flashlight_btn.setOnClickListener {
4548
mCameraImpl!!.toggleFlashlight()
4649
}
4750

@@ -100,6 +103,25 @@ class MainActivity : SimpleActivity() {
100103
return true
101104
}
102105

106+
override fun onSaveInstanceState(outState: Bundle) {
107+
outState.putBoolean(FLASHLIGHT_STATE, mIsFlashlightOn)
108+
outState.putBoolean(STROBOSCOPE_STATE, stroboscope_bar.isVisible())
109+
super.onSaveInstanceState(outState)
110+
}
111+
112+
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
113+
super.onRestoreInstanceState(savedInstanceState)
114+
val isFlashlightOn = savedInstanceState.getBoolean(FLASHLIGHT_STATE, false)
115+
if (isFlashlightOn) {
116+
mCameraImpl!!.toggleFlashlight()
117+
}
118+
119+
val isStroboscopeOn = savedInstanceState.getBoolean(STROBOSCOPE_STATE, false)
120+
if (isStroboscopeOn) {
121+
toggleStroboscope()
122+
}
123+
}
124+
103125
private fun launchSettings() {
104126
startActivity(Intent(applicationContext, SettingsActivity::class.java))
105127
}
@@ -185,16 +207,18 @@ class MainActivity : SimpleActivity() {
185207
}
186208

187209
private fun enableFlashlight() {
188-
changeIconColor(getAdjustedPrimaryColor(), toggle_btn)
210+
changeIconColor(getAdjustedPrimaryColor(), flashlight_btn)
189211
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
212+
mIsFlashlightOn = true
190213

191214
changeIconColor(config.backgroundColor.getContrastColor(), stroboscope_btn)
192215
stroboscope_bar.beInvisible()
193216
}
194217

195218
private fun disableFlashlight() {
196-
changeIconColor(config.backgroundColor.getContrastColor(), toggle_btn)
219+
changeIconColor(config.backgroundColor.getContrastColor(), flashlight_btn)
197220
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
221+
mIsFlashlightOn = false
198222
}
199223

200224
private fun changeIconColor(color: Int, imageView: ImageView?) {

app/src/main/kotlin/com/simplemobiletools/flashlight/helpers/MyWidgetProvider.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ class MyWidgetProvider : AppWidgetProvider() {
3131
val views = RemoteViews(context.packageName, R.layout.widget)
3232

3333
val pendingIntent = PendingIntent.getBroadcast(context, it, intent, 0)
34-
views.setOnClickPendingIntent(R.id.toggle_btn, pendingIntent)
35-
views.setImageViewBitmap(R.id.toggle_btn, bmp)
34+
views.setOnClickPendingIntent(R.id.flashlight_btn, pendingIntent)
35+
views.setImageViewBitmap(R.id.flashlight_btn, bmp)
3636
appWidgetManager.updateAppWidget(it, views)
3737
}
3838
}
@@ -62,7 +62,7 @@ class MyWidgetProvider : AppWidgetProvider() {
6262
val appWidgetManager = AppWidgetManager.getInstance(context)
6363
appWidgetManager.getAppWidgetIds(getComponentName(context)).forEach {
6464
val views = RemoteViews(context.packageName, R.layout.widget)
65-
views.setImageViewBitmap(R.id.toggle_btn, bmp)
65+
views.setImageViewBitmap(R.id.flashlight_btn, bmp)
6666
appWidgetManager.updateAppWidget(it, views)
6767
}
6868
}

app/src/main/res/layout/activity_main.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
android:layout_height="wrap_content">
1414

1515
<ImageView
16-
android:id="@+id/toggle_btn"
16+
android:id="@+id/flashlight_btn"
1717
android:layout_width="@dimen/main_button_size"
1818
android:layout_height="@dimen/main_button_size"
1919
android:layout_marginBottom="@dimen/activity_margin"
@@ -37,7 +37,7 @@
3737
app:layout_constraintEnd_toEndOf="parent"
3838
app:layout_constraintHorizontal_bias="0.5"
3939
app:layout_constraintStart_toStartOf="parent"
40-
app:layout_constraintTop_toBottomOf="@+id/toggle_btn"/>
40+
app:layout_constraintTop_toBottomOf="@+id/flashlight_btn"/>
4141

4242
<ImageView
4343
android:id="@+id/stroboscope_btn"

app/src/main/res/layout/widget.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<ImageView
33
xmlns:android="http://schemas.android.com/apk/res/android"
4-
android:id="@+id/toggle_btn"
4+
android:id="@+id/flashlight_btn"
55
android:layout_width="wrap_content"
66
android:layout_height="wrap_content"
77
android:layout_margin="5dp"/>

0 commit comments

Comments
 (0)