Android Open Source - geoar-app A R Fragment






From Project

Back to project page geoar-app.

License

The source code is released under:

Apache License

If you think the Android project geoar-app listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright 2012 52North Initiative for Geospatial Open Source Software GmbH
 */*from w  w  w.j av  a 2  s.c  o  m*/
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.n52.geoar.ar.view;

import java.util.HashMap;
import java.util.Map;

import org.n52.geoar.utils.GeoLocation;
import org.n52.geoar.R;
import org.n52.geoar.newdata.CheckList;
import org.n52.geoar.newdata.DataSourceHolder;
import org.n52.geoar.newdata.DataSourceInstanceHolder;
import org.n52.geoar.newdata.PluginLoader;
import org.n52.geoar.newdata.CheckList.OnCheckedChangedListener;
import org.n52.geoar.tracking.location.LocationHandler;
import org.n52.geoar.tracking.location.LocationHandler.OnLocationUpdateListener;

import android.location.Location;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.actionbarsherlock.app.SherlockFragment;

/**
 * 
 * @author Arne de Wall
 * 
 */
public class ARFragment extends SherlockFragment implements
    OnLocationUpdateListener {

  private Map<DataSourceInstanceHolder, DataSourceVisualizationHandler> mVisualizationHandlerMap = new HashMap<DataSourceInstanceHolder, DataSourceVisualizationHandler>();

  // Listener for data source enabled state
  private OnCheckedChangedListener<DataSourceInstanceHolder> dataSourceListener = new OnCheckedChangedListener<DataSourceInstanceHolder>() {

    @Override
    public void onCheckedChanged(DataSourceInstanceHolder item,
        boolean newState) {
      if (newState == true && !mVisualizationHandlerMap.containsKey(item)) {
        // new data source selected -> add new overlay handler
        DataSourceVisualizationHandler visualizationHandler = new DataSourceVisualizationHandler(
            mARView, item);
        mVisualizationHandlerMap.put(item, visualizationHandler);
        Location lastKnownLocation = LocationHandler
            .getLastKnownLocation();
        if (lastKnownLocation != null) {
          GeoLocation loc = new GeoLocation(
              lastKnownLocation.getLatitude(),
              lastKnownLocation.getLongitude());
          visualizationHandler.setCenter(loc);
        }
      } else if (newState == false) {
        // data source disabled -> remove corresponding overlay handler
        DataSourceVisualizationHandler visualizationHandler = mVisualizationHandlerMap
            .remove(item);
        if (visualizationHandler != null) {
          visualizationHandler.destroy();
        }
      }
    }
  };

  private ARView mARView;

  @Override
  public void onLocationChanged(Location location) {
    updateVisualizationHandlers(location);
  }

  private void updateVisualizationHandlers(Location location) {
    if (location == null)
      return;
    GeoLocation gLoc = new GeoLocation(location.getLatitude(),
        location.getLongitude());
    updateVisualizationHandlers(gLoc);
  }

  private void updateVisualizationHandlers(GeoLocation location) {
    for (DataSourceVisualizationHandler handler : mVisualizationHandlerMap
        .values()) {
      handler.setCenter(location);
    }
  }

  @Override
  public void onActivityCreated(Bundle savedInstanceState) {
    mARView = (ARView) getView().findViewById(R.id.arview);

    // Update all overlays after layouting the view
    new Handler().post(new Runnable() {
      @Override
      public void run() {
        updateVisualizationHandlers(LocationHandler
            .getLastKnownLocation());
      }
    });

    // add overlay handler for each enabled data source
    for (DataSourceHolder dataSource : PluginLoader.getDataSources()) {
      CheckList<DataSourceInstanceHolder> instances = dataSource
          .getInstances();
      for (DataSourceInstanceHolder instance : instances
          .getCheckedItems()) {
        DataSourceVisualizationHandler visualizationHandler = new DataSourceVisualizationHandler(
            mARView, instance);
        mVisualizationHandlerMap.put(instance, visualizationHandler);
      }

      // register for update events
      instances.addOnCheckedChangeListener(dataSourceListener);
    }

    super.onActivityCreated(savedInstanceState);
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_ar, container, false);
  }

  @Override
  public void onPause() {
    super.onPause();
    mARView.onPause();
    LocationHandler.removeLocationUpdateListener(this);
  }

  @Override
  public void onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu,
      com.actionbarsherlock.view.MenuInflater inflater) {
    inflater.inflate(R.menu.menu_ar, menu);
    super.onCreateOptionsMenu(menu, inflater);
  }

  @Override
  public void onResume() {
    super.onResume();
    // PluginLoader.getDataSources().removeOnCheckedChangeListener(
    // dataSourceListener);
    // TODO
    mARView.onResume();
    LocationHandler.addLocationUpdateListener(this);
  }

  @Override
  public void onDestroy() {
    super.onDestroy();
    for (DataSourceHolder dataSource : PluginLoader.getDataSources()) {
      dataSource.getInstances().removeOnCheckedChangeListener(
          dataSourceListener);
    }
    for (DataSourceVisualizationHandler handler : mVisualizationHandlerMap
        .values()) {
      handler.destroy();
    }
    mVisualizationHandlerMap.clear();
    // if (augmentedView != null)
    // augmentedView.destroyDrawingCache();
  }

  @Override
  public void onCreate(Bundle savedInstanceState) {
    setHasOptionsMenu(true);
    super.onCreate(savedInstanceState);
  }

}




Java Source Code List

