DisplayView.java :  » UnTagged » wave-panel » com » sunflower » WavePanel » Android Open Source

Android Open Source » UnTagged » wave panel 
wave panel » com » sunflower » WavePanel » DisplayView.java
package com.sunflower.WavePanel;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.util.Log;
import android.view.View;

public class DisplayView extends View implements SensorEventListener{
  private DisplayView instance = null;
  private ViewManager vmanager = null;
  private int line_idx = 0;
  private int led_idx = 0;
  private long old_time = 0;
  private LedController led = null;
  private SampleFilter filter = null;
  private int stop_count = 0;
  private boolean display_flag = false;

  private Rect dirty_area = null;

  
  public DisplayView(Context context) {
    super(context);
    instance = this;
    vmanager = (ViewManager) context;

    filter = new SampleFilter(3);
    led = new LedController();
    dirty_area = led.getRedrawArea();

  }

  @Override
  protected void onDraw(Canvas canvas) {
    if(display_flag) {
      line_idx++;
      if(line_idx >= LedController.END_LINE){
        display_flag = false;
      }
    //  Log.i("Draw LED: "+Integer.toString(led_idx), "Line = "+Integer.toString(line_idx));
      led.showLine(canvas, line_idx);
    }
    else 
      led.showDarkLine(canvas);

    invalidate(dirty_area);

  }

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

  @Override
  public void onSensorChanged(SensorEvent event) {
    if(event.sensor.getType() == Sensor.TYPE_ORIENTATION){
      float azimuth = event.values[0];
      filter.addSample(azimuth);
    //  Log.i("Azimuth", Float.toString(azimuth));
    //  filter.dump();
      int movement = filter.getMovement();
  
      switch(movement) {
      case SampleFilter.LEFT_END:
        //column index reset, ready to display
        Log.i("Movement", "LEFT END");
        stop_count = 0;
        line_idx = 0;
        display_flag = true;
        break;
      case SampleFilter.RIGHT_END:
        Log.i("Movement", "RIGHT END");
        //turns to dark
        stop_count = 0;
        line_idx = LedController.END_LINE;
        display_flag = false;
        break;
      case SampleFilter.LEFT:
      case SampleFilter.RIGHT:
      case SampleFilter.STOP:
        //keeps dark
        //Log.i("Stop count", Integer.toString(stop_count));
        stop_count++;
        if(stop_count >= 25) {
          vmanager.switchView(ViewManager.HINT_VIEW_ID);
          stop_count = 0;
        }
        break;
      }
      
      if(old_time == 0) {
        old_time = System.currentTimeMillis();
        led.setText(SettingView.getText(0));
        led.setTextColor(SettingView.getTextColor());
      }
      else {
        if(System.currentTimeMillis()- old_time >= SettingView.getTextDisplayTime()*1000) {
          led_idx++;
          if(led_idx >= SettingView.getTextNum()) led_idx = 0;
        //  Log.i("Index = "+Integer.toString(led_idx), "Total = "+Integer.toString(SettingView.getTextNum()));
          led.setText(SettingView.getText(led_idx));
          led.setTextColor(SettingView.getTextColor());
          
          old_time = System.currentTimeMillis();
        }
      }
    }
  }
  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.