Ini kodenya:

public class Vibrate extends AppCompatActivity {
    long[] timings = {1000, 1000, 1000, 1000};
    int[] amplitudes = {0, 5, 250, 5};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_vibrate);

        Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        // Vibrate for 500 milliseconds
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            v.vibrate(VibrationEffect.createWaveform(timings, amplitudes, 0));
        } else {
            //deprecated in API 26
            v.vibrate(500);
        }
    }
}

Saya mencoba efek bentuk gelombang tetapi ketika saya menjalankannya di Galaxy S8 saya semua getarannya terasa sama. Apa yang terjadi?
Bagaimana mungkin amplitudo 5, dan amplitudo 250 menginduksi getaran yang sama?

0
forstack overflowizi 4 Juli 2020, 21:09

1 menjawab

Jawaban Terbaik

Jadi saya melakukan penggalian dan sekarang misteri itu terpecahkan,
Jika ada yang terjebak dalam masalah ini, Anda harus tahu bahwa tidak semua perangkat yang mendukung VibrationEffect (API>=26) benar-benar memiliki perangkat keras Amplitude Control.
Untuk memeriksa apakah perangkat Anda memiliki Kontrol Amplitudo, gunakan metode hasAmplitudeControl:

 Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
 Log.i("================", "This device has amplitude control: " + v.hasAmplitudeControl());
0
forstack overflowizi 4 Juli 2020, 22:42