.DataSourcesOverlay.java
.VisualizationOverlayItem.java
org.n52.geoar.AboutDialog.java
org.n52.geoar.DataSourceListAdapter.java
org.n52.geoar.GeoARActivity.java
org.n52.geoar.GeoARApplication.java
org.n52.geoar.ar.view.ARFragment.java
org.n52.geoar.ar.view.ARObject.java
org.n52.geoar.ar.view.ARView.java
org.n52.geoar.ar.view.DataSourceVisualizationHandler.java
org.n52.geoar.ar.view.IntroController.java
org.n52.geoar.ar.view.IntroViewer.java
org.n52.geoar.ar.view.gl.ARSurfaceViewRenderer.java
org.n52.geoar.ar.view.gl.ARSurfaceView.java
org.n52.geoar.ar.view.gl.GLESCamera.java
org.n52.geoar.ar.view.gl.MultisampleConfigs.java
org.n52.geoar.ar.view.gl.SurfaceTopology.java
org.n52.geoar.ar.view.overlay.ARCanvasSurfaceView.java
org.n52.geoar.ar.view.overlay.GUIDrawable.java
org.n52.geoar.ar.view.overlay.Radar.java
org.n52.geoar.exception.UnsupportedGeometryType.java
org.n52.geoar.map.view.DataSourceOverlayHandler.java
org.n52.geoar.map.view.GeoARMapView.java
org.n52.geoar.map.view.MapActivityContext.java
org.n52.geoar.map.view.MapFragment.java
org.n52.geoar.map.view.overlay.DataSourceOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePointOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePolygonOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePolylineOverlay.java
org.n52.geoar.map.view.overlay.DataSourcesOverlay.java
org.n52.geoar.map.view.overlay.OverlayType.java
org.n52.geoar.map.view.overlay.PointOverlayType.java
org.n52.geoar.map.view.overlay.PolygonOverlayType.java
org.n52.geoar.map.view.overlay.PolylineOverlayType.java
org.n52.geoar.newdata.CheckList.java
org.n52.geoar.newdata.DataCache.java
org.n52.geoar.newdata.DataSourceHolder.java
org.n52.geoar.newdata.DataSourceInstanceHolder.java
org.n52.geoar.newdata.DataSourceInstanceSettingsDialogActivity.java
org.n52.geoar.newdata.InstalledPluginHolder.java
org.n52.geoar.newdata.PluginActivityContext.java
org.n52.geoar.newdata.PluginContext.java
org.n52.geoar.newdata.PluginDialogFragment.java
org.n52.geoar.newdata.PluginDownloadHolder.java
org.n52.geoar.newdata.PluginDownloader.java
org.n52.geoar.newdata.PluginFragment.java
org.n52.geoar.newdata.PluginGridAdapter.java
org.n52.geoar.newdata.PluginHolder.java
org.n52.geoar.newdata.PluginLoader.java
org.n52.geoar.newdata.PluginLogger.java
org.n52.geoar.newdata.PluginStateInputStream.java
org.n52.geoar.newdata.Tile.java
org.n52.geoar.settings.DateTimeSettingsViewField.java
org.n52.geoar.settings.DateUtils.java
org.n52.geoar.settings.NumberSettingsViewField.java
org.n52.geoar.settings.SettingsException.java
org.n52.geoar.settings.SettingsHelper.java
org.n52.geoar.settings.SettingsViewField.java
org.n52.geoar.settings.SettingsView.java
org.n52.geoar.settings.SpinnerSettingsViewField.java
org.n52.geoar.settings.StringSettingsViewField.java
org.n52.geoar.tracking.camera.CameraView.java
org.n52.geoar.tracking.camera.RealityCamera.java
org.n52.geoar.tracking.location.AdaptiveLowPassSensorBuffer.java
org.n52.geoar.tracking.location.LocationHandler.java
org.n52.geoar.tracking.location.LowPassSensorBuffer.java
org.n52.geoar.tracking.location.MeanSensorBuffer.java
org.n52.geoar.tracking.location.SensorBuffer.java
org.n52.geoar.view.InfoView.java
org.n52.geoar.view.geoar.CalibrationControlView.java
org.n52.geoar.view.geoar.Settings.java
org.n52.geoar.view.geoar.gl.mode.BilligerColorShader.java
org.n52.geoar.view.geoar.gl.mode.BilligerLightShader.java
org.n52.geoar.view.geoar.gl.mode.BilligerTextureShader.java
org.n52.geoar.view.geoar.gl.mode.BoundingBox.java
org.n52.geoar.view.geoar.gl.mode.FeatureShader.java
org.n52.geoar.view.geoar.gl.mode.PhongFeatureShader.java
org.n52.geoar.view.geoar.gl.mode.RenderFeature2.java
org.n52.geoar.view.geoar.gl.mode.Spatial.java
org.n52.geoar.view.geoar.gl.mode.TextureFeatureShader.java
org.n52.geoar.view.geoar.gl.mode.Texture.java
org.n52.geoar.view.geoar.gl.mode.features.CubeFeature2.java
org.n52.geoar.view.geoar.gl.mode.features.FlatCircleFeature.java
org.n52.geoar.view.geoar.gl.mode.features.HeightMapFeature.java
org.n52.geoar.view.geoar.gl.mode.features.NewGridFeature.java
org.n52.geoar.view.geoar.gl.mode.features.ReferencedGridFeature.java
org.n52.geoar.view.geoar.gl.mode.features.SphereFeature.java
org.n52.geoar.view.geoar.gl.mode.features.TriangleFeature.java