Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.iptea.audio22;
- import android.media.AudioFormat;
- import android.media.AudioManager;
- import android.media.AudioTrack;
- import android.os.CountDownTimer;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.view.MotionEvent;
- import android.view.View;
- import android.widget.Button;
- import android.widget.SeekBar;
- import android.widget.TextView;
- import org.w3c.dom.Text;
- import android.view.View;
- public class MainActivity extends AppCompatActivity {
- Thread t; //audio processing thread
- int sr = 44100; //sampling rate
- boolean isRunning = true; //audio on off
- SeekBar fSlider;
- double sliderval;
- private static TextView text_view;
- private static TextView text_view_max_freq;
- Button buttonClicked;
- Button stop;
- public double fr = 440.f;
- public int counter = 0;
- public int int_count = 0;
- public double max_frequency = 0;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- Button b = (Button)findViewById(R.id.button);
- text_view_max_freq = (TextView)findViewById(R.id.textView4);
- text_view = (TextView)findViewById(R.id.textView2);
- //text_view.setText("Your highest hearing frequency is: " + String.valueOf(max_frequency) + "Hz");
- b.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- text_view_max_freq.setText("Your highest hearing frequency is: " + String.valueOf(max_frequency) + "Hz");
- //text_view.setText("Frequency: 0 Hz");
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- isRunning = true;
- fSlider = (SeekBar) findViewById(R.id.frequency);
- t = new Thread() {
- public void run() {
- int buffsize = AudioTrack.getMinBufferSize(sr,
- AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
- AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
- sr, AudioFormat.CHANNEL_OUT_MONO,
- AudioFormat.ENCODING_PCM_16BIT, buffsize,
- AudioTrack.MODE_STREAM);
- short samples[] = new short[buffsize]; //audio synthesis
- int amp = 10000;
- double twopi = 8.*Math.atan(1.);
- //double fr = 440.f;
- double ph = 0.0;
- // start audio
- audioTrack.play(); //audio running
- // synthesis loop
- while(isRunning){ //synthesis loop
- sliderval = counter*0.5 / fSlider.getMax();
- //sliderval = fSlider.getProgress() / fSlider.getMax();
- fr = 440 + 440*sliderval;
- for(int i=0; i < buffsize; i++){
- samples[i] = (short) (amp*Math.sin(ph));
- ph += twopi*fr/sr;
- }
- audioTrack.write(samples, 0, buffsize);
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- /* if (int_count == 0) {
- text_view.setText("Frequency: 0 Hz");
- }*/
- if (( counter % 10 ) == 0) {
- //text_view.setText("Frequency: " + String.valueOf(counter*1.5) + "Hz");
- text_view.setText("Frequency: " + String.valueOf(fr) + "Hz");
- fSlider.setProgress(counter/89); // counter/100
- counter = counter + 100;
- }
- }
- });
- max_frequency = fr;
- if (fr > 20000) {
- counter = 0;
- }
- }
- //isRunning = false;
- counter = 0;
- audioTrack.stop();
- audioTrack.release();
- }
- };
- t.start();
- return true;
- case MotionEvent.ACTION_UP:
- isRunning = false;
- counter = 0;
- t = null;
- return true;
- }
- return false;
- }
- });
- }
- public void buttonStopClick(View v) {
- }
- public void onDestroy(){
- super.onDestroy();
- isRunning = false;
- try {
- t.join();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- t = null;
- }
- }
Add Comment
Please, Sign In to add comment