Changeset b411f40 in orbit for android


Ignore:
Timestamp:
12/19/13 19:41:01 (6 years ago)
Author:
Steve Castellotti <sc@…>
Branches:
master, Servo
Children:
16965bc
Parents:
f4c851d
Message:
  • Tilt sensor working. Data appended to debug console.
Location:
android/src/info/puzzlebox/orbit
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • android/src/info/puzzlebox/orbit/AudioDevice.java

    rcb6dab1 rb411f40  
    22 
    33//import java.io.IOException; 
    4 import java.lang.Math; 
     4//import java.lang.Math; 
    55import java.util.ArrayList; 
    66import java.util.List; 
  • android/src/info/puzzlebox/orbit/AudioHandler.java

    r355dd62 rb411f40  
    44import android.media.AudioManager; 
    55import android.media.AudioTrack; 
    6 import android.os.Handler; 
     6//import android.os.Handler; 
    77import android.os.Handler.Callback; 
    88import android.os.HandlerThread; 
    9 import android.os.Looper; 
     9//import android.os.Looper; 
    1010import android.os.Message; 
    1111import android.util.Log; 
  • android/src/info/puzzlebox/orbit/FragmentTabAdvanced.java

    r89719d4 rb411f40  
    1212 
    1313import android.os.Bundle; 
     14import android.content.Context; 
    1415import android.content.res.Configuration; 
     16import android.hardware.Sensor; 
     17import android.hardware.SensorEvent; 
     18import android.hardware.SensorEventListener; 
     19import android.hardware.SensorManager; 
    1520import android.util.Log; 
    1621import android.view.LayoutInflater; 
     
    1823import android.view.View.OnClickListener; 
    1924import android.view.ViewGroup; 
    20 import android.widget.Button; 
    2125import android.widget.CheckBox; 
    2226import android.widget.LinearLayout; 
     
    3135 
    3236 
    33 public class FragmentTabAdvanced extends Fragment implements OnClickListener, SeekBar.OnSeekBarChangeListener { 
     37public class FragmentTabAdvanced extends Fragment implements OnClickListener, SeekBar.OnSeekBarChangeListener, SensorEventListener { 
    3438 
    3539        /** 
     
    7882 
    7983 
     84        private SensorManager sensorManager; 
     85        private Sensor orientationSensor = null; 
     86        private float tiltX = 0; 
     87        private float tiltY = 0; 
     88 
     89 
    8090        LinearLayout layoutControl; 
    8191        LinearLayout layoutAudioService; 
     
    195205                layoutAdvancedOptions = (LinearLayout) v.findViewById(R.id.layoutAdvancedOptions); 
    196206                layoutInvertControlSignal = (LinearLayout) v.findViewById(R.id.layoutInvertControlSignal); 
     207 
     208 
     209                //        // listener for accelerometer, use anonymous class for simplicity 
     210                //        ((SensorManager)getSystemService(Context.SENSOR_SERVICE)).registerListener( 
     211                //              new SensorEventListener() {     
     212                //                      public void onSensorChanged(SensorEvent event) {   
     213                //                          //set ball speed based on phone tilt (ignore Z axis) 
     214                //                              tiltX = -event.values[0]; 
     215                //                              tiltY = event.values[1]; 
     216                //                              //timer event will redraw ball 
     217                //                      } 
     218                //                      public void onAccuracyChanged(Sensor sensor, int accuracy) {} //ignore this event 
     219                //              }, 
     220                //              ((SensorManager)getSystemService(Context.SENSOR_SERVICE)) 
     221                //              .getSensorList(Sensor.TYPE_ACCELEROMETER).get(0), SensorManager.SENSOR_DELAY_NORMAL); 
     222 
     223 
     224                // register for orientation sensor events: 
     225//              sensorManager = (SensorManager) getApplicationContext().getSystemService(Context.SENSOR_SERVICE); 
     226                sensorManager = (SensorManager) ((OrbitTabActivity)getActivity()).getSystemService(Context.SENSOR_SERVICE); 
     227                for (Sensor sensor : sensorManager.getSensorList(Sensor.TYPE_ORIENTATION)) { 
     228                        if (sensor.getType() == Sensor.TYPE_ORIENTATION) { 
     229                                orientationSensor = sensor; 
     230                        } 
     231                } 
     232 
     233                // if we can't access the orientation sensor then exit: 
     234                if (orientationSensor == null) { 
     235                        appendDebugConsole("Failed to attach to Orientation Sensor."); 
     236                        cleanup(); 
     237                } else { 
     238                        sensorManager.registerListener(this, orientationSensor, SensorManager.SENSOR_DELAY_UI); 
     239                } 
    197240 
    198241 
     
    596639 
    597640 
     641        // ################################################################ 
     642 
     643        public void onAccuracyChanged(Sensor sensor, int accuracy) { 
     644                // Not interested in this event 
     645 
     646        } // onAccuracyChanged 
     647 
     648 
     649        // ################################################################ 
     650 
     651    // Called whenever a new Orientation Sensor reading is taken. 
     652        public void onSensorChanged(SensorEvent sensorEvent) { 
     653                // TODO Auto-generated method stub 
     654 
     655                tiltX = sensorEvent.values[1]; 
     656                tiltY = sensorEvent.values[2]; 
     657//              tiltZ = sensorEvent.values[0]; 
     658                 
     659                appendDebugConsole("X: " + tiltX + ", Y: " + tiltY + "\n"); 
     660                 
     661                 
     662        } // onSensorChanged 
     663 
     664 
     665        // ################################################################ 
     666 
     667        private void cleanup() { 
     668                // Unregister with the orientation sensor before exiting: 
     669                sensorManager.unregisterListener(this); 
     670                //        finish(); 
     671        } 
     672 
     673 
    598674} // FragmentTabAdvanced 
  • android/src/info/puzzlebox/orbit/OrbitTabActivity.java

    r89719d4 rb411f40  
    273273                //              updateAdvancedOptions(); 
    274274 
    275                 updatePower(); 
     275//              updatePower(); 
    276276 
    277277 
     
    701701        // ################################################################ 
    702702 
    703         public int calculateSignal(int signal) { 
    704  
    705                 /**  
    706                  * The ThinkGear protocol states that a signal level of 200 will be 
    707                  * returned when a clean ground/reference is not detected at the ear clip, 
    708                  *  and a value of 0 when the signal is perfectly clear. We need to 
    709                  *  convert this information into usable settings for the Signal 
    710                  *  progress bar 
    711                  */ 
    712  
    713                 int value; 
    714  
    715                 switch (signal) { 
    716                 case 200: 
    717                         value = 0; 
    718                 case 0: 
    719                         value = 100; 
    720                 default: 
    721                         value = (int)(100 - ((signal / 200.0) * 100)); 
    722                 } 
    723  
    724                 return(value); 
    725  
    726         } // calculateSignal 
    727  
    728  
    729         // ################################################################ 
    730  
    731         public void updatePower() { 
    732  
    733                 /** 
    734                  * This method updates the power level of the  
    735                  * "Throttle" and triggers the audio stream 
    736                  * which is used to fly the helicopter 
    737                  */ 
    738  
    739                 if (eegDevice == "ThinkGear") { 
    740  
    741                         FragmentTabFlightThinkGear fragmentFlight =  
    742                                         (FragmentTabFlightThinkGear) getSupportFragmentManager().findFragmentByTag( getTabFragmentFlightThinkGear() ); 
    743  
    744                         if (fragmentFlight != null) 
    745                                 eegPower = fragmentFlight.updatePower(); 
    746  
    747                 } 
    748                 //              else if (eegDevice == "Emotiv") { 
    749                 // 
    750                 //                      FragmentTabFlightEmotiv fragmentFlight =  
    751                 //                                      (FragmentTabFlightEmotiv) getSupportFragmentManager().findFragmentByTag( getTabFragmentFlightEmotiv() ); 
    752                 // 
    753                 //                      if (fragmentFlight != null) 
    754                 //                              eegPower = fragmentFlight.updatePower(); 
    755                 // 
    756                 //              } 
    757  
    758                 String command = ""; 
    759  
    760                 if (eegPower > 0) { 
    761  
    762                         /** Start playback of audio control stream */ 
    763                         if (currentCommand == "neutral") { 
    764                                 playControl(); 
    765                         } 
    766  
    767                         command = "hover"; 
    768  
    769                 } else { 
    770  
    771                         /** Land the helicopter */ 
    772                         stopControl(); 
    773  
    774                         command = "neutral"; 
    775                 } 
    776  
    777                 if (DEBUG) { 
    778                         Log.v(TAG, "Command: " + command); 
    779                         //                      appendDebugConsole("Command: " + command + "\n"); 
    780                 } 
    781  
    782                 currentCommand = command; 
    783  
    784         } // updatePower 
     703//      public int calculateSignal(int signal) { 
     704// 
     705//              /**  
     706//               * The ThinkGear protocol states that a signal level of 200 will be 
     707//               * returned when a clean ground/reference is not detected at the ear clip, 
     708//               *  and a value of 0 when the signal is perfectly clear. We need to 
     709//               *  convert this information into usable settings for the Signal 
     710//               *  progress bar 
     711//               */ 
     712// 
     713//              int value; 
     714// 
     715//              switch (signal) { 
     716//              case 200: 
     717//                      value = 0; 
     718//              case 0: 
     719//                      value = 100; 
     720//              default: 
     721//                      value = (int)(100 - ((signal / 200.0) * 100)); 
     722//              } 
     723// 
     724//              return(value); 
     725// 
     726//      } // calculateSignal 
     727 
     728 
     729        // ################################################################ 
     730 
     731//      public void updatePower() { 
     732// 
     733//              /** 
     734//               * This method updates the power level of the  
     735//               * "Throttle" and triggers the audio stream 
     736//               * which is used to fly the helicopter 
     737//               */ 
     738// 
     739//              if (eegDevice == "ThinkGear") { 
     740// 
     741//                      FragmentTabFlightThinkGear fragmentFlight =  
     742//                                      (FragmentTabFlightThinkGear) getSupportFragmentManager().findFragmentByTag( getTabFragmentFlightThinkGear() ); 
     743// 
     744//                      if (fragmentFlight != null) 
     745//                              eegPower = fragmentFlight.updatePower(); 
     746// 
     747//              } 
     748//              //              else if (eegDevice == "Emotiv") { 
     749//              // 
     750//              //                      FragmentTabFlightEmotiv fragmentFlight =  
     751//              //                                      (FragmentTabFlightEmotiv) getSupportFragmentManager().findFragmentByTag( getTabFragmentFlightEmotiv() ); 
     752//              // 
     753//              //                      if (fragmentFlight != null) 
     754//              //                              eegPower = fragmentFlight.updatePower(); 
     755//              // 
     756//              //              } 
     757// 
     758//              String command = ""; 
     759// 
     760//              if (eegPower > 0) { 
     761// 
     762//                      /** Start playback of audio control stream */ 
     763//                      if (currentCommand == "neutral") { 
     764//                              playControl(); 
     765//                      } 
     766// 
     767//                      command = "hover"; 
     768// 
     769//              } else { 
     770// 
     771//                      /** Land the helicopter */ 
     772//                      stopControl(); 
     773// 
     774//                      command = "neutral"; 
     775//              } 
     776// 
     777//              if (DEBUG) { 
     778//                      Log.v(TAG, "Command: " + command); 
     779//                      //                      appendDebugConsole("Command: " + command + "\n"); 
     780//              } 
     781// 
     782//              currentCommand = command; 
     783// 
     784//      } // updatePower 
    785785 
    786786 
Note: See TracChangeset for help on using the changeset viewer.