Skip to content

Commit 1b15544

Browse files
committed
fix #109, add a Bright Display shortcut
1 parent 19e6e04 commit 1b15544

File tree

27 files changed

+112
-45
lines changed

27 files changed

+112
-45
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848

4949
<activity
5050
android:name=".activities.BrightDisplayActivity"
51+
android:label="@string/bright_display"
5152
android:theme="@style/FullScreenTheme"/>
5253

5354
<activity

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

Lines changed: 48 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
package com.simplemobiletools.flashlight.activities
22

3+
import android.annotation.SuppressLint
34
import android.content.Intent
45
import android.content.pm.ActivityInfo
6+
import android.content.pm.ShortcutInfo
7+
import android.graphics.drawable.Icon
8+
import android.graphics.drawable.LayerDrawable
59
import android.os.Bundle
610
import android.view.Menu
711
import android.view.MenuItem
812
import android.view.WindowManager
913
import android.widget.ImageView
10-
import android.widget.SeekBar
1114
import com.simplemobiletools.commons.extensions.*
1215
import com.simplemobiletools.commons.helpers.LICENSE_OTTO
1316
import com.simplemobiletools.commons.helpers.PERMISSION_CAMERA
17+
import com.simplemobiletools.commons.helpers.isNougatMR1Plus
1418
import com.simplemobiletools.commons.helpers.isNougatPlus
1519
import com.simplemobiletools.commons.models.FAQItem
1620
import com.simplemobiletools.flashlight.BuildConfig
@@ -22,6 +26,7 @@ import com.simplemobiletools.flashlight.models.Events
2226
import com.squareup.otto.Bus
2327
import com.squareup.otto.Subscribe
2428
import kotlinx.android.synthetic.main.activity_main.*
29+
import java.util.*
2530

2631
class MainActivity : SimpleActivity() {
2732
private val MAX_STROBO_DELAY = 2000L
@@ -85,6 +90,7 @@ class MainActivity : SimpleActivity() {
8590

8691
requestedOrientation = if (config.forcePortraitMode) ActivityInfo.SCREEN_ORIENTATION_PORTRAIT else ActivityInfo.SCREEN_ORIENTATION_SENSOR
8792
invalidateOptionsMenu()
93+
checkShortcuts()
8894
}
8995

9096
override fun onStart() {
@@ -148,10 +154,10 @@ class MainActivity : SimpleActivity() {
148154
val licenses = LICENSE_OTTO
149155

150156
val faqItems = arrayListOf(
151-
FAQItem(R.string.faq_1_title_commons, R.string.faq_1_text_commons),
152-
FAQItem(R.string.faq_4_title_commons, R.string.faq_4_text_commons),
153-
FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons),
154-
FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons)
157+
FAQItem(R.string.faq_1_title_commons, R.string.faq_1_text_commons),
158+
FAQItem(R.string.faq_4_title_commons, R.string.faq_4_text_commons),
159+
FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons),
160+
FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons)
155161
)
156162

157163
startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true)
@@ -167,22 +173,12 @@ class MainActivity : SimpleActivity() {
167173
private fun setupStroboscope() {
168174
stroboscope_bar.max = (MAX_STROBO_DELAY - MIN_STROBO_DELAY).toInt()
169175
stroboscope_bar.progress = config.stroboscopeProgress
170-
stroboscope_bar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
171-
override fun onProgressChanged(seekBar: SeekBar, progress: Int, b: Boolean) {
172-
val frequency = stroboscope_bar.max - progress + MIN_STROBO_DELAY
173-
mCameraImpl?.stroboFrequency = frequency
174-
config.stroboscopeFrequency = frequency
175-
config.stroboscopeProgress = progress
176-
}
177-
178-
override fun onStartTrackingTouch(seekBar: SeekBar) {
179-
180-
}
181-
182-
override fun onStopTrackingTouch(seekBar: SeekBar) {
183-
184-
}
185-
})
176+
stroboscope_bar.onSeekBarChangeListener { progress ->
177+
val frequency = stroboscope_bar.max - progress + MIN_STROBO_DELAY
178+
mCameraImpl?.stroboFrequency = frequency
179+
config.stroboscopeFrequency = frequency
180+
config.stroboscopeProgress = progress
181+
}
186182
}
187183

