คำนำ
เมื่อ WeChat เป็นที่นิยมเมื่อฉันยังสามารถใช้งานได้ฉันก็ถือโทรศัพท์ของฉันในตอนกลางคืน ในเวลานั้นสิ่งที่ฉันคิดมากที่สุดคือฉันพึ่งพามันเพื่อเขย่ามากสำหรับ Shenma ในเวลานั้นฉันคิดว่า Tencent รู้สึกว่ามันเป็นการออกแบบส่วนตัวในภายหลัง สูงเกินไป หลังจากนั้นฉันต้องแก้ปัญหาการสั่นสะเทือนในโครงการเมื่อเร็ว ๆ นี้
หลักการ
หลักการพื้นฐานของการเขย่าฟังก์ชั่นคือการใช้เซ็นเซอร์เร่งความเร็วของโทรศัพท์มือถือเพื่อให้ได้ค่าที่แน่นอนเมื่อการเร่งความเร็วถึงค่าที่กำหนดเช่นการสั่นสะเทือนของโทรศัพท์มือถือและการเปลี่ยนแปลง UI ในการใช้ฟังก์ชั่นนี้ที่นี่ก่อนอื่นคุณต้องเข้าใจการใช้เซ็นเซอร์ Android
การใช้เซ็นเซอร์เซ็นเซอร์ Android
มีเซ็นเซอร์ที่หลากหลายใน Android อย่างไรก็ตามโทรศัพท์มือถือทุกเครื่องมีเซ็นเซอร์เหล่านี้ไม่ใช่เพราะเซ็นเซอร์ต้องการเงินดังนั้นโทรศัพท์มือถือราคาถูกจะเลือกเซ็นเซอร์ที่ใช้กันทั่วไปเพื่อเพิ่มและบางรุ่นระดับสูงโดยทั่วไปมีเซ็นเซอร์ส่วนใหญ่
ขั้นตอนการใช้เซ็นเซอร์
ขั้นตอนการใช้งานของเซ็นเซอร์ Android สามารถแบ่งออกเป็นสามขั้นตอน:
1. รับ SensorManager บริการการจัดการเซ็นเซอร์
2. สร้างคลาสการตรวจสอบเหตุการณ์เซ็นเซอร์ที่ต้องใช้ Android.hardware.SensoreVentListener
3. ใช้วิธีการ SensorManager.registerListener เพื่อลงทะเบียนเซ็นเซอร์ที่ระบุ
อินเทอร์เฟซเหตุการณ์เซ็นเซอร์
อินเทอร์เฟซ SensoreVentListener, OnSensorChanged () และ onaccuracyChanged () ของอินเตอร์เฟสเพื่อจัดการเหตุการณ์เซ็นเซอร์ที่เกี่ยวข้อง
อินเตอร์เฟสสาธารณะ SensoreVentListener { /** * เรียกว่าค่าเซ็นเซอร์มีการเปลี่ยนแปลง }. เป็นส่วนหนึ่งของเหตุการณ์ที่เกิดขึ้นและอาจนำมาใช้ใหม่ p> ดู {@link Android.sensorManager SensorManager} * สำหรับรายละเอียด
การใช้งาน Android Vibration
เอฟเฟกต์การสั่นสะเทือนของ Android นั้นส่วนใหญ่อาศัยบริการตัวสั่น
นำเข้า Android.App.Activity; นำเข้า Android.App.Service; นำเข้า Android.os.os.vibrator; vibrator_service); vibrator.vibrate (มิลลิวินาที);} การสั่นสะเทือนแบบคงที่ของสาธารณะ (กิจกรรมการกระทำขั้นสุดท้าย, รูปแบบยาว [], บูลีน isrepet) {vibrator ator = (vibrator) ? 1: -1);}}
ในเวลาเดียวกันคุณต้องเพิ่มสิทธิ์การสั่นสะเทือนใน AndroidManifest.xml:
<Use-Permission Android: name = "Android.permission.vibrate"/>
อธิบายพารามิเตอร์ของวิธีการสั่นสะเทือน:
1. มิลลิวินาทียาว: ความยาวของการสั่นสะเทือนหน่วยคือมิลลิวินาที
2. ยาว [] รูปแบบ: โหมดการสั่นสะเทือนแบบกำหนดเอง ความหมายของตัวเลขในอาร์เรย์คือ [ระยะเวลาคงที่ระยะเวลาการสั่นสะเทือนเวลาคงที่เวลาการสั่นสะเทือน ... ] หน่วยที่มีเวลาการสั่นสะเทือนคือมิลลิวินาที
3. ทำซ้ำ: ไม่ว่าจะการสั่นสะเทือนซ้ำ 1 ซ้ำหรือไม่, -1 เป็นเพียงการสั่นสะเทือนเพียงครั้งเดียว
เขย่าการสาธิตการสั่นสะเทือน
คุณต้องเข้าใจว่าคุณต้องใช้เซ็นเซอร์เร่งความเร็วเพื่อใช้เซ็นเซอร์เร่งความเร็ว คลาส MainActivity ถูกนำไปใช้ดังนี้:
นำเข้า Android.App.Activity; Hardware.SensoreventListener; บูลีนส่วนตัว isrefresh = false; int) {isrefresh = false; ") .create ();}} @Override void onresume () {sensorManager.registerListener (Shakelistener, SensorManager.getDefaultSor (Sensor.type_accelerometer), sensonager.Sensor_delay_fastest); onpause () {// acitivity ในพื้นหลังยกเลิกคุกและฟังคุก. UnregisterListener (Shakelistener); onsensorchnted (sensorevent) {// log (isrefresh) {return;} float []] ค่า = event.values; การเร่งความเร็วแรงโน้มถ่วงของทิศทางของแกนของแกนคือไปข้างหน้า*/ float x = math.abs (ค่า [0]); [2]); > = accelerate_value || z> = accelerate_value) {toast.maketext (mainactivity.his, "เร่งความเร็ว:" + (x> = accelerate_value? (); vibratorhelper.vibrate (mainactivity.his, 300);
แผนที่เอฟเฟกต์: