Kata pengantar
Ketika Wechat hanya populer, ketika saya masih bisa digunakan untuk itu, saya juga memegang telepon saya di tengah malam. Pada saat itu, yang paling saya pikirkan adalah bahwa saya mengandalkannya untuk mengguncang begitu banyak untuk Shenma. terlalu tinggi. Setelah banyak, saya perlu menyelesaikan masalah getaran dalam proyek baru -baru ini.
prinsip
Prinsip dasar mengguncang fungsi adalah menggunakan sensor akselerasi ponsel untuk mencapai nilai tertentu ketika akselerasi mencapai nilai tertentu, seperti getaran ponsel dan perubahan UI. Untuk mengimplementasikan fungsi ini di sini, pertama -tama, Anda perlu memahami penggunaan sensor android.
Penggunaan Sensor Sensor Android
Ada berbagai sensor di Android. Namun, tidak semua ponsel memiliki sensor ini, karena sensor membutuhkan uang, jadi ponsel murah akan memilih sensor yang umum digunakan untuk ditambahkan, dan beberapa model tinggi pada dasarnya memiliki sebagian besar sensor.
Sensor Gunakan langkah -langkah
Langkah -langkah penggunaan sensor android dapat dibagi secara kasar menjadi tiga langkah:
1. Dapatkan Sensor Manajemen Layanan SensorManager.
2. Buat kelas pemantauan acara sensor yang harus mengimplementasikan antarmuka android.hardware.sensoreventListener.
3. Gunakan Metode SensormAnager.RegisterListener untuk mendaftarkan sensor yang ditentukan.
Antarmuka acara sensor
Antarmuka SensorEventListener, oncensorchanged () dan onaccuracychanged () dari antarmuka untuk menangani peristiwa sensor yang sesuai.
SensoreventListener { /** * dipanggil ketika nilai sensor telah berubah. }. menjadi bagian dari interung dan dapat digunakan kembali p> lihat {@link android.sensormanager Sensormanager} * untuk detailnya.
Implementasi Getaran Android
Efek getaran android terutama diandalkan pada layanan vibrator.
Impor android.Activity; Vibrator_service); ? 1: -1);}}
Pada saat yang sama, Anda perlu menambahkan izin getaran ke androidmanifest.xml:
<Use-intimison android: name = "android.permission.vibrate"/>
Jelaskan parameter metode bergetar:
1. Panjang milidetik: Panjang getaran, unit ini milidetik.
2. Panjang [] Panjang: Mode getaran khusus. Arti dari angka -angka dalam array adalah [durasi statis, durasi getaran, waktu statis, waktu getaran, ...]. Unit dengan waktu getaran adalah milidetik.
3. Ulangi: Apakah akan mengulangi getaran, 1 diulang, -1 hanya getaran sekali.
Kocok realisasi demo getaran
Nah, Anda perlu memahami bahwa Anda perlu menggunakan sensor akselerasi untuk menggunakan sensor akselerasi. Kelas MainActivity diimplementasikan sebagai berikut:
Impor.App.Active. Hardware.sensoreventListener; Private boolean isrefresh = false; Int yang) {isRefresh = false; ") .create ();}} @Override Protected void onResume () {SensormAnager.RegisterListener (Shakelistener, Sensormanager.getDefaultSor (Sensor.Type_accelerometer), s ensonager.sensor_delay_fastest); super.onResumume), s ensonager.sensor_delay_fastest); super.onResumume); OnPause () {// akitivitas di latar belakang, batalkan penjara dan mendengarkan penjara .unregisterListener (shakelistener); Onsensorchnted (SensorEvent) {// log. (isRefresh) {return;} float []] values = event.values; /*** Secara umum, akselerasi gravitasi dalam tiga arah ini mencapai 20 dan mencapai keadaan gravitasi ke arah sumbu poros. Akselerasi gravitasi dari sumbu sumbu adalah ke depan*/ float x = math.abs (nilai [0]); [2]); > = Accelerate_Value || Z> = Accelerate_Value) {Toast.makeText (MainActivity.ini, "Accelerate:" + (x> = Accelerate_Value? X: y> = show e_value? ();
Efek Peta: