Merge branch 'master' into master
@ -1,6 +1,13 @@
|
||||
Changelog
|
||||
==========
|
||||
|
||||
Version 5.1.1 *(2020-05-25)*
|
||||
----------------------------
|
||||
|
||||
* Updated the app icon on lower Android versions
|
||||
* Added a Bright Display shortcut
|
||||
* Removed the Camera permission on Android 7+
|
||||
|
||||
Version 5.1.0 *(2020-03-23)*
|
||||
----------------------------
|
||||
|
||||
|
@ -16,8 +16,8 @@ android {
|
||||
applicationId "com.simplemobiletools.flashlight"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 29
|
||||
versionCode 39
|
||||
versionName "5.1.0"
|
||||
versionCode 41
|
||||
versionName "5.1.1"
|
||||
setProperty("archivesBaseName", "flashlight")
|
||||
}
|
||||
|
||||
@ -56,7 +56,7 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'com.simplemobiletools:commons:5.23.8'
|
||||
implementation 'com.squareup:otto:1.3.8'
|
||||
implementation 'com.simplemobiletools:commons:5.28.23'
|
||||
implementation 'org.greenrobot:eventbus:3.2.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta4'
|
||||
}
|
||||
|
6
app/proguard-rules.pro
vendored
@ -1,6 +1,6 @@
|
||||
# Otto
|
||||
# EventBus
|
||||
-keepattributes *Annotation*
|
||||
-keepclassmembers class ** {
|
||||
@com.squareup.otto.Subscribe public *;
|
||||
@com.squareup.otto.Produce public *;
|
||||
@org.greenrobot.eventbus.Subscribe <methods>;
|
||||
}
|
||||
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
|
||||
|
@ -1,20 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.simplemobiletools.flashlight"
|
||||
android:installLocation="auto">
|
||||
|
||||
<uses-permission android:name="android.permission.CAMERA"/>
|
||||
<uses-permission android:name="android.permission.FLASHLIGHT"/>
|
||||
<uses-permission
|
||||
android:name="android.permission.CAMERA"
|
||||
android:maxSdkVersion="23" />
|
||||
|
||||
<uses-permission android:name="android.permission.FLASHLIGHT" />
|
||||
|
||||
<uses-permission
|
||||
android:name="android.permission.USE_FINGERPRINT"
|
||||
tools:node="remove"/>
|
||||
tools:node="remove" />
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.camera.flash"
|
||||
android:required="true"/>
|
||||
android:required="true" />
|
||||
|
||||
<application
|
||||
android:name=".App"
|
||||
@ -29,62 +31,63 @@
|
||||
android:name=".activities.SplashActivity"
|
||||
android:theme="@style/SplashTheme">
|
||||
<intent-filter>
|
||||
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES"/>
|
||||
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".activities.MainActivity"
|
||||
android:theme="@style/AppTheme"/>
|
||||
android:theme="@style/AppTheme" />
|
||||
|
||||
<activity
|
||||
android:name=".activities.WidgetConfigureActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/MyWidgetConfigTheme">
|
||||
<intent-filter>
|
||||
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
|
||||
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".activities.BrightDisplayActivity"
|
||||
android:theme="@style/FullScreenTheme"/>
|
||||
android:label="@string/bright_display"
|
||||
android:theme="@style/FullScreenTheme" />
|
||||
|
||||
<activity
|
||||
android:name=".activities.SettingsActivity"
|
||||
android:label="@string/settings"
|
||||
android:parentActivityName=".activities.MainActivity"/>
|
||||
android:parentActivityName=".activities.MainActivity" />
|
||||
|
||||
<activity
|
||||
android:name="com.simplemobiletools.commons.activities.AboutActivity"
|
||||
android:label="@string/about"
|
||||
android:parentActivityName=".activities.MainActivity"/>
|
||||
android:parentActivityName=".activities.MainActivity" />
|
||||
|
||||
<activity
|
||||
android:name="com.simplemobiletools.commons.activities.LicenseActivity"
|
||||
android:label="@string/third_party_licences"
|
||||
android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity"/>
|
||||
android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity" />
|
||||
|
||||
<activity
|
||||
android:name="com.simplemobiletools.commons.activities.CustomizationActivity"
|
||||
android:label="@string/customize_colors"
|
||||
android:parentActivityName=".activities.SettingsActivity"/>
|
||||
android:parentActivityName=".activities.SettingsActivity" />
|
||||
|
||||
<activity
|
||||
android:name="com.simplemobiletools.commons.activities.FAQActivity"
|
||||
android:label="@string/frequently_asked_questions"
|
||||
android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity"/>
|
||||
android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity" />
|
||||
|
||||
<receiver
|
||||
android:name=".helpers.MyWidgetProvider"
|
||||
android:icon="@drawable/ic_flashlight">
|
||||
<intent-filter>
|
||||
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
|
||||
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data
|
||||
android:name="android.appwidget.provider"
|
||||
android:resource="@xml/widget_info"/>
|
||||
android:resource="@xml/widget_info" />
|
||||
</receiver>
|
||||
|
||||
<service
|
||||
@ -93,7 +96,7 @@
|
||||
android:label="@string/app_launcher_name"
|
||||
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
|
||||
<intent-filter>
|
||||
<action android:name="android.service.quicksettings.action.QS_TILE"/>
|
||||
<action android:name="android.service.quicksettings.action.QS_TILE" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
@ -105,8 +108,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -118,8 +121,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -131,8 +134,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -144,8 +147,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -157,8 +160,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -170,8 +173,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -183,8 +186,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -196,8 +199,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -209,8 +212,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -222,8 +225,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -235,8 +238,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -248,8 +251,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -261,8 +264,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -274,8 +277,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -286,8 +289,8 @@
|
||||
android:roundIcon="@mipmap/ic_launcher"
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -299,8 +302,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -312,8 +315,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -325,8 +328,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
@ -338,8 +341,8 @@
|
||||
android:targetActivity=".activities.SplashActivity">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
</application>
|
||||
|
@ -1,27 +1,31 @@
|
||||
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.LICENSE_EVENT_BUS
|
||||
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
|
||||
import com.simplemobiletools.flashlight.R
|
||||
import com.simplemobiletools.flashlight.extensions.config
|
||||
import com.simplemobiletools.flashlight.helpers.BusProvider
|
||||
import com.simplemobiletools.flashlight.helpers.MyCameraImpl
|
||||
import com.simplemobiletools.flashlight.models.Events
|
||||
import com.squareup.otto.Bus
|
||||
import com.squareup.otto.Subscribe
|
||||
import kotlinx.android.synthetic.main.activity_main.*
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import java.util.*
|
||||
|
||||
class MainActivity : SimpleActivity() {
|
||||
private val MAX_STROBO_DELAY = 2000L
|
||||
@ -29,7 +33,7 @@ class MainActivity : SimpleActivity() {
|
||||
private val FLASHLIGHT_STATE = "flashlight_state"
|
||||
private val STROBOSCOPE_STATE = "stroboscope_state"
|
||||
|
||||
private var mBus: Bus? = null
|
||||
private var mBus: EventBus? = null
|
||||
private var mCameraImpl: MyCameraImpl? = null
|
||||
private var mIsFlashlightOn = false
|
||||
private var reTurnFlashlightOn = true
|
||||
@ -39,7 +43,7 @@ class MainActivity : SimpleActivity() {
|
||||
setContentView(R.layout.activity_main)
|
||||
appLaunched(BuildConfig.APPLICATION_ID)
|
||||
|
||||
mBus = BusProvider.instance
|
||||
mBus = EventBus.getDefault()
|
||||
changeIconColor(getContrastColor(), stroboscope_btn)
|
||||
|
||||
bright_display_btn.setOnClickListener {
|
||||
@ -87,11 +91,14 @@ class MainActivity : SimpleActivity() {
|
||||
|
||||
requestedOrientation = if (config.forcePortraitMode) ActivityInfo.SCREEN_ORIENTATION_PORTRAIT else ActivityInfo.SCREEN_ORIENTATION_SENSOR
|
||||
invalidateOptionsMenu()
|
||||
|
||||
if(config.turnFlashlightOn && reTurnFlashlightOn){
|
||||
|
||||
if(config.turnFlashlightOn && reTurnFlashlightOn) {
|
||||
mCameraImpl!!.enableFlashlight()
|
||||
}
|
||||
|
||||
reTurnFlashlightOn = true
|
||||
|
||||
checkShortcuts()
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
@ -157,10 +164,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)
|
||||
@ -176,22 +183,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) {
|
||||
@ -273,6 +270,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)
|
||||
|
@ -1,7 +0,0 @@
|
||||
package com.simplemobiletools.flashlight.helpers
|
||||
|
||||
import com.squareup.otto.Bus
|
||||
|
||||
object BusProvider {
|
||||
val instance = Bus()
|
||||
}
|
@ -6,7 +6,7 @@ import android.hardware.camera2.CameraManager
|
||||
import android.os.Build
|
||||
import android.os.Handler
|
||||
import com.simplemobiletools.flashlight.models.Events
|
||||
import com.squareup.otto.Bus
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
internal class MarshmallowCamera constructor(val context: Context) {
|
||||
|
||||
@ -21,12 +21,12 @@ internal class MarshmallowCamera constructor(val context: Context) {
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.M)
|
||||
fun toggleMarshmallowFlashlight(bus: Bus, enable: Boolean) {
|
||||
fun toggleMarshmallowFlashlight(enable: Boolean) {
|
||||
try {
|
||||
manager.setTorchMode(cameraId!!, enable)
|
||||
} catch (e: Exception) {
|
||||
val mainRunnable = Runnable {
|
||||
bus.post(Events.CameraUnavailable())
|
||||
EventBus.getDefault().post(Events.CameraUnavailable())
|
||||
}
|
||||
Handler(context.mainLooper).post(mainRunnable)
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ import com.simplemobiletools.flashlight.R
|
||||
import com.simplemobiletools.flashlight.extensions.config
|
||||
import com.simplemobiletools.flashlight.extensions.updateWidgets
|
||||
import com.simplemobiletools.flashlight.models.Events
|
||||
import com.squareup.otto.Bus
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import java.io.IOException
|
||||
|
||||
class MyCameraImpl(val context: Context) {
|
||||
@ -23,16 +23,18 @@ class MyCameraImpl(val context: Context) {
|
||||
|
||||
private var camera: Camera? = null
|
||||
private var params: Camera.Parameters? = null
|
||||
private var bus: Bus? = null
|
||||
private var isMarshmallow = false
|
||||
private var shouldEnableFlashlight = false
|
||||
private var isStroboSOS = false // are we sending SOS, or casual stroboscope?
|
||||
|
||||
private var marshmallowCamera: MarshmallowCamera? = null
|
||||
|
||||
@Volatile
|
||||
private var shouldStroboscopeStop = false
|
||||
|
||||
@Volatile
|
||||
private var isStroboscopeRunning = false
|
||||
|
||||
@Volatile
|
||||
private var isSOSRunning = false
|
||||
|
||||
@ -41,12 +43,6 @@ class MyCameraImpl(val context: Context) {
|
||||
|
||||
init {
|
||||
isMarshmallow = isMarshmallowPlus()
|
||||
|
||||
if (bus == null) {
|
||||
bus = BusProvider.instance
|
||||
bus!!.register(this)
|
||||
}
|
||||
|
||||
handleCameraSetup()
|
||||
stroboFrequency = context.config.stroboscopeFrequency
|
||||
}
|
||||
@ -82,7 +78,7 @@ class MyCameraImpl(val context: Context) {
|
||||
|
||||
fun stopStroboscope() {
|
||||
shouldStroboscopeStop = true
|
||||
bus!!.post(Events.StopStroboscope())
|
||||
EventBus.getDefault().post(Events.StopStroboscope())
|
||||
}
|
||||
|
||||
fun toggleSOS(): Boolean {
|
||||
@ -115,7 +111,7 @@ class MyCameraImpl(val context: Context) {
|
||||
|
||||
fun stopSOS() {
|
||||
shouldStroboscopeStop = true
|
||||
bus!!.post(Events.StopSOS())
|
||||
EventBus.getDefault().post(Events.StopSOS())
|
||||
}
|
||||
|
||||
private fun tryInitCamera(): Boolean {
|
||||
@ -163,7 +159,7 @@ class MyCameraImpl(val context: Context) {
|
||||
params!!.flashMode = Camera.Parameters.FLASH_MODE_OFF
|
||||
camera!!.parameters = params
|
||||
} catch (e: Exception) {
|
||||
bus!!.post(Events.CameraUnavailable())
|
||||
EventBus.getDefault().post(Events.CameraUnavailable())
|
||||
}
|
||||
}
|
||||
|
||||
@ -223,12 +219,12 @@ class MyCameraImpl(val context: Context) {
|
||||
|
||||
private fun stateChanged(isEnabled: Boolean) {
|
||||
isFlashlightOn = isEnabled
|
||||
bus!!.post(Events.StateChanged(isEnabled))
|
||||
EventBus.getDefault().post(Events.StateChanged(isEnabled))
|
||||
context.updateWidgets(isEnabled)
|
||||
}
|
||||
|
||||
private fun toggleMarshmallowFlashlight(enable: Boolean) {
|
||||
marshmallowCamera!!.toggleMarshmallowFlashlight(bus!!, enable)
|
||||
marshmallowCamera!!.toggleMarshmallowFlashlight(enable)
|
||||
}
|
||||
|
||||
fun releaseCamera() {
|
||||
@ -239,7 +235,6 @@ class MyCameraImpl(val context: Context) {
|
||||
camera?.release()
|
||||
camera = null
|
||||
|
||||
bus?.unregister(this)
|
||||
isFlashlightOn = false
|
||||
shouldStroboscopeStop = true
|
||||
}
|
||||
@ -260,10 +255,10 @@ class MyCameraImpl(val context: Context) {
|
||||
if (isNougatPlus()) {
|
||||
while (!shouldStroboscopeStop) {
|
||||
try {
|
||||
marshmallowCamera!!.toggleMarshmallowFlashlight(bus!!, true)
|
||||
marshmallowCamera!!.toggleMarshmallowFlashlight(true)
|
||||
val onDuration = if (isStroboSOS) SOS[sosIndex++ % SOS.size] else stroboFrequency
|
||||
Thread.sleep(onDuration)
|
||||
marshmallowCamera!!.toggleMarshmallowFlashlight(bus!!, false)
|
||||
marshmallowCamera!!.toggleMarshmallowFlashlight(false)
|
||||
val offDuration = if (isStroboSOS) SOS[sosIndex++ % SOS.size] else stroboFrequency
|
||||
Thread.sleep(offDuration)
|
||||
} catch (e: Exception) {
|
||||
|
16
app/src/main/res/drawable/shortcut_bright_display.xml
Normal 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>
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/bright_display_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
@ -9,7 +8,7 @@
|
||||
android:id="@+id/bright_display"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@android:color/white"/>
|
||||
android:background="@android:color/white" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bright_display_change_color"
|
||||
@ -20,6 +19,6 @@
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="@dimen/activity_margin"
|
||||
android:text="@string/change_color"
|
||||
android:textSize="@dimen/big_text_size"/>
|
||||
android:textSize="@dimen/big_text_size" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/main_scrollview"
|
||||
android:layout_width="match_parent"
|
||||
@ -23,7 +22,7 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/bright_display_btn"
|
||||
@ -37,7 +36,7 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/flashlight_btn"/>
|
||||
app:layout_constraintTop_toBottomOf="@+id/flashlight_btn" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/sos_btn"
|
||||
@ -54,7 +53,7 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/bright_display_btn"/>
|
||||
app:layout_constraintTop_toBottomOf="@+id/bright_display_btn" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/stroboscope_btn"
|
||||
@ -67,7 +66,7 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/sos_btn"/>
|
||||
app:layout_constraintTop_toBottomOf="@+id/sos_btn" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MySeekBar
|
||||
android:id="@+id/stroboscope_bar"
|
||||
@ -81,7 +80,7 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/stroboscope_btn"/>
|
||||
app:layout_constraintTop_toBottomOf="@+id/stroboscope_btn" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</ScrollView>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/settings_scrollview"
|
||||
android:layout_width="match_parent"
|
||||
@ -29,7 +28,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/purchase_simple_thank_you"/>
|
||||
android:text="@string/purchase_simple_thank_you" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@ -50,7 +49,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/customize_colors"/>
|
||||
android:text="@string/customize_colors" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@ -71,7 +70,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/customize_widget_colors"/>
|
||||
android:text="@string/customize_widget_colors" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@ -94,7 +93,7 @@
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/use_english_language"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@ -117,7 +116,7 @@
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/turn_flashlight_on"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@ -139,8 +138,8 @@
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/bright_display"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
android:text="@string/show_bright_display"
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@ -163,7 +162,7 @@
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/show_sos"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@ -186,7 +185,7 @@
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/show_stroboscope"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@ -209,7 +208,7 @@
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/force_portrait_mode"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ImageView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/flashlight_btn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="5dp"/>
|
||||
android:layout_margin="5dp" />
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
@ -18,21 +17,21 @@
|
||||
android:id="@+id/config_image"
|
||||
android:layout_width="@dimen/main_button_size"
|
||||
android:layout_height="@dimen/main_button_size"
|
||||
android:background="@drawable/ic_flashlight"/>
|
||||
android:background="@drawable/ic_flashlight" />
|
||||
</RelativeLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/config_widget_color"
|
||||
android:layout_width="@dimen/widget_colorpicker_size"
|
||||
android:layout_height="@dimen/widget_colorpicker_size"
|
||||
android:layout_above="@+id/config_save"/>
|
||||
android:layout_above="@+id/config_save" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/config_widget_seekbar_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignBottom="@+id/config_widget_color"
|
||||
android:layout_alignTop="@+id/config_widget_color"
|
||||
android:layout_alignBottom="@+id/config_widget_color"
|
||||
android:layout_toRightOf="@+id/config_widget_color"
|
||||
android:background="@android:color/white">
|
||||
|
||||
@ -42,21 +41,21 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"/>
|
||||
android:paddingRight="@dimen/activity_margin" />
|
||||
</RelativeLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/config_save"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="@color/gradient_grey_start"
|
||||
android:fontFamily="sans-serif-light"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:text="@string/ok"
|
||||
android:textColor="@color/color_primary"
|
||||
android:textSize="@dimen/big_text_size"/>
|
||||
android:textSize="@dimen/big_text_size" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 10 KiB |
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
@ -16,17 +17,17 @@
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Moderná jednoduchá baterka s SOS, stroboskopom a jasným displejom bez reklám</string>
|
||||
<string name="app_long_description">
|
||||
A clean flashlight with an extra bright display, customizable stroboscope and a predefined SOS mode.
|
||||
Čistá baterka s funkciou extra jasného displeja, voliteľným stroboskopom a SOS módom.
|
||||
|
||||
All these functions can be hugely helpful under certain circumstances.
|
||||
Všetky tieto funkcie môžu byť v istých prípadoch veľmi užitočné.
|
||||
|
||||
The Bright display can have its color changed, opening a new world of possible uses. It can come handy in case you want to see your wider proximity without blinding yourself.
|
||||
Jasný displej má meniteľnú farbu, čo vytvára celý svet nových možností. Viete si pomocou neho vysvietiť okolie bez toho, že by ste sa oslepili.
|
||||
|
||||
The stroboscope can have its frequency changed, ranging from really fast blinking to occasional ones.
|
||||
Strokoskop má voliteľnú frekvenciu od veľmi rýchleho blikania po pomalé.
|
||||
|
||||
If this free flashlight is turned on via the app (not widget), it will prevent the device from falling asleep. The strong torch can optionally turn on at launching the app, but it isn\'t mandatory.
|
||||
Ak baterku zapnete štandardným spustením (not cez widget), zabráni uspatiu zariadenia. Baterka sa môže po spustení apky automaticky zapnúť, ale nie je to povinné.
|
||||
|
||||
Comes with a 1x1 widget with customizable color and transparency.
|
||||
K dispozícií máte aj 1x1 widget s voliteľnou farbou a priesvitnosťou.
|
||||
|
||||
Táto apka je založená na Material dizajne a má prednastavenú tmavú tému, poskytuje výbornú používateľskú skúsenosť pre ľahké používanie. Chýbajúci prístup k internetu garantuje lepšie súkromie, bezpečnosť a stabilitu ako ostatné apky.
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.3.70'
|
||||
ext.kotlin_version = '1.3.72'
|
||||
|
||||
repositories {
|
||||
google()
|
||||
|
3
fastlane/metadata/android/en-US/changelogs/40.txt
Normal file
@ -0,0 +1,3 @@
|
||||
* Updated the app icon on lower Android versions
|
||||
* Added a Bright Display shortcut
|
||||
* Removed the Camera permission on Android 7+
|
@ -1,7 +1,24 @@
|
||||
Jednoduchá baterka s jasným displejom a nastaviteľným stroboskopom. Ak bude zapnutá cez aplikáciu (nie widget), zabráni uspaniu zariadenia.
|
||||
Čistá baterka s funkciou extra jasného displeja, voliteľným stroboskopom a SOS módom.
|
||||
|
||||
Poskytuje aj 1x1 widget s nastaviteľnou farbou.
|
||||
Všetky tieto funkcie môžu byť v istých prípadoch veľmi užitočné.
|
||||
|
||||
Jasný displej má meniteľnú farbu, čo vytvára celý svet nových možností. Viete si pomocou neho vysvietiť okolie bez toho, že by ste sa oslepili.
|
||||
|
||||
Strokoskop má voliteľnú frekvenciu od veľmi rýchleho blikania po pomalé.
|
||||
|
||||
Ak baterku zapnete štandardným spustením (not cez widget), zabráni uspatiu zariadenia. Baterka sa môže po spustení apky automaticky zapnúť, ale nie je to povinné.
|
||||
|
||||
K dispozícií máte aj 1x1 widget s voliteľnou farbou a priesvitnosťou.
|
||||
|
||||
Táto apka je založená na Material dizajne a má prednastavenú tmavú tému, poskytuje výbornú používateľskú skúsenosť pre ľahké používanie. Chýbajúci prístup k internetu garantuje lepšie súkromie, bezpečnosť a stabilitu ako ostatné apky.
|
||||
|
||||
Neobsahuje žiadne reklamy a nepotrebné oprávnenia. Je opensource, poskytuje možnosť zmeny farieb.
|
||||
|
||||
Táto aplikácia je iba jednou zo skupiny aplikácií. Ostatné viete nájsť na https://www.simplemobiletools.com
|
||||
<b>Pozrite si celú sadu aplikácií na:</b>
|
||||
https://www.simplemobiletools.com
|
||||
|
||||
<b>Facebook:</b>
|
||||
https://www.facebook.com/simplemobiletools
|
||||
|
||||
<b>Reddit:</b>
|
||||
https://www.reddit.com/r/SimpleMobileTools
|
||||
|
@ -1 +1 @@
|
||||
Jednoduchá baterka bez reklám
|
||||
Moderná jednoduchá baterka s SOS, stroboskopom a jasným displejom bez reklám
|
||||
|
@ -1 +1 @@
|
||||
Jednoduchá baterka - Nestraťte sa v tme
|
||||
Jednoduchá baterka - Jasný displej a baterka
|
||||
|