teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コメントへの追記

2020/12/13 13:22

投稿

razuma
razuma

スコア1313

answer CHANGED
@@ -1,1 +1,85 @@
1
- OnSeekBarChangeListenerのonProgressChangedに返り値はないので`return num1`を削除してください
1
+ OnSeekBarChangeListenerのonProgressChangedに返り値はないので`return num1`を削除してください
2
+
3
+ ===回答を追記
4
+ 引数にnum1があったんですね、見落としていました。ちょっとだけやりたいことがわかった気もします。
5
+ 「startボタンを押した瞬間にバイブレーションが実行されるようにしたいです。」
6
+ とのことなので、単純にメンバ変数に持っておいてその値を使ってみてはどうでしょうか。
7
+ ```
8
+ class MainActivity : AppCompatActivity() {
9
+
10
+ // ここで持っておく
11
+ private var gTime: Long = 1
12
+ private var gHz: Int = 1
13
+
14
+ override fun onCreate(savedInstanceState: Bundle?) {
15
+ super.onCreate(savedInstanceState)
16
+ setContentView(R.layout.activity_main)
17
+ setupSeekBart()
18
+ setupSeekBarh()
19
+
20
+ // ボタンが押されたときの処理
21
+ button.setOnClickListener {
22
+ val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
23
+ val vibrationEffect = VibrationEffect.createOneShot(gTime, gHz)
24
+ vibrator.vibrate(vibrationEffect)
25
+ }
26
+ }
27
+
28
+ private fun setupSeekBart()
29
+ {
30
+ seekbartime.progress = 0
31
+ seekbartime.max = 50
32
+ seekbartime.setOnSeekBarChangeListener(
33
+ object : SeekBar.OnSeekBarChangeListener {
34
+ override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
35
+ val strt = String.format(Locale.US, "%d", progress)
36
+ timedown.setText(strt)
37
+ gTime = strt.toLong()
38
+ }
39
+
40
+ override fun onStartTrackingTouch(seekBar: SeekBar) {
41
+ }
42
+
43
+ override fun onStopTrackingTouch(seekBar: SeekBar) {
44
+ }
45
+ })
46
+ }
47
+
48
+ private fun setupSeekBarh()
49
+ {
50
+ seekbarhz.progress = 0
51
+ seekbarhz.max = 50
52
+ seekbarhz.setOnSeekBarChangeListener(
53
+ object : SeekBar.OnSeekBarChangeListener {
54
+ override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
55
+ val strh = String.format(Locale.US, "%d", progress)
56
+ hzdown.setText(strh)
57
+ gHz = strh.toInt()
58
+ }
59
+
60
+ override fun onStartTrackingTouch(seekBar: SeekBar) {
61
+ }
62
+
63
+ override fun onStopTrackingTouch(seekBar: SeekBar) {
64
+ }
65
+ })
66
+ }
67
+ }
68
+ ```
69
+
70
+
71
+ またはスタートボタンが押されたときに現在のプログレスの値を取ってきてその値を使うこともできるかと思います。そうすれば特に変数など用意する必要はありません。
72
+ ```
73
+ // ボタンが押されたときの処理
74
+ button.setOnClickListener {
75
+ val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
76
+
77
+ val setTime = seekbartime.progress.toLong()
78
+ val setHz = seekbarhz.progress
79
+
80
+ val vibrationEffect = VibrationEffect.createOneShot(setTime, setHz)
81
+ vibrator.vibrate(vibrationEffect)
82
+ }
83
+ ```
84
+
85
+ 以上、よろしくお願いいたします。