안녕하세요 .
현재 간단하게 안드로이드를 이용하여
으스스한배경에 귀신 얼굴 이미지를 띄워서 가속도 센서를 이용하여 자유롭게 귀신 얼굴 이미지가 떠다니는
부분을 구현한 상태입니다. 서비스를 이용하여 착신아리 음악을 넣었구요
아래가 그 구현한 코드인데요.
제가 지금 추가하고 싶은 부분이 귀신얼굴 이미지가 핸드폰 액정이 네모이면 테두리 (즉 끝에) 벽에 부딪히면
귀신 비명소리가 나게 추가하고 싶습니다.
다시 정리해보면 귀신 얼굴이 가속도 센서로 떠다니다가
핸드폰 액정 테두리(끝에) 벽에 부딪히면 비명소리가 나는 이벤트를 추가하고 싶은데요
코드 어디부분에 어떤 부분을
추가해야 하는지 알고 싶습니다. 아시는분 정보좀 공유해주시면 정말 감사하겠습니다ㅠ
public class AccelTrap extends Activity implements SensorEventListener {
private static final String LOG_TAG = "AccelDemo";
private SensorManager sensorManager;
private SensorView sensorView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startService(new Intent("com.example.androidproject"));
sensorView = new SensorView(this);
setContentView(sensorView);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorView.setBackgroundResource(R.drawable.horrorbackground);
List<Sensor> sensors = sensorManager
.getSensorList(Sensor.TYPE_ACCELEROMETER);
if (sensors.size() > 0) {
sensorManager.registerListener(this, sensors.get(0),
SensorManager.SENSOR_DELAY_GAME);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
sensorManager.unregisterListener(this);
stopService(new Intent("com.example.androidproject"));
}
class SensorView extends View {
private static final int HORROR_SIZE = 65;
private Bitmap horror;
private int w;
private int h;
private float x;
private float y;
public SensorView(Context context) {
super(context);
requestWindowFeature(Window.FEATURE_NO_TITLE);
horror = BitmapFactory.decodeResource(context.getResources(),
R.drawable.horror1);
}
/** * @param mx * @param my */
public void move(float mx, float my) {
this.x -= (mx * 4f);
this.y += (my * 4f);
if (this.x < 0) {
this.x = 0;
} else if ((this.x + HORROR_SIZE) > this.w) {
this.x = this.w - HORROR_SIZE;
}
if (this.y < 0) {
this.y = 0;
} else if ((this.y + HORROR_SIZE) > this.h) {
this.y = this.h - HORROR_SIZE;
}
invalidate();
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
this.w = w;
this.h = h;
this.x = (w - HORROR_SIZE) / 2f;
this.y = (h - HORROR_SIZE) / 2f;
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(horror, x, y, null);
}
}
public void onAccuracyChanged(final Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
public void onSensorChanged(final SensorEvent event) {
Sensor sensor = event.sensor;
switch (sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
// Log.d(LOG_TAG, "ACCELEROMETER : " + event.values[0] + ","
// + event.values[1] + "," + event.values[2]);
sensorView.move(event.values[0], event.values[1]);
break;
default:
break;
}
}
}