在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ 百戰(zhàn)經(jīng)典第十七戰(zhàn)-基于加速度傳感器的搖一搖功能實例
百戰(zhàn)經(jīng)典第二十戰(zhàn)-ListView中點擊button跳轉(zhuǎn)到撥號界面實例
百戰(zhàn)經(jīng)典第十一戰(zhàn)-GridView動態(tài)添加Item
百戰(zhàn)經(jīng)典第二戰(zhàn)-好玩的Spinner控件
百戰(zhàn)經(jīng)典第五戰(zhàn)-各種對話框Dialog精彩薈萃
百戰(zhàn)經(jīng)典第八戰(zhàn)-BitmapFactory.Options對資源圖片進行縮放
百戰(zhàn)經(jīng)典第四戰(zhàn)-玩轉(zhuǎn)ListView
百戰(zhàn)經(jīng)典第十五-竊聽風(fēng)云之短信監(jiān)聽
前言
百戰(zhàn)經(jīng)典第十四戰(zhàn)-網(wǎng)絡(luò)交互,基于Baas用戶表查詢功能實現(xiàn)
百戰(zhàn)經(jīng)典第九戰(zhàn)-ViewFlipper實現(xiàn)幻燈效果
百戰(zhàn)經(jīng)典第三戰(zhàn)-實現(xiàn)畫圖板
百戰(zhàn)經(jīng)典第十七戰(zhàn)-基于加速度傳感器的搖一搖功能實例
百戰(zhàn)經(jīng)典第十戰(zhàn)-LayoutAnimation布局動畫效果
百戰(zhàn)經(jīng)典第七戰(zhàn)-顯示倒計時的Button按鈕
百戰(zhàn)經(jīng)典第六戰(zhàn)-Activity啟動模式小樣
百戰(zhàn)經(jīng)典第十二戰(zhàn)-GridView動態(tài)刪除Item
百戰(zhàn)經(jīng)典第十六戰(zhàn)-圖片或頭像設(shè)置功能
百戰(zhàn)經(jīng)典第十九戰(zhàn)-短信監(jiān)聽實現(xiàn)驗證碼自動填入
百戰(zhàn)經(jīng)典第一戰(zhàn)—聽話的TextView
百戰(zhàn)經(jīng)典第十八戰(zhàn)-自定義控件實現(xiàn)一鍵清空輸入框
百戰(zhàn)經(jīng)典第十三戰(zhàn)-網(wǎng)絡(luò)交互,基于Baas實現(xiàn)用戶注冊功能

百戰(zhàn)經(jīng)典第十七戰(zhàn)-基于加速度傳感器的搖一搖功能實例

搖一搖在微信中引入之后,各種APP都以各種形式實現(xiàn)搖一搖功能,下面研究一下?lián)u一搖功能是如何觸發(fā)的,這里主要是用到了手機的加速度傳感器,代碼如下:

package com.location.activity;
//省略引入包
public class MainActivity extends Activity {
    private SensorManager sensorManager;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);// 獲取服務(wù)
        Sensor sensor = sensorManager
                .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);// 傳感器種類-加速度傳感器
        sensorManager.registerListener(listener, sensor,
                SensorManager.SENSOR_DELAY_NORMAL);
    }
    @Override
    protected void onDestroy() {
        if (sensorManager != null) {
            sensorManager.unregisterListener(listener);
        }
        super.onDestroy();
    }
    /**
     * 傳感器觸發(fā)
     */
    private SensorEventListener listener = new SensorEventListener() {

        public void onSensorChanged(SensorEvent event) {
            float xValue = Math.abs(event.values[0]);// X軸方向加速度
            float yValue = Math.abs(event.values[1]);// Y軸方向加速度
            float zValue = Math.abs(event.values[2]);// Z軸方向加速度
            if (xValue > 20 || yValue > 20 || zValue > 20) {// 有任何一個方向的加速度值大于20,即觸發(fā)
                /**
                 * 這里我們只是以Toast為例,您可以按照自己的需求在此寫入各種方法;
                 */
                Toast.makeText(MainActivity.this, "您啟動了搖一搖功能!",
                        Toast.LENGTH_LONG).show();
            }
        }
        public void onAccuracyChanged(Sensor sensor, int accuracy) {

        }
    };
}

必須在真機上模擬,運行實例:

這里寫圖片描述

總結(jié):

  1. getSystemService(Context.SENSOR_SERVICE);// 獲取SensorManage對象;
  2. sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);// 獲取傳感器種類
  3. 本文只是將搖一搖觸發(fā)為Toast,有需要的可以直接修改方法即可。