Androidƽ̨ҡҡÇи蹦ÄÜ

來源:互聯網
上載者:User

Androidƽ̨ҡҡÇи蹦ÄÜ

ǰÐÌìÓ¡尼¿Í»§ÒªÇóÔÚ¸ßͨƽ̨7251ÉϼÓÒ»¸öÒ¡Ò¡Çи蹦ÄÜ¡£²éÁËÐ×ÊÁÏ£¬»ù±¾ÊµÏÖÁ˴˹¦ÄÜ¡£


Ö±½ÓÉÏÔ´Â룬ÓÃsvn²é¿´Ð޸ĵ㡣

Ç°ÃæÁ½¸öic_mp_shake_off_btnÊÇÁ½ÕÅͼƬ£¬×ÊÔ´Ëæ±ãÈÃUI×öÁ½Õż´¿É¡£

½ÓÏÂÀ´¾ÍÊÇaudio_player.xmlÎļþµÄÐ޸ģº£¨Õâ¸ö¾ÍÊÇÄãÒª½«ÄãµÄͼ±ê°´Å¥·ÅÔÚÄĸöµØ·½£

¶ÔÓ¦µÄÐÞ¸ÄÆäËû·Ö±æÂʵIJ¼¾ÖÎļþaudio_player.xml

½ÓÏÂÀ´Ìí¼Ó¶ÔÓ¦µÄ×Ö´£ºString.xml<†·Ÿ"http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PHByZSBjbGFzcz0="brush:java;"> Ò¡Ò»Ò¡»»¸è¹¦ÄÜÒÑ¿ªÆô. Ò¡Ò»Ò¡»»¸è¹¦ÄÜÒѹرÕ.¸÷¹úÓïÑԵķÒëÒ²×Ô¼ºÈ¥Ìí¼Ó.

½ÓÏÂÀ´ÐÞ¸ÄÒôÀÖ²¥·ÅµÄÖ÷ÀࣺMediaPlaybackActivity.java

Ê×ÏÈÒªÌí¼Ó±äÁ¿£ºprivate ImageButton mShakeButton;

½ÓÏÂÀ´ÔÙͨ¹ýfindViewByIdÀ´ÊµÀý»¯Ò¡Ò¡°´Å¥²¢Ìí¼Ó¼àÌý£»

    mShakeButton = ((ImageButton) findViewById(R.id.shake));    mShakeButton.setOnClickListener(mShakeListener); 

ÔÚº¯ÊýonConfigurationChangedÒ²×öͬÑùµÄ²Ù×÷£»

    mShakeButton = ((ImageButton) findViewById(R.id.shake));    mShakeButton.setOnClickListener(mShakeListener); 
ÏÖÔÚ¾ÍÀ´ÊµÏÖ¼àÌýµÄº¯Êý£»

    private View.OnClickListener mShakeListener = new View.OnClickListener() {        public void onClick(View v) {            shakeEnable();        }    };

дshakeEnable()º¯ÊýµÄº¯ÊýÌ壻

    private void shakeEnable(){if (mService == null) {return;}try {if (mService.getShakeFlag()== false){mService.setShakeFlag(true);showToast(R.string.shake_on_notif);}else{mService.setShakeFlag(false);showToast(R.string.shake_off_notif);}setShakeButtonImage();}catch (RemoteException ex) {        }    }

ÔÚServiceConnectionÀïÐ޸İ´Å¥µÄ¿É²Ù×÷ºÍÉèÖÃͼƬ£»

дsetShakeButtonImage º¯Êý£º

   private void setShakeButtonImage() {        if (mService == null) return;          try {if  (mService.getShakeFlag() == false) {mShakeButton.setImageResource(R.drawable.ic_mp_shake_off_btn);}else{mShakeButton.setImageResource(R.drawable.ic_mp_shake_on_btn);}   }catch (RemoteException ex) {        }    }

MediaPlaybackActivity.javaÕâ¸öÎļþÐ޸ĺÃÁË£»


½ÓÏÂÀ´¿´¿´MediaPlaybackService.java

ÏÈimport onShakeListener

import com.android.music.ShakeDetector.onShakeListener;

ÉêÃ÷±äÁ¿£º

private boolean mShakeFlag = false;

ShakeDetector mShakeDetector = null;

