Die Shake -Funktion besteht darin, den Mobiltelefonbeschleunigungssensor zu verwenden, um festzustellen, ob es sich in einem Shake -Status befindet und entsprechende Vorgänge ausführt.
1. Setzen Sie die Musikdatei unter res/raw. Wenn es keinen Raw gibt, erstellen Sie a
2. Layoutdateien
<? Android: layout_width = "match_parent" Android: layout_height = "match_parent" Tools: context = "com.sq.dissertation Android: layout_centerinParent = "true" Android: src = "@mipmap/shakeHideImg_Man2"/> <linearlayout Android: layout_width = "match_parent" android: layout_height = "match_parent" android: gravity = "center" android: orientation = "vertical" Android: id = "@+id/hand_up" Android: layout_width = "Wrap_Content" Android: layout_Height = "Wrap_Content" Android: src = "@mipmap/shake_logo_up"/<imageView android: id = "@+id/Handy_down" android: layout_width = "wrack"@+id/handdown "android: layout" android: layout_width = "wrack"@+id/handdown "android: layout" und layout "und layout" und layout "und layout_width ="@+@+handdown "android" android: layout_width = "wrack ="@+Hand_down "android: layout" und layout "und layout" ush/Handy_down. Android: layout_Height = "Wrap_Content" Android: src = "@mipmap/shake_logo_down"/> </linearlayout> </relATivalout>
3. Java -Code
öffentliche Klasse Shakeactivity erweitert AppCompataktivität implementiert SensorEventListener {private ImageView IVUp; private ImageView IVdown; private sensormanager sensormanager; privater Vibrator Vibrator; privater Sensorsensor; privater Medienplayer -Spieler; privates Objektanimator Upanimator; privates Objektanimator Downanimator; @Override Protected void OnCreate (Bündel SavedInstancestate) {Super.oncreate (SavedInstancestate); setContentView (r.layout.Activity_shake); IVUp = ((ImageView) findViewById (r.id.hand_up)); ivdown = ((ImageView) findViewById (r.id.hand_down)); // sensorManager = ((sensorManager) getSystemService (Sensor_Service)); // den Objektvibrator des Mobiltelefons an Vibrator = ((Vibrator) getSystemService (Vibrator_Service) instanziieren); // Acceleration Sensor Sensor = sensorManager.getDefaultSensor (Sensor.Type_accelerometer) erhalten; /*Instanziiertes Objekt, Parameter: Die maximale Anzahl der gleichzeitig gespielten Streams, dh die obere Grenze der gleichzeitigen Musikzahl; Die Art von Streams wird im Allgemeinen zur Verwendung von Audiomanager verwendet. // Parameter Drei hat keinen Einfluss. Es wird empfohlen, 1 // loadId = Soundpool.load (ShakeActivity.Dis, R.Raw.Three, 1); Player = MediaPlayer.create (this, R.Raw.Music); initanimation (); } private void initanimation () {// Animation der oberen und unteren zwei Bilder upanimator = objektanimator.offloat (ivup, "translationy", 0, -200, 0); upanimator.setInterpolator (neuer beschleunigterdecelerateInterpolator ()); Upanimator.SetDuration (2000); Downanimator = Objektanimator.offloat (ivdown, "translationy", 0, 200, 0); Downanimator.SetInterpolator (neuer beschleunigterdezelerateInterpolator ()); Downanimator.SetDuration (2000); } @Override protected void onResume () {Super.onResume (); if (sensorManager! }} @Override protected void onPause () {Super.onpause (); if (sensorManager! // Audio -Ressource veröffentlichen // Soundpool.Unload (LoadID); }} @Override protected void onDestroy () {Super.onDestroy (); Player.Release (); } @Override public void OnsenSorChanged (SensorEvent Ereignis) {// Daten abrufen, wenn Sensorinformationen float [] values = event.Values; // Körnung Beschleunigung in der x-Achsenrichtung, positiver Float x = Werte [0]; // Die Schwerkraftbeschleunigung in der y-achse-Richtung ist positiv float y = Werte [1]; // Die Schwerkraftbeschleunigung in der Z-Achse-Richtung ist positiv float z = Werte [2]; // Die allgemeine Schwerkraftbeschleunigung in diesen drei Richtungen erreicht 40 und erreicht den Zustand des Schüttelns des Telefons in INT -Wert = 18; if (math.abs (x)> Wert || math.abs (y)> Wert || math.abs (z)> 19) {langes Muster [] = {200, 1000}; Vibrator.vibrieren (Muster, 1); Upanimator.start (); Downanimator.Start (); / * 1f: Linkskanal Volumen 1F: Rechte Kanal -Volumen 1: Audio -Priorität, desto höher ist der Wert, je höher die Priorität, 0: Die Anzahl der Loop -Wiedergabezeiten ist ein einmaliger Wiedergabe. if (Player.iSpleing ()) {Player.Seekto (0); } else {Player.Start (); }}} @Override public void OneAcuracyChanged (Sensorsensor, intgenau) {}}Ergänzung: Soundpool erscheint in Java Code, um Soundeffekte zu spielen. Es ist geeignet, kurze Soundeffekte zu spielen. Es kann nur maximal 1 m Speicherplatz gelten. Einige Dateien sind an sich nicht groß, aber sie werden nach dem Dekodieren groß sein, daher werden sie im Allgemeinen nicht mit Songdateien gespielt.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.