package com.android.test.draw;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Shader.TileMode;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.PathShape;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class testActivity extends Activity implements SensorEventListener {
 CustomDrawableView mCustomDrawableView;
 private SensorManager sensorManager;
 float itt;

 /* TextView outputX; */

 // ////////////////////////////////////////////////////////////onCreate
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  mCustomDrawableView = new CustomDrawableView(this);
  setContentView(mCustomDrawableView);
  /* setContentView(R.layout.main); */

  sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

  /* outputX = (TextView) findViewById(R.id.TextView01); */
 }

 // //////////////////////////////////////////////////////////////센서값
 @Override
 protected void onResume() { // activity를 사용자에게 보여주고 사용자의 입력을 처리
  super.onResume();
  sensorManager.registerListener(this,
    sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
    SensorManager.SENSOR_DELAY_FASTEST);
 }

 /*
  * @Override protected void onStop() { // activity가 사용자에게 보여지지 않음
  * super.onStop(); sensorManager.unregisterListener(this,
  * sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)); }
  */

 public void onSensorChanged(SensorEvent event) { // sensor event listener

  synchronized (this) {

   switch (event.sensor.getType()) {

   case Sensor.TYPE_ACCELEROMETER:
    itt = event.values[0];
    /* outputX.setText("x:" + event.values[0] + " m/s^2"); */
    mCustomDrawableView.invalidate();
    break;
   }
  }
 }

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

 // //////////////////////////////////////////////////////////

 public class CustomDrawableView extends View {
  private ShapeDrawable mDrawable;

  Paint paint = new Paint();
  Path path = new Path();

  public void sleep(int time) {
   try {
    Thread.sleep(time);
   } catch (InterruptedException e) {
   }
  }

  // ////////////////////////////////////////////////////////////
  public CustomDrawableView(Context context) {
   super(context);
   int x = 10;
   int y = 10;
   int width = 300;
   int height = 300;
   mDrawable = new ShapeDrawable(new PathShape(path, 10, 10));
   mDrawable.getPaint().setShader(
     new LinearGradient(0, 0, 0, 10, 0xff00ff00, 0xffff0000,
       TileMode.CLAMP));
   mDrawable.setBounds(x, y, x + width, y + height);
   paint.setColor(Color.WHITE);

   path.moveTo(5, 0);
   /*
    * path.lineTo(0, 6); path.lineTo(4, 6); path.lineTo(4, 8);
    * path.lineTo(6, 8); path.lineTo(6, 6); path.lineTo(8, 6);
    */

  }

  // ////////////////////////////////////////////////////////////Canvas
  /*
   * public class inner extends testActivity{ //
   * ////////////////////////////////////////////////////////////sleep 구현
   * // 메소드 public void sleep(int time) { try { Thread.sleep(time); }
   * catch (InterruptedException e) { } }
   */

  protected void onDraw(Canvas canvas) {
   mDrawable.draw(canvas);

   // 틀
   paint.setColor(Color.BLUE);
   canvas.drawLine(430, 430, 170, 430, paint);

   paint.setColor(Color.GREEN);
   canvas.drawLine(170, 430, 170, 205, paint);
   // 값
   paint.setColor(Color.YELLOW);
   for (int i = 0; i < 10; i++)
   {
    canvas.drawLine(170 + (10 * i), 430, 170 + (i * 10), 430 - (itt * 15), paint);
    this.sleep(0);
   }

  }
  // ////////////////////////////////////////////////////////////
  // }
 }
}