tuttelikz

Kulak

Oct 1st, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.87 KB | None | 0 0
  1. package com.example.iptea.audio22;
  2.  
  3. import android.media.AudioFormat;
  4. import android.media.AudioManager;
  5. import android.media.AudioTrack;
  6. import android.media.Image;
  7. import android.os.CountDownTimer;
  8. import android.support.v7.app.AppCompatActivity;
  9. import android.os.Bundle;
  10. import android.view.MotionEvent;
  11. import android.view.View;
  12. import android.widget.Button;
  13. import android.widget.ImageView;
  14. import android.widget.SeekBar;
  15. import android.widget.TextView;
  16.  
  17. import org.w3c.dom.Text;
  18. import android.view.View;
  19. public class MainActivity extends AppCompatActivity {
  20.  
  21.     Thread t; //audio processing thread
  22.     int sr = 44100; //sampling rate
  23.     boolean isRunning = true; //audio on off
  24.  
  25.     SeekBar fSlider;
  26.     double sliderval;
  27.     private static TextView text_view;
  28.     private static TextView text_view_max_freq;
  29.     Button buttonClicked;
  30.     Button stop;
  31.     public double fr = 440.f;
  32.     public int counter = 0;
  33.     public int int_count = 0;
  34.     public double max_frequency = 0;
  35.     @Override
  36.  
  37.     protected void onCreate(Bundle savedInstanceState) {
  38.         super.onCreate(savedInstanceState);
  39.         setContentView(R.layout.activity_main);
  40.         ImageView kulak = (ImageView)findViewById(R.id.imageView);
  41.         Button b = (Button)findViewById(R.id.button);
  42.         text_view_max_freq = (TextView)findViewById(R.id.textView4);
  43.         text_view = (TextView)findViewById(R.id.textView2);
  44.         //text_view.setText("Your highest hearing frequency is: " + String.valueOf(max_frequency) + "Hz");
  45.  
  46.         kulak.setOnTouchListener(new View.OnTouchListener() {
  47.             @Override
  48.             public boolean onTouch(View v, MotionEvent event) {
  49.  
  50.                 text_view_max_freq.setText("Your highest hearing frequency is: " + String.valueOf(max_frequency) + "Hz");
  51.                 //text_view.setText("Frequency: 0 Hz");
  52.  
  53.                 switch (event.getAction()) {
  54.                     case MotionEvent.ACTION_DOWN:
  55.                         isRunning = true;
  56.                         fSlider = (SeekBar) findViewById(R.id.frequency);
  57.  
  58.                         t = new Thread() {
  59.                             public void run() {
  60.                                 int buffsize = AudioTrack.getMinBufferSize(sr,
  61.                                         AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
  62.                                 AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
  63.                                         sr, AudioFormat.CHANNEL_OUT_MONO,
  64.                                         AudioFormat.ENCODING_PCM_16BIT, buffsize,
  65.                                         AudioTrack.MODE_STREAM);
  66.  
  67.                                 short samples[] = new short[buffsize];  //audio synthesis
  68.                                 int amp = 10000;
  69.  
  70.                                 double twopi = 8.*Math.atan(1.);
  71.                                 //double fr = 440.f;
  72.                                 double ph = 0.0;
  73.                                 // start audio
  74.                                 audioTrack.play();      //audio running
  75.                                 // synthesis loop
  76.                                 while(isRunning){   //synthesis loop
  77.  
  78.  
  79.                                     sliderval = counter*0.5 / fSlider.getMax();
  80.                                     //sliderval = fSlider.getProgress() / fSlider.getMax();
  81.                                     fr =  440 + 440*sliderval;
  82.  
  83.                                     for(int i=0; i < buffsize; i++){
  84.                                         samples[i] = (short) (amp*Math.sin(ph));
  85.                                         ph += twopi*fr/sr;
  86.                                     }
  87.                                     audioTrack.write(samples, 0, buffsize);
  88.  
  89.  
  90.                                     runOnUiThread(new Runnable() {
  91.                                         @Override
  92.                                         public void run() {
  93. /*                                            if (int_count == 0) {
  94.                                                 text_view.setText("Frequency: 0 Hz");
  95.                                             }*/
  96.                                             if (( counter % 10 ) == 0) {
  97.                                                 //text_view.setText("Frequency: " + String.valueOf(counter*1.5) + "Hz");
  98.                                                 text_view.setText("Frequency: " + String.valueOf(fr) + "Hz");
  99.  
  100.                                                 fSlider.setProgress(counter/89);  // counter/100
  101.                                                 counter = counter + 100;
  102.                                             }
  103.                                         }
  104.                                     });
  105.  
  106.                                     max_frequency = fr;
  107.                                     if (fr > 20000) {
  108.                                         counter = 0;
  109.                                     }
  110.                                 }
  111.                                 //isRunning = false;
  112.                                 counter = 0;
  113.  
  114.                                 audioTrack.stop();
  115.                                 audioTrack.release();
  116.  
  117.                             }
  118.                         };
  119.  
  120.                         t.start();
  121.                         return true;
  122.  
  123.                     case MotionEvent.ACTION_UP:
  124.                         isRunning = false;
  125.                         counter = 0;
  126.                         t = null;
  127.                         return true;
  128.                 }
  129.  
  130.                 return false;
  131.             }
  132.         });
  133.     }
  134.  
  135.     public void buttonStopClick(View v) {
  136.  
  137.     }
  138.  
  139.     public void onDestroy(){
  140.         super.onDestroy();
  141.         isRunning = false;
  142.         try {
  143.             t.join();
  144.         } catch (InterruptedException e) {
  145.             e.printStackTrace();
  146.         }
  147.         t = null;
  148.     }
  149. }
Advertisement
Add Comment
Please, Sign In to add comment