private boolean connect(WifiConfiguration config) { mWifiManager.startScan(); for (ScanResult result : mWifiManager.getScanResults()) { // Android4.2以降のダブルクォーテーションを除去 LogUtils.i("config.SSID: " + getSsidName(config.SSID)); LogUtils.i("result.SSID: " + getSsidName(result.SSID)); if (getSsidName(config.SSID).equals(getSsidName(result.SSID))) { return mWifiManager.enableNetwork(config.networkId, true); } } return false; }
public boolean detectShake(float x, float y, float z) { boolean isShaked = false; // シェイク時間のチェック long now = System.currentTimeMillis(); if (mLastTime == 0) { mLastTime = now; } // SHAKE_TIMEOUT までに次の加速を検知しなかったら mShakeCount をリセット if (now - mLastAccel > SHAKE_TIMEOUT) { mShakeCount = 0; } // 速度を算出する long diff = now - mLastTime; float speed = Math.abs(x + y + z - mLastX - mLastY - mLastZ) / diff * 10000; LogUtils.d("speed: " + speed); if (speed > SPEED_THRESHOLD) { // mShakeCount の加算、SHAKE_COUNT を超えているかのチェック // 最後のシェイク時間から SHAKE_DURATION 経過しているかチェック if (++mShakeCount >= SHAKE_COUNT && now - mLastShake > SHAKE_DURATION) { mLastShake = now; mShakeCount = 0; isShaked = true; } // SPEED_THRESHOLD を超える速度を検出した時刻をセット mLastAccel = now; } mLastTime = now; mLastX = x; mLastY = y; mLastZ = z; return isShaked; }