課程
/移動開發(fā)
/Android
/Android動感系列-搖一搖
老師,怎么突然就跳到這里了,之前的代碼邏輯是怎么寫的?
2016-06-02
源自:Android動感系列-搖一搖 4-2
正在回答
init()函數(shù)使用public,
謝謝,對于我們這些Android小白來說太重要了。。。
package com.love.lxx.yyy;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.util.Log;/** * Created by Administrator on 2016/6/4. */public class ShakeSensor implements SensorEventListener { ? ?private static final String TAG = "lxx"; ? ?private Context mContext; ? ?private SensorManager mSensorManager; ? ?private Sensor mSensor; ?//加速度 ? ?private Long lastTime=1l; ? //最后一次搖動的時間 ? ?private float last_x; ?//最后一次x的值 ? ?private float last_y; ? ?private float last_z; ? ?private OnShakeSensorListener onShakeSensorListener; ? ?public ShakeSensor(Context context) { ? ? ? ?mContext = context; ? ? ? ?init(); ? ?} ? ?private void init() { ? ? ? ?mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE); ? ? ? ?mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); ? ? ? ?mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_GAME); ? ?} ? ?public void unRegisterListener() { ? ? ? ?mSensorManager.unregisterListener(this, mSensor); ? ?} ? ?@Override ? ?public void onSensorChanged(SensorEvent event) { ? ? ? ?long currentTime = System.currentTimeMillis(); ? ? ? ?if (currentTime - lastTime > 10) { ? ? ? ? ? ?//兩次搖動手機的時間間隔 ? ? ? ? ? ?long timeDis = currentTime - lastTime; ? ? ? ? ? ?lastTime = currentTime; ? ? ? ? ? ?float x = event.values[0]; ? ? ? ? ? ?float y = event.values[1]; ? ? ? ? ? ?float z = event.values[2]; ? ? ? ? ? ?double speed; ? //速度 ? ? ? ? ? ?double absValue = Math.abs(x + y + z - last_x - last_y - last_z); ? ? ? ? ? ?speed = absValue / timeDis * 10000; ? ? ? ? ? ?if (speed > 20000) { ? ? ? ? ? ? ? ?if (onShakeSensorListener != null) { ? ? ? ? ? ? ? ? ? ?onShakeSensorListener.onShake(); ? ? ? ? ? ? ? ?} ? ? ? ? ? ?} ? ? ? ? ? ?Log.e(TAG, "x=" + x + "y=" + y + "z=" + z); ? ? ? ? ? ?Log.e(TAG, "speed------" + speed); ? ? ? ?} ? ?} ? ?@Override ? ?public void onAccuracyChanged(Sensor sensor, int accuracy) { ? ?} ? ?public void setOnShakeSensorListener(OnShakeSensorListener listener) { ? ? ? ?onShakeSensorListener = listener; ? ?} ? ?public interface OnShakeSensorListener { ? ? ? ?void onShake(); ? ?}}
舉報
Android開發(fā)中,快速實現(xiàn)搖一搖+動畫特效,已經(jīng)都玩嗨了
2 回答老師,第二節(jié)課程傳感器去哪了呢?
1 回答有沒有“搖一搖”課程的完整代碼?
1 回答各位猿友啊,我照老師這個視頻做,每次執(zhí)行到初始化傳感器都出現(xiàn)nullpointerexception異常,我也注冊了的啊,怎么回事,希望大神們可以幫幫我,明晚都要交項目了。
1 回答模擬器怎么搖動的
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2018-01-23
init()函數(shù)使用public,
2017-05-12
謝謝,對于我們這些Android小白來說太重要了。。。
2016-06-04
package com.love.lxx.yyy;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.Log;
/**
* Created by Administrator on 2016/6/4.
*/
public class ShakeSensor implements SensorEventListener {
? ?private static final String TAG = "lxx";
? ?private Context mContext;
? ?private SensorManager mSensorManager;
? ?private Sensor mSensor; ?//加速度
? ?private Long lastTime=1l; ? //最后一次搖動的時間
? ?private float last_x; ?//最后一次x的值
? ?private float last_y;
? ?private float last_z;
? ?private OnShakeSensorListener onShakeSensorListener;
? ?public ShakeSensor(Context context) {
? ? ? ?mContext = context;
? ? ? ?init();
? ?}
? ?private void init() {
? ? ? ?mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
? ? ? ?mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
? ? ? ?mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_GAME);
? ?}
? ?public void unRegisterListener() {
? ? ? ?mSensorManager.unregisterListener(this, mSensor);
? ?}
? ?@Override
? ?public void onSensorChanged(SensorEvent event) {
? ? ? ?long currentTime = System.currentTimeMillis();
? ? ? ?if (currentTime - lastTime > 10) {
? ? ? ? ? ?//兩次搖動手機的時間間隔
? ? ? ? ? ?long timeDis = currentTime - lastTime;
? ? ? ? ? ?lastTime = currentTime;
? ? ? ? ? ?float x = event.values[0];
? ? ? ? ? ?float y = event.values[1];
? ? ? ? ? ?float z = event.values[2];
? ? ? ? ? ?double speed; ? //速度
? ? ? ? ? ?double absValue = Math.abs(x + y + z - last_x - last_y - last_z);
? ? ? ? ? ?speed = absValue / timeDis * 10000;
? ? ? ? ? ?if (speed > 20000) {
? ? ? ? ? ? ? ?if (onShakeSensorListener != null) {
? ? ? ? ? ? ? ? ? ?onShakeSensorListener.onShake();
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ? ? ?Log.e(TAG, "x=" + x + "y=" + y + "z=" + z);
? ? ? ? ? ?Log.e(TAG, "speed------" + speed);
? ? ? ?}
? ?}
? ?@Override
? ?public void onAccuracyChanged(Sensor sensor, int accuracy) {
? ?}
? ?public void setOnShakeSensorListener(OnShakeSensorListener listener) {
? ? ? ?onShakeSensorListener = listener;
? ?}
? ?public interface OnShakeSensorListener {
? ? ? ?void onShake();
? ?}
}