Skip to content

Commit 0a6b7b5

Browse files
authored
Merge pull request #11 from cacaoMath/develop
update : シースルーと音声のオンオフができるように設定に処理を追加
2 parents 877b4f6 + 9c82840 commit 0a6b7b5

9 files changed

Lines changed: 95 additions & 44 deletions

File tree

‎.idea/deploymentTargetDropDown.xml‎

Lines changed: 0 additions & 17 deletions
This file was deleted.

‎.idea/misc.xml‎

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎app/build.gradle‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ dependencies {
5252
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
5353
implementation "androidx.core:core-ktx:1.6.0"
5454

55+
implementation "androidx.preference:preference-ktx:1.1.1"
56+
5557
//cameraX
5658
def camerax_version ="1.0.2"
5759
// CameraX core library using camera2 implementation

‎app/src/main/java/com/example/place/MetaData.kt‎

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ class MetaData : Application() {
1212
//firebaseに送るデータのリスト
1313
var dataList : MutableList<HashMap<String, Any?>> = arrayListOf()
1414

15-
//時間は分数で表す.
16-
var measurementTime = 10
17-
1815

1916
//グローバルに変数を保存する用
2017
companion object {

‎app/src/main/java/com/example/place/activity/ConfigActivity.kt‎

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,26 @@ package com.example.place.activity
22

33
import android.content.Intent
44
import android.os.Bundle
5+
import androidx.preference.PreferenceManager
56
import android.text.TextUtils
67
import android.util.Log
78
import android.view.View
89
import android.widget.Button
910
import android.widget.EditText
1011
import android.widget.Toast
1112
import androidx.appcompat.app.AppCompatActivity
12-
import com.example.place.MetaData.Companion.getInstance
1313
import com.example.place.databinding.ActivityConfigBinding
14+
import com.google.android.material.switchmaterial.SwitchMaterial
1415
import com.google.firebase.auth.FirebaseAuth
1516

1617
open class ConfigActivity : AppCompatActivity() {
1718
private lateinit var binding: ActivityConfigBinding
1819
private lateinit var configSaveBtn: Button
1920
private lateinit var signOutBtn: Button
2021
private lateinit var measurementTimeEt: EditText
21-
private val metaData = getInstance()
22-
22+
private lateinit var seeThrowSwitch: SwitchMaterial
23+
private lateinit var voiceSwitch: SwitchMaterial
24+
2325
override fun onCreate(savedInstanceState: Bundle?) {
2426
super.onCreate(savedInstanceState)
2527
binding = ActivityConfigBinding.inflate(layoutInflater)
@@ -29,7 +31,14 @@ open class ConfigActivity : AppCompatActivity() {
2931
configSaveBtn = binding.configSaveBtn
3032
signOutBtn = binding.signoutBtn
3133
measurementTimeEt = binding.measurementTimeEt
32-
measurementTimeEt.setText(metaData.measurementTime.toString())
34+
seeThrowSwitch = binding.seeThrowSwitch
35+
voiceSwitch = binding.voiceSwitch
36+
37+
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
38+
seeThrowSwitch.isChecked = sharedPreferences.getBoolean("seeThrow",false)
39+
voiceSwitch.isChecked = sharedPreferences.getBoolean("voiceMode",false)
40+
41+
measurementTimeEt.setText(sharedPreferences.getInt("measurementTime",10).toString())
3342
configSaveBtn.setOnClickListener(View.OnClickListener {
3443
val inputTxt = measurementTimeEt.text.toString()
3544
when {
@@ -41,10 +50,10 @@ open class ConfigActivity : AppCompatActivity() {
4150
Log.i(TAG,"計測時間は数値だけを入れてください")
4251
}
4352
TextUtils.isEmpty(inputTxt) -> {
44-
metaData.measurementTime = 10
53+
sharedPreferences.edit().putInt("measurementTime", 10).apply()
4554
}
4655
else -> {
47-
metaData.measurementTime = inputTxt.toInt()
56+
sharedPreferences.edit().putInt("measurementTime", inputTxt.toInt()).apply()
4857
}
4958
}
5059
Log.d(TAG, "Saved!!")
@@ -56,9 +65,18 @@ open class ConfigActivity : AppCompatActivity() {
5665
startActivity(titleIntent)
5766
finish()
5867
})
68+
69+
seeThrowSwitch.setOnCheckedChangeListener { _, isChecked ->
70+
sharedPreferences.edit().putBoolean("seeThrow", isChecked).apply()
71+
}
72+
73+
voiceSwitch.setOnCheckedChangeListener { _, isChecked ->
74+
sharedPreferences.edit().putBoolean("voiceMode", isChecked).apply()
75+
}
76+
5977
}
6078

6179
companion object {
62-
protected val TAG = ConfigActivity::class.java.simpleName
80+
private var TAG = ConfigActivity::class.java.simpleName
6381
}
6482
}

‎app/src/main/java/com/example/place/activity/MainActivity.kt‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import android.widget.Toast
1010
import androidx.appcompat.app.AlertDialog
1111
import androidx.appcompat.app.AppCompatActivity
1212
import androidx.core.app.AlarmManagerCompat
13+
import androidx.preference.PreferenceManager
1314
import com.example.place.MetaData.Companion.getInstance
1415
import com.example.place.R
1516
import com.example.place.databinding.ActivityMainBinding
@@ -24,6 +25,7 @@ class MainActivity : AppCompatActivity() {
2425
private lateinit var binding: ActivityMainBinding
2526
private var alertDialog: AlertDialog? = null
2627
var metaData = getInstance()
28+
private var measurementTime:Int = 0
2729

2830
override fun onCreate(savedInstanceState: Bundle?) {
2931
super.onCreate(savedInstanceState)
@@ -41,6 +43,8 @@ class MainActivity : AppCompatActivity() {
4143
val startBtn = binding.startBtn
4244
val metaBtn = binding.metaBtn
4345

46+
measurementTime = PreferenceManager.getDefaultSharedPreferences(this).getInt("measurementTime",10)
47+
4448

4549
startBtn.setOnClickListener { //問題画面へ遷移
4650
//メタデータを選択しないと遷移しないようにする
@@ -75,7 +79,7 @@ class MainActivity : AppCompatActivity() {
7579
// Calendarを使って現在の時間をミリ秒で取得
7680
calendar.timeInMillis = System.currentTimeMillis()
7781
// metadataに保存されている分数後に設定
78-
calendar.add(Calendar.SECOND, metaData.measurementTime * 60)
82+
calendar.add(Calendar.SECOND, measurementTime * 60)
7983

8084
//時間精度デバック用
8185
val df: DateFormat = SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS")
@@ -94,7 +98,7 @@ class MainActivity : AppCompatActivity() {
9498
AlarmManagerCompat.setExact(am, AlarmManager.RTC_WAKEUP, calendar.timeInMillis, pending)
9599
Toast.makeText(
96100
applicationContext,
97-
"${metaData.measurementTime}分の計測を始めます.", Toast.LENGTH_SHORT
101+
"${measurementTime}分の計測を始めます.", Toast.LENGTH_SHORT
98102
).show()
99103
}
100104

‎app/src/main/java/com/example/place/activity/QuestionActivity.java‎

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import androidx.core.content.ContextCompat;
3131
import androidx.fragment.app.DialogFragment;
3232
import androidx.lifecycle.LifecycleOwner;
33+
import androidx.preference.PreferenceManager;
3334

3435
import com.example.place.DataTransferKt;
3536
import com.example.place.MetaData;
@@ -85,6 +86,7 @@ public class QuestionActivity extends AppCompatActivity implements TextToSpeech.
8586
//音声再生
8687
private TextToSpeech ttsJp;
8788
private TextToSpeech ttsEn;
89+
private Boolean isVoiceMode;
8890

8991
//シースルー用
9092
private ExecutorService cameraExecutor;
@@ -127,9 +129,21 @@ protected void onCreate(Bundle savedInstanceState) {
127129
ansBtn3 = binding.ansBtn3;
128130
ansBtn4 = binding.ansBtn4;
129131

132+
cameraView = binding.viewFinder;
133+
130134
// showNextQuiz(); //第1問目表示用
131135
sensing.start(""); //計測開始
132136

137+
//シースルーにするかどうか
138+
if(PreferenceManager.getDefaultSharedPreferences(this).getBoolean("seeThrow",false)) {
139+
launchSeeThrow();
140+
}else{
141+
cameraView.setVisibility(View.INVISIBLE);
142+
}
143+
isVoiceMode = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("voiceMode",false);
144+
}
145+
146+
private void launchSeeThrow(){
133147
if(allPermissionsGranted()){
134148
startCamera(this);
135149
}else{
@@ -138,7 +152,6 @@ protected void onCreate(Bundle savedInstanceState) {
138152
}
139153

140154
cameraExecutor = Executors.newSingleThreadExecutor();
141-
cameraView = binding.viewFinder;
142155

143156
}
144157

@@ -195,7 +208,7 @@ public void onInit(int status) {
195208
ttsJp.setLanguage(Locale.JAPANESE);
196209
Log.i(TAG, "言語の設定完了しました.");
197210
//両言語のttsの初期化完了後に問題開始する.
198-
showNextQuiz();
211+
showNextQuiz(PreferenceManager.getDefaultSharedPreferences(this).getBoolean("voiceMode",false));
199212
}else{
200213
Log.i(TAG, "言語の設定するのに失敗しました.システムの音声出力言語設定(日本語,英語)を確認してください.");
201214
}
@@ -265,6 +278,7 @@ public void onClick(DialogInterface dialogInterface, int id) {
265278
}).show();
266279
}
267280

281+
//xmlのOnClickで使用する
268282
public void pushButton(View view){
269283
//ボタン(イベント)連打防止処理
270284
if(eventFlag) return;
@@ -328,7 +342,7 @@ public void onClick(DialogInterface dialogInterface, int i) {
328342
finish();//追加
329343
} else {
330344
count++;
331-
showNextQuiz();
345+
showNextQuiz(isVoiceMode);
332346
}
333347
}
334348
});
@@ -347,17 +361,20 @@ private void wordSpeak(TextToSpeech tts,String text){
347361
}
348362

349363
//出題する問題
350-
public void showNextQuiz(){
364+
public void showNextQuiz(Boolean isVoiceMode){
351365
//単語の読み上げ
352-
wordSpeak(ttsEn, quizSet[count][1]);
353-
wordSpeak(ttsEn, "A ");
354-
wordSpeak(ttsJp, quizSet[count][2]);
355-
wordSpeak(ttsEn, "B ");
356-
wordSpeak(ttsJp, quizSet[count][3]);
357-
wordSpeak(ttsEn, "C ");
358-
wordSpeak(ttsJp, quizSet[count][4]);
359-
wordSpeak(ttsEn, "D ");
360-
wordSpeak(ttsJp, quizSet[count][5]);
366+
if(isVoiceMode){
367+
wordSpeak(ttsEn, quizSet[count][1]);
368+
wordSpeak(ttsEn, "A ");
369+
wordSpeak(ttsJp, quizSet[count][2]);
370+
wordSpeak(ttsEn, "B ");
371+
wordSpeak(ttsJp, quizSet[count][3]);
372+
wordSpeak(ttsEn, "C ");
373+
wordSpeak(ttsJp, quizSet[count][4]);
374+
wordSpeak(ttsEn, "D ");
375+
wordSpeak(ttsJp, quizSet[count][5]);
376+
}
377+
361378

362379
questionView.setText(quizSet[count][1]);
363380
if(quizSet[count][1].length() > 14){

‎app/src/main/res/layout/activity_config.xml‎

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@
4040
app:layout_constraintEnd_toEndOf="parent"
4141
app:layout_constraintHorizontal_bias="0.5"
4242
app:layout_constraintStart_toEndOf="@+id/signoutBtn"
43-
app:layout_constraintTop_toBottomOf="@+id/measurementTimeEt" />
43+
app:layout_constraintTop_toBottomOf="@+id/measurementTimeEt"
44+
app:layout_constraintVertical_bias="0.674" />
4445

4546
<Button
4647
android:id="@+id/signoutBtn"
@@ -52,7 +53,8 @@
5253
app:layout_constraintEnd_toStartOf="@+id/config_save_btn"
5354
app:layout_constraintHorizontal_bias="0.5"
5455
app:layout_constraintStart_toStartOf="parent"
55-
app:layout_constraintTop_toBottomOf="@+id/measurementTimeEt" />
56+
app:layout_constraintTop_toBottomOf="@+id/measurementTimeEt"
57+
app:layout_constraintVertical_bias="0.674" />
5658

5759
<EditText
5860
android:id="@+id/measurementTimeEt"
@@ -67,5 +69,30 @@
6769
app:layout_constraintStart_toStartOf="parent"
6870
app:layout_constraintTop_toBottomOf="@+id/textView5" />
6971

72+
<com.google.android.material.switchmaterial.SwitchMaterial
73+
android:id="@+id/seeThrowSwitch"
74+
android:layout_width="200dp"
75+
android:layout_height="48dp"
76+
android:layout_marginTop="44dp"
77+
android:text="@string/see_throw_switch"
78+
app:layout_constraintEnd_toEndOf="parent"
79+
app:layout_constraintHorizontal_bias="0.498"
80+
app:layout_constraintStart_toStartOf="parent"
81+
app:layout_constraintTop_toBottomOf="@+id/measurementTimeEt"
82+
tools:ignore="UseSwitchCompatOrMaterialXml" />
83+
84+
<com.google.android.material.switchmaterial.SwitchMaterial
85+
android:id="@+id/voiceSwitch"
86+
android:layout_width="200dp"
87+
android:layout_height="48dp"
88+
android:layout_marginTop="44dp"
89+
android:text="@string/voice_switch"
90+
app:layout_constraintBottom_toBottomOf="parent"
91+
app:layout_constraintEnd_toEndOf="parent"
92+
app:layout_constraintHorizontal_bias="0.498"
93+
app:layout_constraintStart_toStartOf="parent"
94+
app:layout_constraintTop_toBottomOf="@+id/seeThrowSwitch"
95+
app:layout_constraintVertical_bias="0.018" />
96+
7097

7198
</androidx.constraintlayout.widget.ConstraintLayout>

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
<string name="measurement_time">計測時間(分)</string>
2323
<string name="sign_out">sign out</string>
2424
<string name="please_input_number">数字を入力してください.単位は[分]です.</string>
25+
<string name="see_throw_switch">See Throw</string>
26+
<string name="voice_switch">Voice</string>
2527

2628
<!--InputNoteActivity-->
2729
<string name="tv_label">ラベルデータ</string>

0 commit comments

Comments
 (0)