Android Open Source - space-digitizing Routing_floorlist






From Project

Back to project page space-digitizing.

License

The source code is released under:

MIT License

If you think the Android project space-digitizing 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

package com.khajenasir.spacedigitizing;
// w ww  .ja v a2 s .c  o m
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.database.Cursor;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class Routing_floorlist  extends Activity implements SensorEventListener
{
  private SensorManager sensorManager;
  //private Sensor sensor;
  private double x, y, z, cache_x=0;
  private LocationManager mgr=null;
  double _lat, _lon, _alt;
  private DatabaseHelper db=null;
  GeoHelper geo = new GeoHelper();
  double[] currentPoint;
  
  ListView list;
  //boolean CanSendData = false;
  ArrayAdapter<String> adaptor;
  private List<Floor> floors = new ArrayList<Floor>();
  
  int buildingID = -1;
  
  @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.routing_floorlist);
        
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    mgr=(LocationManager)getSystemService(LOCATION_SERVICE);

      buildingID = getIntent().getExtras().getInt("BuildingID");
    
    list = (ListView)findViewById(R.id.listViewFloors);
        
      db = new DatabaseHelper(this);
    }
  
  @Override
    protected void onResume()
    {
        super.onResume();
        
    mgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1,  onLocationChange); 
    
//    sensorManager.registerListener(this,
//        sensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION),
//                SensorManager.SENSOR_DELAY_NORMAL);
    
    //sensorManager.registerListener(this,
    //    sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
        //        SensorManager.SENSOR_DELAY_NORMAL);
    
    sensorManager.registerListener(this, 
        sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
                SensorManager.SENSOR_DELAY_NORMAL);
    
  
      adaptor = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
      loadfloors();
      
        list.setAdapter(adaptor);
    }
    
  void loadfloors()
  {
    try
    {
    
    adaptor.clear();
    floors.clear();
    
    String[] select = {"ID","BuildingID","Name"};
    Cursor cursor = db.SelectTable("tbl_buildingfloor", select, "BuildingID=" + buildingID, "ID");
    cursor.moveToFirst();
    
    for(int i=0;i<cursor.getCount();i++)
    {
      Floor newFloor = new Floor();
      newFloor.ID = cursor.getInt(0);
      newFloor.Name = cursor.getString(2);
      floors.add(newFloor);
      
      cursor.moveToNext();
    }
    
    String[] select2 = {"ID","X","Y","H"};
    Cursor cursorBuildng = db.SelectTable("tbl_building", select2, "ID=" + buildingID, "ID");
    cursorBuildng.moveToFirst();
    
    double[] BuildingPoint = geo.convert_Geodetic_To_Cartesian(cursorBuildng.getDouble(1), cursorBuildng.getDouble(2), cursorBuildng.getDouble(3));
    double BuidingX =  BuildingPoint[0];
    double BuidingY = BuildingPoint[1];
    double BuidingH = BuildingPoint[2];
    double deltaH=BuidingH -1300/*currentPoint[2]*/;
    double Dp = Math.pow((Math.pow((BuidingY - currentPoint[1]),2)+Math.pow((BuidingX - currentPoint[0]),2)), 0.5);
    double floorNum=1;
    
    cache_x = (double)(cache_x * (-1) * Math.PI)/180;
    if(deltaH > 0)
    {
      double total_H=(double)(Dp * Math.tan(cache_x));
      double delta_D=total_H-deltaH;
      floorNum = Math.ceil((double)(delta_D/3));
    }
    else if(deltaH<0)
    {
      double H_BU=BuidingH+((double)(3*cursor.getCount()));
      double deltaH_U=H_BU-1553/*currentPoint[2]*/;
      double deltaH_B=H_BU-BuidingH;
      if(deltaH_U > 0)
      {
        double delta_U=(double)(Dp * Math.tan(cache_x));
        floorNum=Math.ceil((double)((delta_U-deltaH)/3));
        
      }
      else
      {
        double delta_UD=(double)(Dp * Math.tan(cache_x));
        double delta_UD_2=delta_UD-deltaH_U;
        floorNum=Math.ceil((double)((delta_UD_2+deltaH_B)/3));
      }
    }
    else if(deltaH==0)
    {
      double delta_lev=(double)(Dp * Math.tan(cache_x));
      floorNum=Math.ceil((double)(delta_lev/3));
    }
    
    /*double m = Math.tan(cache_x);
    

    double Dh = BuidingH-currentPoint[2] ;
    
    
    double pointing_H = m*Dp + Dh;
    if(pointing_H - Math.floor(pointing_H) == 0)
      pointing_H++;
    
    double floorNum = Math.ceil(pointing_H/3);*/

    int floorindex = (int)(floorNum - 1);
    
    adaptor.add(floorNum + " - " + floors.get(floorindex).Name);
    
    
  }
  catch(Exception ex)
  {
    ex.printStackTrace();
  }
    
  }
  
  @Override
  public void onPause() 
  {
    super.onPause();
    sensorManager.unregisterListener(this);
        
    mgr.removeUpdates(onLocationChange);
    }
    
  public void onSensorChanged(SensorEvent event) 
  {
    synchronized (this) 
    {  
      if (event.sensor.getType() == Sensor.TYPE_LINEAR_ACCELERATION)
      {
        //Movement
        
        /*    float accelationSquareRoot = (x * x + y * y + z * z) / (SensorManager.GRAVITY_EARTH * SensorManager.GRAVITY_EARTH);
        long actualTime = System.currentTimeMillis();
        if (accelationSquareRoot >= 2) //
        {
          if (actualTime - lastUpdate < 200) {
            return;
          }
          lastUpdate = actualTime;
        }*/
      }
      else if(event.sensor.getType() == Sensor.TYPE_ORIENTATION)
      {
        // 0=North, 90=East, 180=South, 270=West
        z = event.values[0];
        //Front Oriention
        x = event.values[1];
        //Side Oriention
        y = event.values[2];      
        
        if(cache_x == 0)
        {
          cache_x = x;
          loadfloors();
        }
        else if (Math.abs(cache_x - x) > 2)
        {
          cache_x = x;
          loadfloors();
        }
      }    
      
    }
  }
  
  public void onAccuracyChanged(Sensor sensor, int accuracy) 
  {}
  
  LocationListener onLocationChange=new LocationListener() {
    public void onLocationChanged(Location location) 
    {
      _lat=location.getLatitude();
      _lon=location.getLongitude();
      _alt=location.getAltitude();
      
      currentPoint = geo.convert_Geodetic_To_Cartesian(_lat, _lon, _alt);
    }
    
    public void onProviderDisabled(String provider) 
    {
      // required for interface, not used
    }
    
    public void onProviderEnabled(String provider) 
    {
      // required for interface, not used
    }
    
    public void onStatusChanged(String provider, int status, Bundle extras) 
    {
      // required for interface, not used
    }
  };
  
  
}




