Changes in / [f22b7ab:a2d894c] in orbit


Ignore:
Location:
android
Files:
2 added
1 edited

Legend:

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

    r1a53973 r2fc778c  
    1010import com.neurosky.thinkgear.TGDevice; 
    1111 
     12import android.media.AudioFormat; 
     13import android.media.AudioManager; 
     14import android.media.AudioTrack; 
     15import android.media.SoundPool; 
     16import android.media.SoundPool.OnLoadCompleteListener; 
    1217import android.os.Bundle; 
    1318import android.os.Handler; 
     
    2227import android.graphics.drawable.shapes.RoundRectShape; 
    2328import android.hardware.usb.UsbManager; 
     29import android.util.Log; 
    2430import android.view.Gravity; 
    2531//import android.view.Menu; 
     
    9197        //private static final String MAC_ADDRESS = "00:16:53:09:0B:B9"; 
    9298 
     99         
     100         
     101//      2012.11.28-orbit-hdmi-android-manual_from_untitled08.wav 
     102        private SoundPool soundPool; 
     103        private int soundID; 
     104        boolean loaded = false; 
     105         
     106        // Tone Generator 
     107        // http://stackoverflow.com/questions/2413426/playing-an-arbitrary-tone-with-android 
     108        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         
    93151        /** 
    94152         * The device currently in use, or {@code null}. 
     
    207265                serial = new SerialDevice(); 
    208266                serial.setSerialDevice(mSerialDevice); 
     267                 
     268                 
     269                genTone(); 
     270                //playSound(); 
     271                 
     272                 
     273                // 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); 
    209285 
    210286 
     
    520596 
    521597        public void demoMode(View view) { 
    522  
    523                 String command = "neutral"; 
    524                  
    525                 appendTextAndScroll("Command for serial device: " + command + "\n"); 
    526                 serial.setCommand(command); 
    527  
    528                 try { 
    529                         Thread.sleep(5000); 
    530                 } catch (InterruptedException e) { 
    531                         // TODO Auto-generated catch block 
    532                         e.printStackTrace(); 
    533                 } 
    534  
    535 //              command = "hover"; 
    536                 command = "idle"; 
    537                 appendTextAndScroll("Command for serial device: " + command + "\n"); 
    538                 serial.setCommand(command); 
    539  
    540                 try { 
    541                         Thread.sleep(2500); 
    542                 } catch (InterruptedException e) { 
    543                         // TODO Auto-generated catch block 
    544                         e.printStackTrace(); 
    545                 }                
    546  
    547  
    548                 command = "neutral"; 
    549                 appendTextAndScroll("Command for serial device: " + command + "\n"); 
    550                 serial.setCommand(command); 
     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); 
    551644 
    552645 
Note: See TracChangeset for help on using the changeset viewer.