188184
private fun toggleStroboscope(isSOS: Boolean) {
@@ -264,6 +260,37 @@ class MainActivity : SimpleActivity() {
264260
imageView!!.background.mutate().applyColorFilter(color)
265261
}
266262

263+
@SuppressLint("NewApi")
264+
private fun checkShortcuts() {
265+
val appIconColor = config.appIconColor
266+
if (isNougatMR1Plus() && config.lastHandledShortcutColor != appIconColor) {
267+
val createNewContact = getBrightDisplayShortcut(appIconColor)
268+
269+
try {
270+
shortcutManager.dynamicShortcuts = Arrays.asList(createNewContact)
271+
config.lastHandledShortcutColor = appIconColor
272+
} catch (ignored: Exception) {
273+
}
274+
}
275+
}
276+
277+
@SuppressLint("NewApi")
278+
private fun getBrightDisplayShortcut(appIconColor: Int): ShortcutInfo {
279+
val brightDisplay = getString(R.string.bright_display)
280+
val drawable = resources.getDrawable(R.drawable.shortcut_bright_display)
281+
(drawable as LayerDrawable).findDrawableByLayerId(R.id.shortcut_bright_display_background).applyColorFilter(appIconColor)
282+
val bmp = drawable.convertToBitmap()
283+
284+
val intent = Intent(this, BrightDisplayActivity::class.java)
285+
intent.action = Intent.ACTION_VIEW
286+
return ShortcutInfo.Builder(this, "bright_display")
287+
.setShortLabel(brightDisplay)
288+
.setLongLabel(brightDisplay)
289+
.setIcon(Icon.createWithBitmap(bmp))
290+
.setIntent(intent)
291+
.build()
292+
}
293+
267294
@Subscribe
268295
fun cameraUnavailable(event: Events.CameraUnavailable) {
269296
toast(R.string.camera_error)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item android:id="@+id/shortcut_bright_display_background">
4+
<shape android:shape="oval">
5+
<solid android:color="@color/color_primary" />
6+
</shape>
7+
</item>
8+
9+
<item
10+
android:bottom="@dimen/normal_margin"
11+
android:drawable="@drawable/ic_bright_display"
12+
android:left="@dimen/normal_margin"
13+
android:right="@dimen/normal_margin"
14+
android:top="@dimen/normal_margin" />
15+
16+
</layer-list>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@
138138
android:background="@null"
139139
android:clickable="false"
140140
android:paddingStart="@dimen/medium_margin"
141-
android:text="@string/bright_display"
141+
android:text="@string/show_bright_display"
142142
app:switchPadding="@dimen/medium_margin" />
143143

144144
</RelativeLayout>

app/src/main/res/values-az/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
<string name="app_launcher_name">Fənər</string>
44
<string name="camera_error">Kamera əlçatan deyil</string>
55
<string name="camera_permission">Düzgün strob effekti üçün kamera icazəsi gərəkdir</string>
6+
<string name="bright_display">Bright display</string>
67

78
<!-- Settings -->
8-
<string name="bright_display">İşıqlı ekran düyməsi göstər</string>
9+
<string name="show_bright_display">İşıqlı ekran düyməsi göstər</string>
910
<string name="show_stroboscope">Stroboskop düyməsi göstər</string>
1011
<string name="show_sos">Show an SOS button</string>
1112
<string name="turn_flashlight_on">Başlanğıcda fənəri aç</string>

app/src/main/res/values-cs/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
<string name="app_launcher_name">Svítilna</string>
44
<string name="camera_error">Přístup k fotoaparátu se nezdařil</string>
55
<string name="camera_permission">Přístup k fotoaparátu je potřebný pro správný stroboskopický efekt</string>
6+
<string name="bright_display">Bright display</string>
67

78
<!-- Settings -->
8-
<string name="bright_display">Zobrazit tlačítko pro jasný displej</string>
9+
<string name="show_bright_display">Zobrazit tlačítko pro jasný displej</string>
910
<string name="show_stroboscope">Zobrazit tlačítko pro stroboskop</string>
1011
<string name="show_sos">Zobrazit tlačítko SOS</string>
1112
<string name="turn_flashlight_on">Zapnout svítilnu po spuštění</string>

app/src/main/res/values-cy/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
<string name="app_launcher_name">Fflacholau</string>
44
<string name="camera_error">Methwyd cael at y camera</string>
55
<string name="camera_permission">Rhaid cael caniatâd y camera i\'r effaith strobosgop</string>
6+
<string name="bright_display">Bright display</string>
67

78
<!-- Settings -->
8-
<string name="bright_display">Dangos botwm dangosydd llachar</string>
9+
<string name="show_bright_display">Dangos botwm dangosydd llachar</string>
910
<string name="show_stroboscope">Dangos botwm strobosgop</string>
1011
<string name="show_sos">Show an SOS button</string>
1112
<string name="turn_flashlight_on">Troi\'r fflacholau ymlaen wrth ddechrau</string>

app/src/main/res/values-de/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
<string name="app_launcher_name">Taschenlampe</string>
44
<string name="camera_error">Beanspruchen der Kamera fehlgeschlagen</string>
55
<string name="camera_permission">Kamera-Berechtigung ist für den Stroboskopeffekt erforderlich</string>
6+
<string name="bright_display">Bright display</string>
67

78
<!-- Settings -->
8-
<string name="bright_display">Zeige Button für helles Display</string>
9+
<string name="show_bright_display">Zeige Button für helles Display</string>
910
<string name="show_stroboscope">Zeige Button für Stroboskop</string>
1011
<string name="show_sos">Show an SOS button</string>
1112
<string name="turn_flashlight_on">Taschenlampe beim Start einschalten</string>

app/src/main/res/values-el/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
<string name="app_launcher_name">Φακός</string>
44
<string name="camera_error">Η εύρεση της κάμερας απέτυχε</string>
55
<string name="camera_permission">Χρειάζεται άδεια χρήσης της κάμερας για τη σωστή λειτουργία στροβοσκοπίου</string>
6+
<string name="bright_display">Bright display</string>
67

78
<!-- Settings -->
8-
<string name="bright_display">Προβολή κουμπιού φωτεινότητας</string>
9+
<string name="show_bright_display">Προβολή κουμπιού φωτεινότητας</string>
910
<string name="show_stroboscope">Προβολή κουμπιού στροβοσκοπίου</string>
1011
<string name="show_sos">Προβολή κουμπιού SOS</string>
1112
<string name="turn_flashlight_on">Άνοιγμα του φακού κατά την εκκίνηση</string>

app/src/main/res/values-es/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
<string name="app_launcher_name">Linterna</string>
44
<string name="camera_error">Ha fallado el acceso a la cámara</string>
55
<string name="camera_permission">El permiso de acceso a la cámara es necesario para un apropiado efecto estroboscópico</string>
6+
<string name="bright_display">Bright display</string>
67

78
<!-- Settings -->
8-
<string name="bright_display">Mostrar botón de pantalla brillante</string>
9+
<string name="show_bright_display">Mostrar botón de pantalla brillante</string>
910
<string name="show_stroboscope">Mostrar botón de estroboscopio</string>
1011
<string name="show_sos">Mostrar botón de SOS</string>
1112
<string name="turn_flashlight_on">Encender la linterna al iniciar</string>

0 commit comments

Comments
 (0)