Java Source Code List

com.khajenasir.spacedigitizing.BuildingManager.java
com.khajenasir.spacedigitizing.Building.java
com.khajenasir.spacedigitizing.Category.java
com.khajenasir.spacedigitizing.DatabaseHelper.java
com.khajenasir.spacedigitizing.Floor.java
com.khajenasir.spacedigitizing.GPSPoint.java
com.khajenasir.spacedigitizing.GeoHelper.java
com.khajenasir.spacedigitizing.Navigate_buildingfinder.java
com.khajenasir.spacedigitizing.Navigate_buildinglist.java
com.khajenasir.spacedigitizing.Navigate_floorfinder.java
com.khajenasir.spacedigitizing.Navigate_floorlist.java
com.khajenasir.spacedigitizing.Routing_buildinglist.java
com.khajenasir.spacedigitizing.Routing_buildingselect.java
com.khajenasir.spacedigitizing.Routing_floorlist.java
com.khajenasir.spacedigitizing.deleteBuilding.java
com.khajenasir.spacedigitizing.editBuilding.java
com.khajenasir.spacedigitizing.main.java
com.khajenasir.spacedigitizing.newBuilding2.java
com.khajenasir.spacedigitizing.newBuilding3.java
com.khajenasir.spacedigitizing.newBuilding.java