Skip to content

Commit f5d631c

Browse files
committed
rfct: setting for barcode service
1 parent 5c584b5 commit f5d631c

8 files changed

Lines changed: 112 additions & 13 deletions

File tree

app/src/main/java/com/nlinterface/activities/MainActivity.kt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,6 @@ class MainActivity : AppCompatActivity() {
6565
configureUI()
6666
configureTTS()
6767
configureSTT()
68-
69-
verifyCameraPermissions()
70-
if (checkCallingOrSelfPermission(
71-
Manifest.permission.CAMERA
72-
) == PackageManager.PERMISSION_GRANTED) {
73-
val serviceIntent = Intent(this, ConstantScanning()::class.java)
74-
startService(serviceIntent)
75-
}
7668
}
7769

7870
/**
@@ -94,6 +86,17 @@ class MainActivity : AppCompatActivity() {
9486

9587
// process theme settings
9688
GlobalParameters.instance!!.updateTheme()
89+
90+
val serviceIntent = Intent(this, ConstantScanning()::class.java)
91+
if (GlobalParameters.instance!!.barcodeServiceMode == GlobalParameters.BarcodeServiceMode.ON) {
92+
verifyCameraPermissions()
93+
if (checkCallingOrSelfPermission( Manifest.permission.CAMERA ) == PackageManager.PERMISSION_GRANTED) {
94+
startService(serviceIntent)
95+
}
96+
} else {
97+
stopService(serviceIntent)
98+
Log.println(Log.INFO, "Scanner", "Stopping the Barcode Scanning Service")
99+
}
97100
}
98101

99102
/**

app/src/main/java/com/nlinterface/activities/SettingsActivity.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.nlinterface.utility.ActivityType
1414
import com.nlinterface.utility.GlobalParameters
1515
import com.nlinterface.utility.GlobalParameters.ThemeChoice
1616
import com.nlinterface.utility.GlobalParameters.KeepScreenOn
17+
import com.nlinterface.utility.GlobalParameters.BarcodeServiceMode
1718
import com.nlinterface.utility.STTInputType
1819
import com.nlinterface.utility.navToActivity
1920
import com.nlinterface.utility.setViewRelativeSize
@@ -53,6 +54,9 @@ class SettingsActivity : AppCompatActivity() {
5354
private lateinit var themeOptions: MutableList<String>
5455
private lateinit var themeButton: Button
5556

57+
private lateinit var barcodeServiceOptions: MutableList<String>
58+
private lateinit var barcodeServiceButton : Button
59+
5660
private lateinit var voiceActivationButton: ImageButton
5761

5862
private lateinit var lastCommand: String
@@ -83,6 +87,11 @@ class SettingsActivity : AppCompatActivity() {
8387
themeOptions.add(option)
8488
}
8589

90+
barcodeServiceOptions = mutableListOf()
91+
resources.getStringArray(R.array.barcode_mode_options).forEach { option ->
92+
barcodeServiceOptions.add(option)
93+
}
94+
8695
configureUI()
8796
configureTTS()
8897
configureSTT()
@@ -107,6 +116,9 @@ class SettingsActivity : AppCompatActivity() {
107116
keepScreenOnButton.setOnClickListener { onKeepScreenOnButtonClick() }
108117
keepScreenOnButton.text = keepScreenOnOptions[globalParameters.keepScreenOn.ordinal]
109118

119+
barcodeServiceButton = findViewById(R.id.settings_barcode_mode)
120+
barcodeServiceButton.setOnClickListener { onBarcodeServiceButtonClick() }
121+
barcodeServiceButton.text = barcodeServiceOptions[globalParameters.barcodeServiceMode.ordinal]
110122
}
111123

112124
/**
@@ -145,6 +157,19 @@ class SettingsActivity : AppCompatActivity() {
145157
viewModel.say(resources.getString(R.string.new_screen_setting, keepScreenOnButton.text))
146158
}
147159

160+
private fun onBarcodeServiceButtonClick() {
161+
if (globalParameters.barcodeServiceMode.ordinal == BarcodeServiceMode.values().size - 1) {
162+
globalParameters.barcodeServiceMode = BarcodeServiceMode.values()[0]
163+
} else {
164+
globalParameters.barcodeServiceMode = BarcodeServiceMode.values()[globalParameters.barcodeServiceMode.ordinal + 1]
165+
}
166+
167+
barcodeServiceButton.text = barcodeServiceOptions[globalParameters.barcodeServiceMode.ordinal]
168+
169+
// TODO: Add voice commands for Barcode Service
170+
}
171+
172+
148173
/**
149174
* If the activity is paused, save the current preferences to SharedPreferences.
150175
*/

