Skip to content

Commit 664f231

Browse files
committed
Apply Spotless
1 parent dbea253 commit 664f231

File tree

1 file changed

+47
-63
lines changed

1 file changed

+47
-63
lines changed

misc/src/main/java/com/example/snippets/ui/haptics/CustomVibrationCompositions.kt

Lines changed: 47 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -24,75 +24,59 @@ import android.os.Vibrator
2424
import androidx.annotation.RequiresApi
2525
import androidx.annotation.RequiresPermission
2626

27-
@RequiresApi(api = Build.VERSION_CODES.M)
28-
class CustomVibrationPatternsJava : Activity() {
29-
val vibrator = applicationContext.getSystemService(Vibrator::class.java) as Vibrator
27+
@RequiresApi(api = Build.VERSION_CODES.S)
28+
class CustomVibrationCompositions : Activity() {
29+
var vibrator: Vibrator = getApplicationContext().getSystemService(Vibrator::class.java)
3030

31-
// [START android_ui_haptics_ramp_up]
32-
@RequiresApi(Build.VERSION_CODES.O)
33-
@RequiresPermission(Manifest.permission.VIBRATE)
34-
fun rampUpPattern() {
35-
val timings = longArrayOf(
36-
50, 50, 50, 50, 50, 100, 350, 25, 25, 25, 25, 200
37-
)
38-
val amplitudes = intArrayOf(
39-
33, 51, 75, 113, 170, 255, 0, 38, 62, 100, 160, 255
40-
)
41-
val repeatIndex = -1 // Don't repeat.
42-
43-
vibrator.vibrate(
44-
VibrationEffect.createWaveform(
45-
timings, amplitudes, repeatIndex
31+
@RequiresPermission(Manifest.permission.VIBRATE)
32+
// [START android_ui_haptics_composed_vibration_effect]
33+
fun createComposedVibrationEffect() {
34+
vibrator.vibrate(
35+
VibrationEffect.startComposition()
36+
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_SLOW_RISE)
37+
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK)
38+
.compose()
4639
)
47-
)
48-
}
49-
// [END android_ui_haptics_ramp_up]
50-
51-
@RequiresApi(api = Build.VERSION_CODES.O)
52-
@RequiresPermission(Manifest.permission.VIBRATE)
53-
// [START android_ui_haptics_repeat]
54-
fun startVibrating() {
55-
val timings = longArrayOf(50, 50, 100, 50, 50)
56-
val amplitudes = intArrayOf(64, 128, 255, 128, 64)
57-
val repeat = 1 // Repeat from the second entry, index = 1.
58-
val repeatingEffect = VibrationEffect.createWaveform(
59-
timings, amplitudes, repeat
60-
)
61-
// repeatingEffect can be used in multiple places.
62-
63-
vibrator.vibrate(repeatingEffect)
64-
}
65-
66-
// [START_EXCLUDE]
67-
@RequiresPermission(Manifest.permission.VIBRATE)
68-
// [END_EXCLUDE]
69-
fun stopVibrating() {
70-
vibrator.cancel()
71-
}
72-
// [END android_ui_haptics_repeat]
73-
74-
// [START android_ui_haptics_fallback]
75-
@RequiresApi(api = Build.VERSION_CODES.O)
76-
@RequiresPermission(Manifest.permission.VIBRATE)
77-
fun patternWithFallback() {
78-
val smoothTimings = longArrayOf(50, 50, 100, 50, 50)
79-
val onOffTimings = longArrayOf(50, 100)
80-
val amplitudes = intArrayOf(64, 128, 255, 128, 64)
81-
val repeatIndex = -1 // Don't repeat.
40+
}
41+
// [END android_ui_haptics_composed_vibration_effect]
8242

83-
if (vibrator.hasAmplitudeControl()) {
43+
@RequiresPermission(Manifest.permission.VIBRATE)
44+
// [START android_ui_haptics_gap_between_primitives]
45+
fun gapBetweenPrimitives() {
46+
val delayMs: Int = 100
8447
vibrator.vibrate(
85-
VibrationEffect.createWaveform(
86-
smoothTimings, amplitudes, repeatIndex
87-
)
48+
VibrationEffect.startComposition()
49+
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_SPIN, 0.8f)
50+
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_SPIN, 0.6f)
51+
.addPrimitive(
52+
VibrationEffect.Composition.PRIMITIVE_THUD, 1.0f, delayMs
53+
)
54+
.compose()
8855
)
89-
} else {
90-
vibrator.vibrate(
91-
VibrationEffect.createWaveform(
92-
onOffTimings, repeatIndex
56+
}
57+
// [END android_ui_haptics_gap_between_primitives]
58+
59+
@RequiresPermission(Manifest.permission.VIBRATE)
60+
private fun checkPrimitivesSupport() {
61+
// [START android_ui_haptics_check_single_primitive_support]
62+
val primitive: Int = VibrationEffect.Composition.PRIMITIVE_LOW_TICK
63+
64+
if (vibrator.areAllPrimitivesSupported(primitive)) {
65+
vibrator.vibrate(
66+
VibrationEffect.startComposition()
67+
.addPrimitive(primitive).compose()
9368
)
69+
} else {
70+
// Play a predefined effect or custom pattern as a fallback.
71+
}
72+
// [END android_ui_haptics_check_single_primitive_support]
73+
74+
// [START android_ui_haptics_check_multiple_primitives_support]
75+
val supported: BooleanArray = vibrator.arePrimitivesSupported(
76+
VibrationEffect.Composition.PRIMITIVE_LOW_TICK,
77+
VibrationEffect.Composition.PRIMITIVE_TICK,
78+
VibrationEffect.Composition.PRIMITIVE_CLICK
9479
)
80+
// [END android_ui_haptics_check_multiple_primitives_support]
9581
}
9682
}
97-
// [END android_ui_haptics_fallback]
98-
}

0 commit comments

Comments
 (0)