package com.example.friedegg.myapplication;
import android.app.Activity;
import android.app.IntentService;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements SensorEventListener{
private static SoundPool soundPool;
private static int sound;
private long lastTime;
private float speed;
private float lastX;
private float lastY;
private float lastZ;
private float x, y, z;
private static final int SHAKE_THRESHOLD = 800;
private static final int DATA_X = SensorManager.DATA_X;
private static final int DATA_Y = SensorManager.DATA_Y;
private static final int DATA_Z = SensorManager.DATA_Z;
private SensorManager sensorManager;
private Sensor accelerormeterSensor;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
accelerormeterSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
@Override
public void onStart() {
super.onStart();
if (accelerormeterSensor != null)
sensorManager.registerListener(this, accelerormeterSensor,
SensorManager.SENSOR_DELAY_GAME);
}
@Override
public void onStop() {
super.onStop();
if (sensorManager != null)
sensorManager.unregisterListener(this);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
long currentTime = System.currentTimeMillis();
long gabOfTime = (currentTime - lastTime);
if (gabOfTime > 100) {
lastTime = currentTime;
x = event.values[SensorManager.DATA_X];
y = event.values[SensorManager.DATA_Y];
z = event.values[SensorManager.DATA_Z];
speed = Math.abs(x + y + z - lastX - lastY - lastZ) / gabOfTime * 10000;
if (speed > SHAKE_THRESHOLD) {
soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
sound = soundPool.load(this,R.raw.doo,1);
soundPool.play(sound,1,1,0,0,1);
Toast.makeText(this,"흔들기",Toast.LENGTH_SHORT).show();
}
lastX = event.values[DATA_X];
lastY = event.values[DATA_Y];
lastZ = event.values[DATA_Z];
}
}
}
}
뭘 빼먹은게 있을까요? 로그에서는
04-03 21:04:14.388 20771-20771/com.example.friedegg.myapplication V/SoundPool: load: fd=83, offset=225480, length=20644, priority=1
04-03 21:04:14.388 20771-20771/com.example.friedegg.myapplication V/SoundPool: create sampleID=24, fd=86, offset=20644, length=225480
04-03 21:04:14.388 20771-20771/com.example.friedegg.myapplication V/SoundPool: doLoad: loading sample sampleID=24
04-03 21:04:14.388 20771-20796/com.example.friedegg.myapplication V/SoundPoolThread: Got message m=2, mData=24
04-03 21:04:14.388 20771-20796/com.example.friedegg.myapplication V/SoundPool: Start decode
04-03 21:04:14.388 20771-20796/com.example.friedegg.myapplication V/MediaPlayer[Native]: decode(86, 225480, 20644)
04-03 21:04:14.398 20771-20771/com.example.friedegg.myapplication V/SoundPool: play sampleID=24, leftVolume=1.000000, rightVolume=1.000000, priority=0, loop=0, rate=1.000000
04-03 21:04:14.398 20771-20771/com.example.friedegg.myapplication W/SoundPool: sample 24 not READY
04-03 21:04:14.498 20771-20796/com.example.friedegg.myapplication V/SoundPool: close(86)
04-03 21:04:14.498 20771-20796/com.example.friedegg.myapplication V/SoundPool: pointer = 0x7b41f000, size = 138240, sampleRate = 44100, numChannels = 2
04-03 21:04:15.138 20771-20771/com.example.friedegg.myapplication I/SensorManager: removeAllSensors() [Sensor: LGE Accelerometer Sensor] bycom.example.friedegg.myapplication.MainActivity.onStop():58
04-03 21:04:15.428 20771-20771/com.example.friedegg.myapplication E/ViewRootImpl: mIsPenSupport: :false
이렇게 뜹니다 ㅠㅅㅠ 뭘 빼먹은게 있을까요 음악 파일도 20kb인데 혹시 용량때문인가유..