fix #109, add a Bright Display shortcut

This commit is contained in:
tibbi
2020-05-25 00:03:59 +02:00
parent 19e6e045c5
commit 1b15544374
27 changed files with 112 additions and 45 deletions

View File

@ -48,6 +48,7 @@
<activity
android:name=".activities.BrightDisplayActivity"
android:label="@string/bright_display"
android:theme="@style/FullScreenTheme"/>
<activity

View File

@ -1,16 +1,20 @@
package com.simplemobiletools.flashlight.activities
import android.annotation.SuppressLint
import android.content.Intent
import android.content.pm.ActivityInfo
import android.content.pm.ShortcutInfo
import android.graphics.drawable.Icon
import android.graphics.drawable.LayerDrawable
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.WindowManager
import android.widget.ImageView
import android.widget.SeekBar
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.LICENSE_OTTO
import com.simplemobiletools.commons.helpers.PERMISSION_CAMERA
import com.simplemobiletools.commons.helpers.isNougatMR1Plus
import com.simplemobiletools.commons.helpers.isNougatPlus
import com.simplemobiletools.commons.models.FAQItem
import com.simplemobiletools.flashlight.BuildConfig
@ -22,6 +26,7 @@ import com.simplemobiletools.flashlight.models.Events
import com.squareup.otto.Bus
import com.squareup.otto.Subscribe
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*
class MainActivity : SimpleActivity() {
private val MAX_STROBO_DELAY = 2000L
@ -85,6 +90,7 @@ class MainActivity : SimpleActivity() {
requestedOrientation = if (config.forcePortraitMode) ActivityInfo.SCREEN_ORIENTATION_PORTRAIT else ActivityInfo.SCREEN_ORIENTATION_SENSOR
invalidateOptionsMenu()
checkShortcuts()
}
override fun onStart() {
@ -148,10 +154,10 @@ class MainActivity : SimpleActivity() {
val licenses = LICENSE_OTTO
val faqItems = arrayListOf(
FAQItem(R.string.faq_1_title_commons, R.string.faq_1_text_commons),
FAQItem(R.string.faq_4_title_commons, R.string.faq_4_text_commons),
FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons),
FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons)
FAQItem(R.string.faq_1_title_commons, R.string.faq_1_text_commons),
FAQItem(R.string.faq_4_title_commons, R.string.faq_4_text_commons),
FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons),
FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons)
)
startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true)
@ -167,22 +173,12 @@ class MainActivity : SimpleActivity() {
private fun setupStroboscope() {
stroboscope_bar.max = (MAX_STROBO_DELAY - MIN_STROBO_DELAY).toInt()
stroboscope_bar.progress = config.stroboscopeProgress
stroboscope_bar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar, progress: Int, b: Boolean) {
val frequency = stroboscope_bar.max - progress + MIN_STROBO_DELAY
mCameraImpl?.stroboFrequency = frequency
config.stroboscopeFrequency = frequency
config.stroboscopeProgress = progress
}
override fun onStartTrackingTouch(seekBar: SeekBar) {
}
override fun onStopTrackingTouch(seekBar: SeekBar) {
}
})
stroboscope_bar.onSeekBarChangeListener { progress ->
val frequency = stroboscope_bar.max - progress + MIN_STROBO_DELAY
mCameraImpl?.stroboFrequency = frequency
config.stroboscopeFrequency = frequency
config.stroboscopeProgress = progress
}
}
private fun toggleStroboscope(isSOS: Boolean) {
@ -264,6 +260,37 @@ class MainActivity : SimpleActivity() {
imageView!!.background.mutate().applyColorFilter(color)
}
@SuppressLint("NewApi")
private fun checkShortcuts() {
val appIconColor = config.appIconColor
if (isNougatMR1Plus() && config.lastHandledShortcutColor != appIconColor) {
val createNewContact = getBrightDisplayShortcut(appIconColor)
try {
shortcutManager.dynamicShortcuts = Arrays.asList(createNewContact)
config.lastHandledShortcutColor = appIconColor
} catch (ignored: Exception) {
}
}
}
@SuppressLint("NewApi")
private fun getBrightDisplayShortcut(appIconColor: Int): ShortcutInfo {
val brightDisplay = getString(R.string.bright_display)
val drawable = resources.getDrawable(R.drawable.shortcut_bright_display)
(drawable as LayerDrawable).findDrawableByLayerId(R.id.shortcut_bright_display_background).applyColorFilter(appIconColor)
val bmp = drawable.convertToBitmap()
val intent = Intent(this, BrightDisplayActivity::class.java)
intent.action = Intent.ACTION_VIEW
return ShortcutInfo.Builder(this, "bright_display")
.setShortLabel(brightDisplay)
.setLongLabel(brightDisplay)
.setIcon(Icon.createWithBitmap(bmp))
.setIntent(intent)
.build()
}
@Subscribe
fun cameraUnavailable(event: Events.CameraUnavailable) {
toast(R.string.camera_error)

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/shortcut_bright_display_background">
<shape android:shape="oval">
<solid android:color="@color/color_primary" />
</shape>
</item>
<item
android:bottom="@dimen/normal_margin"
android:drawable="@drawable/ic_bright_display"
android:left="@dimen/normal_margin"
android:right="@dimen/normal_margin"
android:top="@dimen/normal_margin" />
</layer-list>

View File

@ -138,7 +138,7 @@
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:text="@string/bright_display"
android:text="@string/show_bright_display"
app:switchPadding="@dimen/medium_margin" />
</RelativeLayout>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Fənər</string>
<string name="camera_error">Kamera əlçatan deyil</string>
<string name="camera_permission">Düzgün strob effekti üçün kamera icazəsi gərəkdir</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">İşıqlı ekran düyməsi göstər</string>
<string name="show_bright_display">İşıqlı ekran düyməsi göstər</string>
<string name="show_stroboscope">Stroboskop düyməsi göstər</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Başlanğıcda fənəri aç</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Svítilna</string>
<string name="camera_error">Přístup k fotoaparátu se nezdařil</string>
<string name="camera_permission">Přístup k fotoaparátu je potřebný pro správný stroboskopický efekt</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Zobrazit tlačítko pro jasný displej</string>
<string name="show_bright_display">Zobrazit tlačítko pro jasný displej</string>
<string name="show_stroboscope">Zobrazit tlačítko pro stroboskop</string>
<string name="show_sos">Zobrazit tlačítko SOS</string>
<string name="turn_flashlight_on">Zapnout svítilnu po spuštění</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Fflacholau</string>
<string name="camera_error">Methwyd cael at y camera</string>
<string name="camera_permission">Rhaid cael caniatâd y camera i\'r effaith strobosgop</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Dangos botwm dangosydd llachar</string>
<string name="show_bright_display">Dangos botwm dangosydd llachar</string>
<string name="show_stroboscope">Dangos botwm strobosgop</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Troi\'r fflacholau ymlaen wrth ddechrau</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Taschenlampe</string>
<string name="camera_error">Beanspruchen der Kamera fehlgeschlagen</string>
<string name="camera_permission">Kamera-Berechtigung ist für den Stroboskopeffekt erforderlich</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Zeige Button für helles Display</string>
<string name="show_bright_display">Zeige Button für helles Display</string>
<string name="show_stroboscope">Zeige Button für Stroboskop</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Taschenlampe beim Start einschalten</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Φακός</string>
<string name="camera_error">Η εύρεση της κάμερας απέτυχε</string>
<string name="camera_permission">Χρειάζεται άδεια χρήσης της κάμερας για τη σωστή λειτουργία στροβοσκοπίου</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Προβολή κουμπιού φωτεινότητας</string>
<string name="show_bright_display">Προβολή κουμπιού φωτεινότητας</string>
<string name="show_stroboscope">Προβολή κουμπιού στροβοσκοπίου</string>
<string name="show_sos">Προβολή κουμπιού SOS</string>
<string name="turn_flashlight_on">Άνοιγμα του φακού κατά την εκκίνηση</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Linterna</string>
<string name="camera_error">Ha fallado el acceso a la cámara</string>
<string name="camera_permission">El permiso de acceso a la cámara es necesario para un apropiado efecto estroboscópico</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Mostrar botón de pantalla brillante</string>
<string name="show_bright_display">Mostrar botón de pantalla brillante</string>
<string name="show_stroboscope">Mostrar botón de estroboscopio</string>
<string name="show_sos">Mostrar botón de SOS</string>
<string name="turn_flashlight_on">Encender la linterna al iniciar</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Lampe de poche</string>
<string name="camera_error">Échec de l\'obtention de l\'appareil photo</string>
<string name="camera_permission">L\'autorisation d\'accès à l\'appareil photo est nécessaire pour un effet stroboscope correct</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Afficher un bouton écran lumineux</string>
<string name="show_bright_display">Afficher un bouton écran lumineux</string>
<string name="show_stroboscope">Afficher un bouton stroboscope</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Activer la lampe de poche au démarrage</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Svjetiljka</string>
<string name="camera_error">Nije moguće pristupiti kameri</string>
<string name="camera_permission">Dopuštenje za pristup fotoaparatu potrebno je za pravilan stroboskopski efekt</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Prikaži gumb za svijetli zaslon</string>
<string name="show_bright_display">Prikaži gumb za svijetli zaslon</string>
<string name="show_stroboscope">Prikaži gumb za stroboskop</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Uključi svjetiljku pri pokretanju</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Torcia</string>
<string name="camera_error">Impossibile rilevare la fotocamera</string>
<string name="camera_permission">Il permesso per la fotocamera è necessario per l\'effetto stroboscopico</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Mostra un pulsante per lo schermo luminoso</string>
<string name="show_bright_display">Mostra un pulsante per lo schermo luminoso</string>
<string name="show_stroboscope">Mostra un pulsante per l\'effetto stroboscopico</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Accendi la torcia all\'avvio</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">フラッシュライト</string>
<string name="camera_error">カメラの取得に失敗しました</string>
<string name="camera_permission">適切なストロボ効果のために、カメラのアクセス許可が必要です</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">明るく表示ボタンを表示</string>
<string name="show_bright_display">明るく表示ボタンを表示</string>
<string name="show_stroboscope">ストロボボタンを表示</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Turn flashlight on at startup</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">손전등</string>
<string name="camera_error">카메라 취득 실패</string>
<string name="camera_permission">적절한 스트로보 스코프 효과를 얻으려면 카메라 사용 권한이 필요합니다.</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">브라이트 디스플레이 버튼 활성화</string>
<string name="show_bright_display">브라이트 디스플레이 버튼 활성화</string>
<string name="show_stroboscope">스트로보 스코프 버튼 활성화</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Turn flashlight on at startup</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Žibintuvėlis</string>
<string name="camera_error">Fotoaparato įjungti nepavyko</string>
<string name="camera_permission">Fotoaparato leidimas būtinas tinkamam stroboskopo efektui</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Rodyti ryškaus ekrano mygtuką</string>
<string name="show_bright_display">Rodyti ryškaus ekrano mygtuką</string>
<string name="show_stroboscope">Rodyti stroboskopo mygtuką</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Įjungti žibintuvėlį paleidus programėlę</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Zaklamp</string>
<string name="camera_error">Toegang tot de camera geweigerd</string>
<string name="camera_permission">De permissie Camera is nodig voor het stroboscoopeffect</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Knop voor fel scherm tonen</string>
<string name="show_bright_display">Knop voor fel scherm tonen</string>
<string name="show_stroboscope">Knop voor stroboscoop tonen</string>
<string name="show_sos">Knop voor SOS-noodsignaal tonen</string>
<string name="turn_flashlight_on">Zaklamp bij starten aanzetten</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Latarka</string>
<string name="camera_error">Uzyskanie dostępu do aparatu zakończone niepowodzeniem</string>
<string name="camera_permission">Uprawnienia dostępu do aparatu są niezbędne w celu uzyskania efektu stroboskopowego</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Pokazuj przycisk jasnego wyświetlania</string>
<string name="show_bright_display">Pokazuj przycisk jasnego wyświetlania</string>
<string name="show_stroboscope">Pokazuj przycisk stroboskopu</string>
<string name="show_sos">Show an SOS button</string>
   <string name="turn_flashlight_on">Włączaj latarkę po uruchomieniu aplikacji</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Lanterna</string>
<string name="camera_error">Erro ao obter a câmera</string>
<string name="camera_permission">A permissão para a câmera é necessária para usar o estroboscópio</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Mostrar o botão de Tela com Brilho Forte</string>
<string name="show_bright_display">Mostrar o botão de Tela com Brilho Forte</string>
<string name="show_stroboscope">Mostrar o botão do Estroboscópio</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Ligar a lanterna ao iniciar o app</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Lanterna</string>
<string name="camera_error">Falha ao obter a câmara</string>
<string name="camera_permission">A permissão da câmara é necessária para utilizar o efeito estroboscópio</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Mostrar botão para iluminar o ecrã</string>
<string name="show_bright_display">Mostrar botão para iluminar o ecrã</string>
<string name="show_stroboscope">Mostrar botão de estroboscópio</string>
<string name="show_sos">Mostrar um botão de SOS</string>
<string name="turn_flashlight_on">Ativar lanterna ao iniciar</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Фонарик</string>
<string name="camera_error">Не удалось получить доступ к камере</string>
<string name="camera_permission">Разрешение на доступ к камере необходимо для создания эффекта стробоскопа</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Показать кнопку переключения на белый экран</string>
<string name="show_bright_display">Показать кнопку переключения на белый экран</string>
<string name="show_stroboscope">Показать кнопку стробоскопа</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Включать фонарик при запуске</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Baterka</string>
<string name="camera_error">Prístup ku kamere zlyhal Obtaining the camera failed</string>
<string name="camera_permission">Pre správny stroboskopický efekt je potrebný prístup ku kamere</string>
<string name="bright_display">Jasný displej</string>
<!-- Settings -->
<string name="bright_display">Zobraziť tlačidlo pre jasný displej</string>
<string name="show_bright_display">Zobraziť tlačidlo pre jasný displej</string>
<string name="show_stroboscope">Zobraziť tlačidlo pre stroboskop</string>
<string name="show_sos">Zobraziť tlačidlo SOS</string>
<string name="turn_flashlight_on">Aktivovať baterku po spustení</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Ficklampa</string>
<string name="camera_error">Det gick inte att komma åt kameran</string>
<string name="camera_permission">Kamerabehörigheten behövs för en riktig stroboskopeffekt</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Visa en knapp för ljus skärm</string>
<string name="show_bright_display">Visa en knapp för ljus skärm</string>
<string name="show_stroboscope">Visa en stroboskopknapp</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Slå på ficklampan vid start</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Fener</string>
<string name="camera_error">Kamera hatası</string>
<string name="camera_permission">Düzgün stroboskop etkisi için kamera izni gereklidir</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Parlak ekran düğmesini göster</string>
<string name="show_bright_display">Parlak ekran düğmesini göster</string>
<string name="show_stroboscope">Stroboskop düğmesini göster</string>
<string name="show_sos">SOS düğmesini göster</string>
<string name="turn_flashlight_on">Başlangıçta feneri aç</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Ліхтарик</string>
<string name="camera_error">Не вдалося отримати доступ до камери</string>
<string name="camera_permission">Дозвіл на доступ до камери необхідний для створення ефекту стробоскопа</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Показувати кнопку перемикання на білий дисплей</string>
<string name="show_bright_display">Показувати кнопку перемикання на білий дисплей</string>
<string name="show_stroboscope">Показувати кнопку стробоскопа</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Вмикати ліхтарик при запуску</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">簡易手電筒</string>
<string name="camera_error">未能取得相機</string>
<string name="camera_permission">相機權限對於閃爍效果是必要的</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">顯示螢幕發亮按鈕</string>
<string name="show_bright_display">顯示螢幕發亮按鈕</string>
<string name="show_stroboscope">顯示閃爍效果按鈕</string>
<string name="show_sos">顯示SOS按鈕</string>
<string name="turn_flashlight_on">啟動時打開手電筒</string>

View File

@ -3,9 +3,10 @@
<string name="app_launcher_name">Flashlight</string>
<string name="camera_error">Obtaining the camera failed</string>
<string name="camera_permission">Camera permission is necessary for proper stroboscope effect</string>
<string name="bright_display">Bright display</string>
<!-- Settings -->
<string name="bright_display">Show a bright display button</string>
<string name="show_bright_display">Show a bright display button</string>
<string name="show_stroboscope">Show a stroboscope button</string>
<string name="show_sos">Show an SOS button</string>
<string name="turn_flashlight_on">Turn flashlight on at startup</string>