app/src/main/java/com/nlinterface/utility/GlobalParameters.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ open class GlobalParameters protected constructor() {
1111

1212
var keepScreenOn: KeepScreenOn = KeepScreenOn.NO
1313
var themeChoice: ThemeChoice = ThemeChoice.SYSTEM_DEFAULT
14+
var barcodeServiceMode: BarcodeServiceMode = BarcodeServiceMode.OFF
1415

1516
lateinit var locale: Locale
1617

@@ -27,6 +28,11 @@ open class GlobalParameters protected constructor() {
2728
DARK
2829
}
2930

31+
enum class BarcodeServiceMode {
32+
ON,
33+
OFF
34+
}
35+
3036
// make it a Singleton
3137
companion object {
3238

@@ -61,6 +67,12 @@ open class GlobalParameters protected constructor() {
6167
ThemeChoice.SYSTEM_DEFAULT.toString()
6268
)
6369
instance!!.themeChoice = ThemeChoice.valueOf(prefTheme!!)
70+
71+
val prefBarcodeServiceMode = sharedPref.getString(
72+
"BARCODE_SERVICE_MODE",
73+
BarcodeServiceMode.OFF.toString()
74+
)
75+
instance!!.barcodeServiceMode = BarcodeServiceMode.valueOf(prefBarcodeServiceMode!!)
6476
}
6577

6678
fun updateTheme() {

app/src/main/java/com/nlinterface/viewmodels/BarcodeProductinfoViewModel.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import android.content.Intent
1717
import android.os.IBinder
1818
import android.os.Vibrator
1919
import android.util.Log
20+
import androidx.core.content.getSystemService
2021
import androidx.lifecycle.ProcessLifecycleOwner
2122
import org.jsoup.Jsoup
2223
import org.jsoup.nodes.Document
@@ -188,6 +189,13 @@ class ConstantScanning: Service() {
188189
return null
189190
}
190191

192+
193+
override fun onDestroy() {
194+
val cameraProvider = ProcessCameraProvider.getInstance(this)
195+
cameraProvider.cancel(true)
196+
super.onDestroy()
197+
}
198+
191199
/**
192200
* Function that manages the Service, once initialized.
193201
* It creates a viewModel object to be passed on, so the say method can be used later on.

app/src/main/java/com/nlinterface/viewmodels/SettingsViewModel.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,4 +247,14 @@ class SettingsViewModel(
247247
val globalParamsInstance = GlobalParameters.instance!!
248248
globalParamsInstance.keepScreenOn = newScreenSetting
249249
}
250+
251+
/**
252+
* Changes the keep screen on settings.
253+
*
254+
* @param newBarcodeServiceMode: GlobalParameters.BarcodeServiceMode, the barcode service status to be set
255+
*/
256+
fun setBarcodeServiceMode(newBarcodeServiceMode: GlobalParameters.BarcodeServiceMode) {
257+
val globalParamsInstance = GlobalParameters.instance!!
258+
globalParamsInstance.barcodeServiceMode = newBarcodeServiceMode
259+
}
250260
}

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

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,23 @@
55
android:layout_width="match_parent"
66
android:layout_height="match_parent">
77

8+
<com.google.android.material.button.MaterialButton
9+
android:id="@+id/settings_barcode_mode"
10+
android:layout_width="0dp"
11+
android:layout_height="0dp"
12+
android:backgroundTint="?colorPrimary"
13+
android:text="@string/settings_barcode_mode"
14+
android:textColor="?android:textColorPrimary"
15+
app:autoSizeMaxTextSize="100sp"
16+
app:autoSizeMinTextSize="12sp"
17+
app:autoSizeStepGranularity="2sp"
18+
app:autoSizeTextType="uniform"
19+
app:cornerRadius="13dp"
20+
app:layout_constraintBottom_toTopOf="@id/h_guide9"
21+
app:layout_constraintEnd_toStartOf="@+id/v_guide2"
22+
app:layout_constraintStart_toStartOf="@+id/v_guide1"
23+
app:layout_constraintTop_toTopOf="@id/h_guide" />
24+
825
<include
926
android:id="@+id/voice_activation_lo"
1027
layout="@layout/voice_activation_button" />
@@ -48,28 +65,42 @@
4865
android:layout_width="wrap_content"
4966
android:layout_height="wrap_content"
5067
android:orientation="horizontal"
51-
app:layout_constraintGuide_percent="0.49" />
68+
app:layout_constraintGuide_percent="0.30" />
5269

5370
<androidx.constraintlayout.widget.Guideline
5471
android:id="@+id/h_guide2"
5572
android:layout_width="wrap_content"
5673
android:layout_height="wrap_content"
5774
android:orientation="horizontal"
58-
app:layout_constraintGuide_percent="0.63" />
75+
app:layout_constraintGuide_percent=".45" />
5976

6077
<androidx.constraintlayout.widget.Guideline
6178
android:id="@+id/h_guide3"
6279
android:layout_width="wrap_content"
6380
android:layout_height="wrap_content"
6481
android:orientation="horizontal"
65-
app:layout_constraintGuide_percent="0.7" />
82+
app:layout_constraintGuide_percent="0.50" />
6683

6784
<androidx.constraintlayout.widget.Guideline
6885
android:id="@+id/h_guide4"
6986
android:layout_width="wrap_content"
7087
android:layout_height="wrap_content"
7188
android:orientation="horizontal"
72-
app:layout_constraintGuide_percent="0.84" />
89+
app:layout_constraintGuide_percent=".65" />
90+
91+
<androidx.constraintlayout.widget.Guideline
92+
android:id="@+id/h_guide"
93+
android:layout_width="wrap_content"
94+
android:layout_height="wrap_content"
95+
android:orientation="horizontal"
96+
app:layout_constraintGuide_percent=".7" />
97+
98+
<androidx.constraintlayout.widget.Guideline
99+
android:id="@+id/h_guide9"
100+
android:layout_width="wrap_content"
101+
android:layout_height="wrap_content"
102+
android:orientation="horizontal"
103+
app:layout_constraintGuide_percent=".85" />
73104

74105
<androidx.constraintlayout.widget.Guideline
75106
android:id="@+id/h_guide6"

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,5 +145,9 @@
145145
<item>Helles Design</item>
146146
<item>Dunkeles Design</item>
147147
</string-array>
148-
148+
<string name="settings_barcode_mode">Barcode Scanner</string>
149+
<string-array name="barcode_mode_options">
150+
<item>Barcode Scanner An</item>
151+
<item>Barcode Scanner Aus</item>
152+
</string-array>
149153
</resources>

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,4 +149,10 @@
149149
<item>Dark Theme</item>
150150
</string-array>
151151

152+
<string name="settings_barcode_mode">Barcode Service</string>
153+
<string-array name="barcode_mode_options">
154+
<item>Barcode Scanner On</item>
155+
<item>Barcode Scanner Off</item>
156+
</string-array>
157+
152158
</resources>

0 commit comments

Comments
 (0)