91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

傳感器AssistantSensorListener

發布時間:2020-07-22 03:33:57 來源:網絡 閱讀:609 作者:樂無莜 欄目:移動開發
package com.qianfeng.assistant.modules.other.utils;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

/**
 * Created by Administrator on 16-3-29.
 */
public class AssistantSensorListener implements SensorEventListener {

    private Sensor sensor;
    private SensorManager manager;
    private final long thresholdTime=300;
    private long lastTime;
    private long tempTime;
    private final double thresholdSpeed=100;
    private IShakeListener listener;
    /**
     * 記錄傳感器上一次的空間位置
     */
    private float lastX,lastY,lastZ;
    public AssistantSensorListener(Context context){
        //獲取傳感器manager
        manager= (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
        if(manager!=null){
            //獲取默認的加速度傳感器
            sensor=manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
            if(sensor!=null){
                //注冊傳感器
                manager.registerListener(this,sensor,Sensor.TYPE_ACCELEROMETER);
            }
        }
    }
    @Override
    public void onSensorChanged(SensorEvent event) {
        long currentTime=System.currentTimeMillis();

        tempTime=currentTime-lastTime;

        //控制刷新的頻率
        if( tempTime< thresholdTime){
            return;
        }

        lastTime=currentTime;
        float[] values=event.values;
        float x=values[0];
        float y=values[1];
        float z=values[2];

        LogUtils.d("onSensorChanged event", x + "," + y+","+z+";");


        //計算三個坐標軸上的相對位移
        float tempx=x-lastX;
        float tempy=y-lastY;
        float tempz=z-lastZ;

        double speed=Math.sqrt(tempx*tempx+tempy*tempy+tempz*tempz)*1000/tempTime;

        //重新記錄位置
        lastX=x;
        lastY=y;
        lastZ=z;

        //如果速度達到100,即可認定手機正在搖動,用監聽器回調出去
        if(speed > thresholdSpeed && listener!=null){
            listener.onShake(speed);
        }

        LogUtils.e("speed"+speed);

    }

    /**
     * 設置搖一搖監聽器
     *
     * @param listener 搖一搖監聽器
     */
    public void setShakeListener(IShakeListener listener){
        this.listener=listener;
    }

    /**
     *
     * 注銷系統服務
     */
    public void unRegisterManager(){
        if(manager!=null&&sensor!=null){
            manager.unregisterListener(this);
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }

    /**
     * 搖一搖接口
     */
    public interface IShakeListener{
        /**
         * 正在搖動
         *speed 搖動的速度
         */
        void onShake(double speed);
    }
}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永城市| 江川县| 濮阳市| 徐汇区| 射洪县| 古田县| 鸡西市| 平凉市| 巴中市| 安陆市| 濉溪县| 永靖县| 郓城县| 沧州市| 云南省| 宁河县| 泽普县| 灵宝市| 浑源县| 樟树市| 乌兰察布市| 井研县| 平谷区| 扬州市| 花莲县| 柳江县| 绥阳县| 犍为县| 枝江市| 惠来县| 郑州市| 建湖县| 金山区| 洪泽县| 阳曲县| 墨竹工卡县| 巫溪县| 林周县| 大石桥市| 泊头市| 罗田县|