Have done a small project, which realized the shaking of the function and scraping a scraping function and playing background music, etc.
Shake-shake function is mainly used for acceleration sensor :sensor.type_accelerometer
shake a shake function The main is to monitor the mobile phone acceleration changes, when the setting of a certain value, that is, trigger event .
/** * FileName:MainActivity.java * @desc This class is used to display a shake-shake interface * @author HTP * @Date 20140311 * @version 1.00 */public class M Ainactivity extends Activity implements Onclicklistener {private tabhost tabhost;private Musicnamedao dao;//Private Imag Ebutton bt_setmusic;//Sound Private MediaPlayer mediaplayer;//show Shake a shake appears private TextView tv;//content to be displayed on TV private String msentence;//through the class sentence can get a shake to display the content of private sentence sentence;//display label "Scrape" private TextView tv_rubbler;// Gravity Sensor Manager Private Sensormanager sensormanager;//Vibration Control Private Vibrator vibrator;//label private static final String tag = "Mainac Tivity ";p rivate static final int sensor_shake = 10;//private Intent musicintent = new Intent (" Com.angel.Android.MUSIC "); * * Called when the activity is first created. */@Overridepublic void onCreate (Bundle savedinstancestate) {super.oncreate (savedinstancestate); Setcontentview ( R.layout.activity_main);d ao = new Musicnamedao (this); Uri Musicuri = Uri.parse ("android.resource://com.example.romance/raw/" + Dao.getnamE ()); MediaPlayer = Mediaplayer.create (this, Musicuri);//toast.maketext (Mainactivity.this, Musicuri.tostring (), 1). Show (); Mediaplayer.start ();//Play Music mediaplayer.setlooping (TRUE);//set Loop DAO = new Musicnamedao (this);//StartService ( musicintent); Tv_rubbler = (TextView) Findviewbyid (R.id.tv_rubber); Tv_rubbler.setonclicklistener (this);//Bt_ Setmusic.setonclicklistener (this); sentence = new sentence ();//Uri Musicuri = Uri.parse ("/sdcard/ttpod/song/Rainbow. mp3") ///Get the music path under res/raw/TV = (TextView) Findviewbyid (r.id.tv_text);//Associate the TextView space to display Sensormanager = (Sensormanager) Getsystemservice (sensor_service); vibrator = (Vibrator) getsystemservice (Vibrator_service);} @Overrideprotected void Onresume () {super.onresume (); if (Sensormanager! = null) {// Register Listener Sensormanager.registerlistener (Sensoreventlistener,sensormanager.getdefaultsensor (Sensor.TYPE_ ACCELEROMETER), sensormanager.sensor_delay_normal);//The first parameter is listener, the second parameter is the resulting sensor type, and the third parameter value gets the frequency of the sensor information}}@ overrideprotected void OnPause () {super.onpause (); if (SenSormanager! = null) {//Cancel listener Sensormanager.unregisterlistener (Sensoreventlistener);}} /** * Gravity Sensing monitor */private sensoreventlistener Sensoreventlistener = new Sensoreventlistener () {@Overridepublic void onsensor Changed (Sensorevent event) {//The sensor information is changed when the method is executed float[] values = event.values;float x = values[0];//x-axis direction of gravity, right is positive float y = VALUES[1]; The gravitational acceleration of the y-axis, forward is positive float z = values[2]; The gravitational acceleration of the z-axis, upward is positive log.i (TAG, "x-axis of gravity" + x + ", y-axis direction of the gravitational acceleration" + y + "; z-axis direction of the acceleration of gravity" + Z);//generally in these three directions the acceleration of gravity reached 40 to shake the phone state. int medumvalue = 18;if (Math.Abs (x) > Medumvalue && math.abs (y) > medumvalue| | Math.Abs (y) > Medumvalue && math.abs (z) > medumvalue| | Math.Abs (x) > Medumvalue && math.abs (z) > Medumvalue) {vibrator.vibrate (200); Message msg = new Message (); msg.what = Sensor_shake;handler.sendmessage (msg);}} @Overridepublic void onaccuracychanged (sensor sensor, int accuracy) {}};/** * action execution */handler Handler = new Handler () {@Ove rridepublic void Handlemessage (Message msg) {suPer.handlemessage (msg); switch (msg.what) {Case sensor_shake:msentence = sentence.getsentence ();//Get random sentences// Toast.maketext (Mainactivity.this, Msentence, 1). Show (); Tv.settext (msentence);//The resulting sentence is displayed on the TextView//LOG.I (TAG, " Shake detected, perform operation! "); break;}}; @Overrideprotected void OnDestroy () {//TODO auto-generated method Stubsuper.ondestroy (); Mediaplayer.stop ();//Stop Music on exit }/** * Keyboard event, when the back button is pressed to ask whether to press the exit program again *///exit time private long exittime = 0; @Overridepublic boolean onKeyDown (int keycode, Keye Vent event) {if (keycode = = keyevent.keycode_back&& event.getaction () = = Keyevent.action_down) {if ( System.currenttimemillis ()-Exittime) > {toast.maketext (Getapplicationcontext (), "Press again to exit the program", Toast.length_ Short). Show (); exittime = System.currenttimemillis ();} else {finish (); System.exit (0);} return true;} Return Super.onkeydown (KeyCode, event);} /** * Button Event listener */@Overridepublic void OnClick (View v) {//TODO auto-generated method Stubswitch (V.getid ()) {///When the button is pressed, it will switch to the scratch Scraping page case R.id.tv_rubber: {Toast. Maketext (Mainactivity.this, "scrape", 1). Show (); Intent rubblerintent = new Intent (mainactivity.this,rubbleract.class); StartActivity (rubblerintent); break;} Default:break;}}}
Android for shake-shake function