ÔÚonCreate()ÖдÓsharedpreferenceÖжÁÈ¡值£¬À´ÉèÖÃÊÇ·ñ´ò¿ªÒ¡Ò¡¹¦ÄÜ£»

  mShakeFlag = mPreferences.getBoolean("shakeflag", false);  setShakeOnorOff();

ÔÚonDestroy()ÖÐÈ¡Ïû×¢²á£º

   if (mShakeDetector != null) {mShakeDetector.unRegisterListener();   }
ʵÏÖº¯Êý£º

    private void setShakeOnorOff(){ if (mShakeFlag == true){         mShakeDetector= new ShakeDetector(this); mShakeDetector.registerListener(); mShakeDetector.setOnShakeListener(new onShakeListener() { @Override public void onShake() { // TODO Auto-generated method stub if (isPlaying()){      gotoNext(true); } } }); }else{if (mShakeDetector != null) {mShakeDetector.unRegisterListener();} }Editor ed = mPreferences.edit();ed.putBoolean("shakeflag", mShakeFlag);SharedPreferencesCompat.apply(ed); }    public void setShakeFlag(boolean shakeflag) {        synchronized (this) {            mShakeFlag = shakeflag;            setShakeOnorOff();        }    }    public boolean getShakeFlag() {        return mShakeFlag;    }

ÔÚIMediaPlaybackService.StubÖÐÉèÖÃÊÇ·ñ´ò¿ªÒ¡Ò¡¹¦ÄÜ

      public void setShakeFlag(boolean shakeflag) {    mService.get().setShakeFlag(shakeflag);          }        public boolean getShakeFlag() {            return mService.get().getShakeFlag();        }

½ÓÏÂÀ´¾ÍÊÇÔÚIMediaPlaybackService.aidlÎļþÖÐÌí¼Ó¶ÔÓ¦µÄº¯Êý£»

   void setShakeFlag(boolean shakeflag);    boolean getShakeFlag();

×îºó¾ÍÊÇÌí¼ÓÒ»¸öÎļþShakeDetector.java

package com.android.music; import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.util.Log;public class ShakeDetector implements SensorEventListener {private static final String TAG = "ShakeDetector";private Context mContext;private long lastTime;        private float last_x;private float last_y;private float last_z;private static final double SHAKE_SHRESHOLD = 3000d;//Õâ¸öÖµ¿É¸ù¾ÝsensorµÄÁéÃô¶ÈÀ´µ÷Õû        private Sensor sensor;private SensorManager sensorManager;public onShakeListener shakeListener;public ShakeDetector(Context context) {mContext = context;sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);}       public boolean registerListener() {if (sensorManager != null) {sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);if (sensor != null) {this.sensorManager.registerListener(this, sensor,SensorManager.SENSOR_DELAY_GAME);return true;}}return false;}public void unRegisterListener() {System.out.println("ShakeDetector:unRegisterListener");if (sensorManager != null  && sensor != null)sensorManager.unregisterListener(this , sensor);}public void setOnShakeListener(onShakeListener listener) {shakeListener = listener;}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stublong curTime = java.lang.System.currentTimeMillis();if ((curTime - lastTime) > 50) {long diffTime = (curTime - lastTime);lastTime = curTime;float x = event.values[0];float y = event.values[1];float z = event.values[2];                                float speed = Math.abs(x + y + z - last_x - last_y - last_z)/ diffTime * 10000;System.out.println("ShakeDetector:onSensorChanged speed ="+speed);if (speed > SHAKE_SHRESHOLD) {shakeListener.onShake();}last_x = x;last_y = y;last_z = z;}}       public interface onShakeListener {public void onShake();}}

ºÃ£¬µ½´ËΪֹ£¬¾Í¿ÉÒÔʵÏÖÒ¡Ò¡Çи蹦ÄÜÁË£¬Èç¹ûÓÐÓõÃÉϵģ¬¿ÉÒÔÄÃÈ¥ÓÃһϣ¬±ðµÄƽ̨£¨Õ¹Ñ¶£¬MTK£Ò²¶¼¿ÉÒÔÀà似µÄʵÏִ˹¦ÄÜ£¬ÓÐÎÊÌâÇëÔÚºóÃæÁôÑÔ¡£





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.