Changeset 5b7f570 in orbit for android/src


Ignore:
Timestamp:
11/29/12 19:40:56 (8 years ago)
Author:
Steve Castellotti <sc@…>
Branches:
master, RawEEG, Raw_EEG_Plot, Servo, Tab_Interface, pyramid
Children:
dccf843, e3d7c4a
Parents:
389c84b
Message:
  • First working version with IR Dongle for HTC One X
File:
1 edited

Legend:

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

    r2fc778c r5b7f570  
    4343public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener { 
    4444 
    45 //    @Override 
    46 //    public void onCreate(Bundle savedInstanceState) { 
    47 //        super.onCreate(savedInstanceState); 
    48 //        setContentView(R.layout.activity_main); 
    49 //        getActionBar().setDisplayHomeAsUpEnabled(true); 
    50 //    } 
    51 // 
    52 //    @Override 
    53 //    public boolean onCreateOptionsMenu(Menu menu) { 
    54 //        getMenuInflater().inflate(R.menu.activity_main, menu); 
    55 //        return true; 
    56 //    } 
    57 // 
    58 //     
    59 //    @Override 
    60 //    public boolean onOptionsItemSelected(MenuItem item) { 
    61 //        switch (item.getItemId()) { 
    62 //            case android.R.id.home: 
    63 //                NavUtils.navigateUpFromSameTask(this); 
    64 //                return true; 
    65 //        } 
    66 //        return super.onOptionsItemSelected(item); 
    67 //    } 
    68          
     45        //    @Override 
     46        //    public void onCreate(Bundle savedInstanceState) { 
     47        //        super.onCreate(savedInstanceState); 
     48        //        setContentView(R.layout.activity_main); 
     49        //        getActionBar().setDisplayHomeAsUpEnabled(true); 
     50        //    } 
     51        // 
     52        //    @Override 
     53        //    public boolean onCreateOptionsMenu(Menu menu) { 
     54        //        getMenuInflater().inflate(R.menu.activity_main, menu); 
     55        //        return true; 
     56        //    } 
     57        // 
     58        //     
     59        //    @Override 
     60        //    public boolean onOptionsItemSelected(MenuItem item) { 
     61        //        switch (item.getItemId()) { 
     62        //            case android.R.id.home: 
     63        //                NavUtils.navigateUpFromSameTask(this); 
     64        //                return true; 
     65        //        } 
     66        //        return super.onOptionsItemSelected(item); 
     67        //    } 
     68 
    6969        BluetoothAdapter bluetoothAdapter; 
    7070 
     
    8787        SerialDevice serial; 
    8888        int serialBaudRate = 9600; 
    89 //      int serialBaudRate = 133333; 
     89        //      int serialBaudRate = 133333; 
    9090 
    9191 
     
    9595 
    9696        private static final String MAC_ADDRESS = "D0:DF:9A:69:5D:42"; // MindWave Mobile Dev (p1-dev-60-01) 
    97         //private static final String MAC_ADDRESS = "00:16:53:09:0B:B9"; 
    98  
    99          
    100          
    101 //      2012.11.28-orbit-hdmi-android-manual_from_untitled08.wav 
     97//      private static final String MAC_ADDRESS = "9C:B7:0D:5E:E5:6A"; // UK So Television 
     98//      private static final String MAC_ADDRESS = "00:16:53:09:0B:B9"; 
     99 
     100 
     101 
     102        String currentCommand = "neutral"; 
     103 
     104        //      2012.11.28-orbit-hdmi-android-manual_from_untitled08.wav 
    102105        private SoundPool soundPool; 
    103106        private int soundID; 
    104107        boolean loaded = false; 
    105          
     108 
     109 
    106110        // Tone Generator 
    107111        // http://stackoverflow.com/questions/2413426/playing-an-arbitrary-tone-with-android 
    108112        private final int duration = 10; // seconds 
    109     private final int sampleRate = 8000; 
    110     private final int numSamples = duration * sampleRate; 
    111     private final double sample[] = new double[numSamples]; 
    112     private final double freqOfTone = 440; // hz 
    113      
    114     private final byte generatedSnd[] = new byte[2 * numSamples]; 
    115          
    116      
    117     void genTone(){ 
    118         // fill out the array 
    119         for (int i = 0; i < numSamples; ++i) { 
    120             sample[i] = Math.sin(2 * Math.PI * i / (sampleRate/freqOfTone)); 
    121         } 
    122  
    123         // convert to 16 bit pcm sound array 
    124         // assumes the sample buffer is normalized. 
    125         int idx = 0; 
    126         for (final double dVal : sample) { 
    127             // scale to maximum amplitude 
    128             final short val = (short) ((dVal * 32767)); 
    129             // in 16 bit wav PCM, first byte is the low order byte 
    130             generatedSnd[idx++] = (byte) (val & 0x00ff); 
    131             generatedSnd[idx++] = (byte) ((val & 0xff00) >>> 8); 
    132  
    133         } 
    134     } 
    135  
    136     void playSound(){ 
    137         @SuppressWarnings("deprecation") 
    138                 final AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 
    139 //                sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO, 
    140               sampleRate, AudioFormat.CHANNEL_OUT_MONO, 
    141 //              sampleRate, AudioFormat.CHANNEL_OUT_STEREO, 
    142 //                sampleRate, AudioFormat.CHANNEL_OUT_FRONT_RIGHT, 
    143 //                sampleRate, AudioFormat.CHANNEL_CONFIGURATION_STEREO, 
    144                 AudioFormat.ENCODING_PCM_16BIT, generatedSnd.length, 
    145                 AudioTrack.MODE_STATIC); 
    146         audioTrack.write(generatedSnd, 0, generatedSnd.length); 
    147         audioTrack.play(); 
    148     } 
    149          
    150          
     113        private final int sampleRate = 8000; 
     114        private final int numSamples = duration * sampleRate; 
     115        private final double sample[] = new double[numSamples]; 
     116        private final double freqOfTone = 440; // hz 
     117 
     118        private final byte generatedSnd[] = new byte[2 * numSamples]; 
     119 
     120 
    151121        /** 
    152122         * The device currently in use, or {@code null}. 
     
    265235                serial = new SerialDevice(); 
    266236                serial.setSerialDevice(mSerialDevice); 
    267                  
    268                  
     237 
     238 
    269239                genTone(); 
    270                 //playSound(); 
    271                  
    272                  
     240                //playTone(); 
     241 
     242 
    273243                // Set the hardware buttons to control the music 
    274             this.setVolumeControlStream(AudioManager.STREAM_MUSIC); 
    275             // Load the sound 
    276             soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 
    277             soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { 
    278 //            @Override 
    279               public void onLoadComplete(SoundPool soundPool, int sampleId, 
    280                   int status) { 
    281                 loaded = true; 
    282               } 
    283             }); 
    284             soundID = soundPool.load(this, R.raw.htc_one_x, 1); 
     244                this.setVolumeControlStream(AudioManager.STREAM_MUSIC); 
     245                // Load the sound 
     246                soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 
     247                soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { 
     248                        //            @Override 
     249                        public void onLoadComplete(SoundPool soundPool, int sampleId, 
     250                                        int status) { 
     251                                loaded = true; 
     252                        } 
     253                }); 
     254                //              soundID = soundPool.load(this, R.raw.throttle_max_android_common, 1); 
     255                //              soundID = soundPool.load(this, R.raw.throttle_min_android_common, 1); 
     256                soundID = soundPool.load(this, R.raw.throttle_max_android_htc_one_x, 1); 
    285257 
    286258 
     
    440412 
    441413 
    442         } 
     414        } // connectHeadset 
    443415 
    444416 
     
    480452                updatePower(); 
    481453 
    482         } 
     454        } // onProgressChanged 
    483455 
    484456 
    485457        public void onStartTrackingTouch(SeekBar seekBar) { 
    486458                //appendTextAndScroll(getString(R.string.seekbar_tracking_on)); 
    487         } 
     459        } // onStartTrackingTouch 
    488460 
    489461 
    490462        public void onStopTrackingTouch(SeekBar seekBar) { 
    491463                //appendTextAndScroll(getString(R.string.seekbar_tracking_off)); 
    492         } 
     464        } // onStopTrackingTouch 
    493465 
    494466 
     
    547519                } 
    548520 
    549         } 
     521        } // updatePowerThresholds 
    550522 
    551523 
     
    553525 
    554526                int new_speed = calculateSpeed(); 
    555                 String command; 
     527                String command = ""; 
    556528                progressBarPower.setProgress(new_speed); 
    557529 
    558530                if (new_speed > 0) { 
     531 
     532                        if (currentCommand == "neutral") { 
     533                                playControl(); 
     534                        } 
     535 
    559536                        command = "hover"; 
     537 
    560538                } else { 
     539 
     540                        if (currentCommand == "hover") { 
     541                                stopControl(); 
     542                        } 
     543 
    561544                        command = "neutral"; 
    562545                } 
     
    572555                } 
    573556 
    574         } 
     557                currentCommand = command; 
     558 
     559        } // updatePower 
    575560 
    576561 
     
    592577                return(command); 
    593578 
     579        } // getPowerCommand 
     580 
     581 
     582        public void playControl() { 
     583 
     584                // Getting the user sound settings 
     585                AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
     586                float actualVolume = (float) audioManager 
     587                                .getStreamVolume(AudioManager.STREAM_MUSIC); 
     588                float maxVolume = (float) audioManager 
     589                                .getStreamMaxVolume(AudioManager.STREAM_MUSIC); 
     590                float volume = actualVolume / maxVolume; 
     591                // Is the sound loaded already? 
     592                if (loaded) { 
     593                        soundPool.play(soundID, volume, volume, 1, 0, 1f); 
     594                        Log.e("Test", "Played sound"); 
     595                } 
     596 
     597        } // playControl 
     598 
     599 
     600        public void stopControl() { 
     601 
     602                try { 
     603                        soundPool.stop(soundID); 
     604                } catch (Exception e) { 
     605                        // TODO Auto-generated catch block 
     606                        e.printStackTrace(); 
     607                } 
     608 
    594609        } 
    595610 
    596611 
    597612        public void demoMode(View view) { 
    598                  
    599 //              playSound(); 
    600                  
    601                  
    602                 // Getting the user sound settings 
    603               AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
    604               float actualVolume = (float) audioManager 
    605                   .getStreamVolume(AudioManager.STREAM_MUSIC); 
    606               float maxVolume = (float) audioManager 
    607                   .getStreamMaxVolume(AudioManager.STREAM_MUSIC); 
    608               float volume = actualVolume / maxVolume; 
    609               // Is the sound loaded already? 
    610               if (loaded) { 
    611                 soundPool.play(soundID, volume, volume, 1, 0, 1f); 
    612                 Log.e("Test", "Played sound"); 
    613               }          
    614                  
    615  
    616 //              String command = "neutral"; 
    617 //               
    618 //              appendTextAndScroll("Command for serial device: " + command + "\n"); 
    619 //              serial.setCommand(command); 
    620 // 
    621 //              try { 
    622 //                      Thread.sleep(5000); 
    623 //              } catch (InterruptedException e) { 
    624 //                      // TODO Auto-generated catch block 
    625 //                      e.printStackTrace(); 
    626 //              } 
    627 // 
    628 ////            command = "hover"; 
    629 //              command = "idle"; 
    630 //              appendTextAndScroll("Command for serial device: " + command + "\n"); 
    631 //              serial.setCommand(command); 
    632 // 
    633 //              try { 
    634 //                      Thread.sleep(2500); 
    635 //              } catch (InterruptedException e) { 
    636 //                      // TODO Auto-generated catch block 
    637 //                      e.printStackTrace(); 
    638 //              }                
    639 // 
    640 // 
    641 //              command = "neutral"; 
    642 //              appendTextAndScroll("Command for serial device: " + command + "\n"); 
    643 //              serial.setCommand(command); 
     613 
     614                //              playTone(); 
     615 
     616                playControl(); 
     617 
     618 
     619 
     620                //              String command = "neutral"; 
     621                //               
     622                //              appendTextAndScroll("Command for serial device: " + command + "\n"); 
     623                //              serial.setCommand(command); 
     624                // 
     625                //              try { 
     626                //                      Thread.sleep(5000); 
     627                //              } catch (InterruptedException e) { 
     628                //                      // TODO Auto-generated catch block 
     629                //                      e.printStackTrace(); 
     630                //              } 
     631                // 
     632                ////            command = "hover"; 
     633                //              command = "idle"; 
     634                //              appendTextAndScroll("Command for serial device: " + command + "\n"); 
     635                //              serial.setCommand(command); 
     636                // 
     637                //              try { 
     638                //                      Thread.sleep(2500); 
     639                //              } catch (InterruptedException e) { 
     640                //                      // TODO Auto-generated catch block 
     641                //                      e.printStackTrace(); 
     642                //              }                
     643                // 
     644                // 
     645                //              command = "neutral"; 
     646                //              appendTextAndScroll("Command for serial device: " + command + "\n"); 
     647                //              serial.setCommand(command); 
    644648 
    645649 
     
    668672                return(speed); 
    669673 
    670         } 
     674        } // calculateSpeed 
    671675 
    672676 
     
    677681                        mSerialIoManager = null; 
    678682                } 
    679         } 
     683        } // stopIoManager 
    680684 
    681685 
     
    686690                        mExecutor.submit(mSerialIoManager); 
    687691                } 
    688         } 
     692        } // startIoManager 
    689693 
    690694 
     
    692696                stopIoManager(); 
    693697                startIoManager(); 
    694         } 
     698        } // onDeviceStateChange 
     699 
     700 
     701        void genTone(){ 
     702                // fill out the array 
     703                for (int i = 0; i < numSamples; ++i) { 
     704                        sample[i] = Math.sin(2 * Math.PI * i / (sampleRate/freqOfTone)); 
     705                } 
     706 
     707                // convert to 16 bit pcm sound array 
     708                // assumes the sample buffer is normalized. 
     709                int idx = 0; 
     710                for (final double dVal : sample) { 
     711                        // scale to maximum amplitude 
     712                        final short val = (short) ((dVal * 32767)); 
     713                        // in 16 bit wav PCM, first byte is the low order byte 
     714                        generatedSnd[idx++] = (byte) (val & 0x00ff); 
     715                        generatedSnd[idx++] = (byte) ((val & 0xff00) >>> 8); 
     716 
     717                } 
     718        } // genTone 
     719 
     720 
     721        void playTone(){ 
     722                @SuppressWarnings("deprecation") 
     723                final AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 
     724                                //                sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO, 
     725                                sampleRate, AudioFormat.CHANNEL_OUT_MONO, 
     726                                //              sampleRate, AudioFormat.CHANNEL_OUT_STEREO, 
     727                                //                sampleRate, AudioFormat.CHANNEL_OUT_FRONT_RIGHT, 
     728                                //                sampleRate, AudioFormat.CHANNEL_CONFIGURATION_STEREO, 
     729                                AudioFormat.ENCODING_PCM_16BIT, generatedSnd.length, 
     730                                AudioTrack.MODE_STATIC); 
     731                audioTrack.write(generatedSnd, 0, generatedSnd.length); 
     732                audioTrack.play(); 
     733        } // playTone 
     734 
    695735 
    696736} 
Note: See TracChangeset for help on using the changeset viewer.