تتمثل وظيفة الهز في استخدام مستشعر تسريع الهاتف المحمول لتحديد ما إذا كان في حالة اهتزاز وأداء العمليات المقابلة.
1. ضع ملف الموسيقى تحت RES/RAW. إذا لم يكن هناك الخام ، قم بإنشاء أ
2. ملفات التصميم
<؟ Android: layout_width = "match_parent" Android: layout_height = "match_parent" أدوات: context = "com.sq.dissertation.activity.shakeActivity" Android: background = "#1d1d1d" Android: layout_centerinparent = "true" Android: src = "@mipmap/shakehideimg_man2"/> <linearlayout android: layout_width = "match_parent" Android: layout_height = "match_parent" Android: "gravity =" endroid: juision = Android: layout_width = "wall_content" Android: layout_height = "wall_content" Android: src = "@mipmap/shake_logo_up"/> <imageview android: id = "@id/hand_down" Android: layout_width = "wrap_content Android: src = "@mipmap/shake_logo_down"/> </linearlayout> </sernativelayout>
3. كود جافا
يمتد shakeActivity من الطبقة العامة التي يمتد AppCompativity التي تنفذ SensoreventListener {private ImageView ivup ؛ Private ImageView Ivdown ؛ sensormanager الخاص. هزاز هزاز خاص. مستشعر المستشعر الخاص ؛ لاعب MediaPlayer الخاص ؛ كائن خاص upanimator ؛ ObjectAnimator Downanimator ؛ Override محمية void onCreate (backdle SaveInstancestate) {super.oncreate (SaveInstancestate) ؛ setContentView (r.layout.activity_shake) ؛ ivup = ((ImageView) findViewById (r.id.hand_up)) ؛ ivdown = ((ImageView) findViewById (r.id.hand_down)) ؛ // الحصول على sensormanager = ((sensormanager) getSystemService (sensor_service)) ؛ // Instantate الهزاز الكائن للهاتف المحمول إلى الهزاز = ((Vibrator) GetSystemService (vibrator_service)) ؛ // احصل على مستشعر مستشعر التسارع = sensormanager.getDefaultSensor (sensor.type_accelerometer) ؛ /*كائن تم إنشاؤه ، المعلمات: الحد الأقصى لعدد التدفقات التي يتم تشغيلها في وقت واحد ، أي الحد الأعلى لعدد الموسيقى التي يتم تشغيلها في وقت واحد ؛ يستخدم نوع التدفقات عمومًا لاستخدام Audiomanager.stream_music للإشارة إلى جودة تحويل معدل أخذ العينات التي يمكن تكرارها ، ولكن لا يمكن أن تصدر هذه الوظيفة حتى الآن ، يوصى باستخدام 0 */// SoundPool = جديد SoundPool (1 ، Audiomanager.stream_music ، 0) ؛ // المعلمة ثلاثة ليس لها أي تأثير ، يوصى باستخدام 1 // loadId = soundpool.load (shakeActivity.This ، R.Raw.three ، 1) ؛ player = mediaPlayer.create (هذا ، R.Raw.Music) ؛ initAnimation () ؛ } private void initanimation () {// الرسوم المتحركة من الصور العلوية والسفلية upanimator = objectAnimator.offloat (ivup ، "translation" ، 0 ، -200 ، 0) ؛ upanimator.setInterPolator (New AcceleratedEcelerateInterPolator ()) ؛ upanimator.setDuration (2000) ؛ DownAnimator = ObjectAnimator.Offloat (Ivdown ، "Translation" ، 0 ، 200 ، 0) ؛ DownAnimator.setInterPolator (New AcceleratedEcelerateInterPolator ()) ؛ DownAnimator.setDuration (2000) ؛ } Override محمية void onresume () {super.onresume () ؛ if (sensormanager! = null) {// register ، شاشة ، مستشعر ، الحصول على تواتر المستشعر sensormanager.registerListener (هذا ، sensormanager.sensor_delay_normal) ؛ }} override محمية void onpause () {super.onpause () ؛ if (sensormanager! = null) {// إلغاء المستمع sensormanager.unregisterListener (هذا) ؛ // إصدار مورد الصوت // soundpool.unload (loadId) ؛ }} override void ondestroy () {super.ondestroy () ؛ player.Release () ؛ } Override public void onSensorChanged (حدث Sensorevent) {// الحصول على البيانات عندما تتغير معلومات المستشعر Float [] القيم = event.values ؛ // تسريع الحبيبات في اتجاه المحور السيني ، تعويم إيجابي إلى x = القيم اليمنى [0] ؛ // تسريع الجاذبية في اتجاه المحور y هو تعويم إيجابي y = القيم [1] ؛ // تسارع الجاذبية في اتجاه المحور z هو عطف إيجابي z = القيم [2] ؛ // يصل تسارع الجاذبية العامة في هذه الاتجاهات الثلاثة إلى 40 ويصل إلى حالة هز القيمة Int Phone = 18 ؛ if (math.abs (x)> value || math.abs (y)> value || math.abs (z)> 19) {long patter [] = {200 ، 1000} ؛ هزاز. upanimator.start () ؛ downanimator.start () ؛ ! if (player.isplaying ()) {player.seekto (0) ؛ } آخر {player.start () ؛ }}} Override public void onAccuracyChanged (مستشعر المستشعر ، دقة int)الملحق: يظهر SoundPool في كود Java لتشغيل المؤثرات الصوتية. إنه مناسب لتشغيل المؤثرات الصوتية القصيرة. يمكن أن تنطبق فقط على مساحة الذاكرة 1M كحد أقصى. بعض الملفات ليست كبيرة في حد ذاتها ، لكنها ستكون كبيرة بعد فك التشفير ، لذلك بشكل عام ، لا يتم تشغيلها مع ملفات الأغاني.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.