BigPlanetTracks.java :  » GPS » big-planet-tracks » tyt » android » bigplanettracks » Android Open Source

Android Open Source » GPS » big planet tracks 
big planet tracks » tyt » android » bigplanettracks » BigPlanetTracks.java
package tyt.android.bigplanettracks;

import tyt.android.bigplanettracks.maps.NavControls;

import android.app.TabActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.RelativeLayout;
import android.widget.TabHost;

public class BigPlanetTracks extends TabActivity implements OnTouchListener {  

  protected static final int SetTitle = 0;
  
  private WakeLock wakeLock;
  
  /*
   * Tabs/View navigation:
   */
  private static final int NUM_TABS = 2;
  private int currentTab = 0;

  private NavControls navControls;

  private final int icons[] = {
      R.drawable.menu_by_map,
      R.drawable.menu_by_time };

  private final Runnable nextActivity = new Runnable() {
    public void run() {
      currentTab = (currentTab + 1) % NUM_TABS;
      navControls.setLeftIcon(icons[(currentTab + NUM_TABS - 1) % NUM_TABS]);
      navControls.setRightIcon(icons[(currentTab + NUM_TABS + 1) % NUM_TABS]);
      getTabHost().setCurrentTab(currentTab);
      navControls.show();
    }
  };

  private final Runnable prevActivity = new Runnable() {
    public void run() {
      currentTab--;
      if (currentTab < 0) {
        currentTab = NUM_TABS - 1;
      }
      navControls.setLeftIcon(icons[(currentTab + NUM_TABS - 1) % NUM_TABS]);
      navControls.setRightIcon(icons[(currentTab + NUM_TABS + 1) % NUM_TABS]);
      getTabHost().setCurrentTab(currentTab);
      navControls.show();
    }
  };

  @Override
  public boolean onTouch(View v, MotionEvent event) {
    if (BigPlanet.isGPSTracking == true) {
      if (event.getAction() == MotionEvent.ACTION_DOWN) {
        navControls.show();
      }
    }
    return false;
  }
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_LEFT_ICON);
    
    // R.drawable.globe won't appear but needed
    final TabHost tabHost = getTabHost();
    tabHost.addTab(tabHost.newTabSpec("tab1")
      .setIndicator("Map", getResources().getDrawable(R.drawable.globe))
      .setContent(new Intent(this, BigPlanet.class)));
    tabHost.addTab(tabHost.newTabSpec("tab2")
      .setIndicator("Stats", getResources().getDrawable(R.drawable.globe))
      .setContent(new Intent(this, StatsActivity.class)));
    
    // Hide the tab widget itself. We'll use overlayed prev/next buttons to
    // switch between the tabs:
    tabHost.getTabWidget().setVisibility(View.GONE);

    RelativeLayout layout = new RelativeLayout(this);
    LayoutParams params = new LayoutParams(
        LayoutParams.FILL_PARENT,
        LayoutParams.FILL_PARENT);
    layout.setLayoutParams(params);
    navControls = new NavControls(this, layout, prevActivity, nextActivity);
    navControls.setLeftIcon(icons[NUM_TABS - 1]);
    navControls.setRightIcon(icons[1]);
    navControls.show();
    tabHost.addView(layout);
    layout.setOnTouchListener(this);
    
    setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.globe);
    
    BigPlanet.titleHandler = handler;
  }
  
  @Override
  protected void onResume() {
    super.onResume();
    acquireWakeLock();
  }
  
  @Override
  protected void onPause() {
    super.onPause();
    releaseWakeLock();
  }
  
  private void acquireWakeLock() {
    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    if (wakeLock == null) {
      wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "wakeLock");
      if (!wakeLock.isHeld()) {
        wakeLock.acquire();
      }
    }
  }
  
  private void releaseWakeLock() {
    if (wakeLock != null && wakeLock.isHeld()) {
      wakeLock.release();
      wakeLock = null;
    }
  }
  
  private Handler handler = new Handler() {
    public void handleMessage(Message msg) {
      String message = (String) msg.obj;
      switch (msg.what) {
      case SetTitle:
        setTitle(message);
        break;
      }
    }
  };
    
}
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.