tuttelikz

Android _ v5 [+]

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