Operator s Manual. minibht Audiometry Android App. Team 2. Samir Dahmani, Nihit Mody, Joseph Wolanski. Client: Dr. Oliver

Size: px
Start display at page:

Download "Operator s Manual. minibht Audiometry Android App. Team 2. Samir Dahmani, Nihit Mody, Joseph Wolanski. Client: Dr. Oliver"

Transcription

1 Operator s Manual minibht Audiometry Android App Team 2 Samir Dahmani, Nihit Mody, Joseph Wolanski Client: Dr. Oliver Farmington, CT UConn Health Center Table Of Contents:

2 1 Introduction 1.1 General Overview 1.2 Operating Instructions 2 Maintenance 3 Technical Description 1. Introduction

3 At the most basic level an audiogram is a screening test like that which is used in schools. A series of tones at fixed volumes are presented to the listener who then indicates which ones he or she can detect. PTA is a subjective and behavioral measurement of hearing threshold, because it relies on patient initiation of a response to acoustic stimuli. PTA is designed for clinical use on adults and children old enough to understand and execute the test procedure. Like the majority of clinical tests, calibration of the test environment, the equipment and the stimuli to ISO standards is pivotal, as PTA measures thresholds of hearing only (in contrast with other methods which delineate sound localization). Békésy audiometry is such that the patient, by pressing a signal button, traces monaural thresholds for pure tones: the intensity of the tone decreases as long as the button is depressed and increases when it is released; both continuous and interrupted tones are used. The Apps that are currently available on the various online stores bear little resemblance to the accuracy of a professional audiogram. This application presents the user with a reliable and clinically viable hearing screen for the user. This is thanks to measures taken to ensure calibration and standardization across testing conditions for the test.

4 pure tone audiometry 1.1 General Overview When the app is opened, a pure tone at a midrange frequency will come through the earphone. The subject will control the intensity of the stimulus by pressing a button while listening to a pulsing (0.5s) pure tone whose frequency slowly moves through the entire audible range. This is what is called an interrupted tone. The intensity diminishes as long as the button is depressed. When the intensity is too low for the subject to hear the tone, the button will be released and the intensity will start to increase. When the subject again hears the tone, the button will be pressed again, producing a zigzag trace. The test will involve diagnostics on each ear, after which the tracings of both the left and the right ear will be compared. The test will be usable to differentiate between cochlear and neural hearing losses. Below is a graph of the calibrated 250hz signal that was used for the test. The

5 testing set up includes a nexus 4 phone, and a pair of apple earbuds.

6 All of the signals are calibrated to generate a flat output. The user begins the test by opening the app and depressing the red button on the screen. Clicking the red button set the pulsating tones. The tones pulse at 0.4 second intervals. Pressing the button attenuates the volume of the pulsating tone gradually,

7 starting at a large interval and incrementing in smaller steps asymptotically towards 0dB. The user is asked to hold the button down until he/she can no longer hear the tone; once the tone is no longer audible, release the button until the pulse becomes audible again, then depress once again until the tone is again in-audible. Repeating this for the duration of the test, the test cycles through 6 frequencies, starting with the left ear, and then moving to the left ear. 1.2 Operating Instructions This test is a basic hearing test similar to what an audiologist would run. Your hearing will be tested, one ear at a time, for tones at six frequencies. After you press the red button, you will hear a low frequency tone in your left earphone only. It will be a repeating pulse at level that is easy to hear. Once you hear this sound, press the red button and hold it down. As you continue to hold down the red button, you will notice that the level of the sound will gradually decrease. The level will reach a point that is barely audible and then it will vanish. Just at the point you can no longer hear the sound, release the red button. Listen carefully, because the level of the sound will increase and it will emerge again. Do not wait for it to reach the easy-to-hear level. As soon as it is audible, hold down the red button to make it vanish again and release the red button just as it vanishes. You will repeat this process several times for the tone. After a few of these cycles of making the tone just vanish and re-emerge, your threshold for hearing that frequency will be recorded by the application and the next

8 higher frequency will be heard in in the earphone at an easy-to-hear starting level. The entire routine will be carried out for all six frequencies. After thresholds for all six frequencies have been recorded using your left ear, the entire process will be repeated for your right ear. In plain English, you hold the red button down until you just can t hear the sound anymore and you release the red button until you just can hear it again. Unpressed

9 Pressed The test takes minutes. When it has been completed, the screen changes and sound presentations cease.

10 After the test concludes, the you can view the results by clicking the results button. If the plot lines for each fall within the normal hearing range (-20db and 20db) then you have normal hearing. Points on the line falling out of the normal hearing range will denote a hearing drop off in those frequencies. 2. Maintenance THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 3. Technical Description the source code is listed below

11 import android.media.audiomanager; import android.media.mediaplayer; import android.media.soundpool; import android.os.bundle; import android.os.handler; import android.app.activity; import android.content.context; import android.content.intent; import android.util.log; import android.view.menu; import android.view.motionevent; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; public class MainActivity extends Activity SoundPool sp; MediaPlayer mp; int _toneselector; int tone1 = 0; int tone2 = 0; int tone3 = 0; int tone4 = 0; int tone5 = 0; int tone6 = 0; Handler handler = new Handler(); public void oncreate(bundle b) AudioManager audiomanager = (AudioManager) getsystemservice(context.audio_service); audiomanager.setstreamvolume(audiomanager.stream_music, 9, 0); super.oncreate(b); setcontentview(r.layout.main); Button b1 = (Button) findviewbyid(r.id.button); Button b2 = (Button) findviewbyid(r.id.button1); b1.setontouchlistener(handler1); Handler handler = new Handler(); Button buttonstart = (Button) findviewbyid(r.id.button1); buttonstart.setonclicklistener(startlistener); sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0); tone1 = sp.load(this, R.raw.f250hz, 1); tone2 = sp.load(this, R.raw.f500hz, 1); tone3 = sp.load(this, R.raw.f1000hz, 1); tone4 = sp.load(this, R.raw.f2000hz, 1); tone5 = sp.load(this, R.raw.f4000hz, 1); tone6 = sp.load(this, R.raw.f8000hz, 1);

12 View.OnTouchListener handler1 = new public boolean ontouch(view v, MotionEvent event) if (event.getaction() == android.view.motionevent.action_down) _downpress = true; storedvolumesl[0][numberofpress] = numberofpress; storedvolumesl[1][numberofpress] = voll; storedvolumesr[0][numberofpress] = numberofpress; storedvolumesr[1][numberofpress] = volr; numberofpress++; if (_firsttime == true) _toneselector = tone1; looptone(); else if (event.getaction() == android.view.motionevent.action_up) _downpress = false; storedvolumesl[0][numberofpress] = numberofpress; storedvolumesl[1][numberofpress] = voll; storedvolumesr[0][numberofpress] = numberofpress; storedvolumesr[1][numberofpress] = volr; numberofpress++; System.out.println(volL); return false; ; public void looptone() _firsttime = false; Thread thread = new public void run() while (_flag == false) channelswitcher(); // check to see if left ear is done, if // so switch channel freqcount(); sp.play(_toneselector, voll, volr, 0, 0, 1);

13 if (_downpress == true) incrementer = 2 / 3; else incrementer = 3 / 2; System.out.println("Left volume: " + voll + ", " + " Right volume: " + volr); try sleep(1000); attenuatevolume(); getsystemservice(context.audio_service); // calls attenuate volume method // below AudioManager audiomanager = (AudioManager) audiomanager.setstreamvolume(audiomanager.stream_music, 9, 0); // from 0-15? System.gc(); catch (InterruptedException e) if (numberofpress >= 12 * _intervals+2) break; /*for (int i = 0; i < 6; i++) System.out.println(critpointsL[i]); System.out.println(critpointsR[i]); */ ; thread.start(); public void freqcount() System.out.println("NUMBER OF PRESSES: " + numberofpress); // System.out.println("NUMBER OF INTERVALS: " + _intervals); if (_launch250hz == true) // System.out.println("NUMPRESSES: " + numberofpress); _toneselector = tone1; _globalvol = _250hzVol; voll = _globalvol;

14 _launch250hz = false; // test rotate if (numberofpress == _intervals) totalnum = totalnum + storedvolumesl[1][i + 2]; critpointsl[0] = totalnum / 4; _toneselector = tone2; _globalvol = _500hzVol; voll = _globalvol; if (numberofpress == 2 * _intervals) totalnum = totalnum + storedvolumesl[1][i ]; critpointsl[1] = totalnum / 4; _toneselector = tone3; _globalvol = _1000hzVol; voll = _globalvol; if (numberofpress == 3 * _intervals) totalnum = totalnum + storedvolumesl[1][i ]; critpointsl[2] = totalnum / 4; _toneselector = tone4; _globalvol = _2000hzVol; voll = _globalvol; if (numberofpress == 4 * _intervals) totalnum = totalnum + storedvolumesl[1][i ]; critpointsl[3] = totalnum / 4;

15 _toneselector = tone5; _globalvol = _4000hzVol; voll = _globalvol; if (numberofpress == 5 * _intervals) totalnum = totalnum + storedvolumesl[1][i ]; critpointsl[4] = totalnum / 4; _toneselector = tone6; _globalvol = _8000hzVol; voll = _globalvol; /* * this is when the left ear is done and switches to the right ear this * is when the left ear is done and switches to the right ear this is * when the left ear is done and switches to the right ear */ if (numberofpress == 6 * _intervals) totalnum = totalnum + storedvolumesl[1][i ]; critpointsl[5] = totalnum / 4; _toneselector = tone1; _globalvol = _250hzVol; if (numberofpress == 7 * _intervals) totalnum = totalnum + storedvolumesr[1][i ]; critpointsr[0] = totalnum / 4; _toneselector = tone2; _globalvol = _500hzVol;

16 if (numberofpress == 8 * _intervals) totalnum = totalnum + storedvolumesr[1][i ]; critpointsr[1] = totalnum / 4; _toneselector = tone3; _globalvol = _1000hzVol; if (numberofpress == 9 * _intervals) totalnum = totalnum + storedvolumesr[1][i ]; critpointsr[2] = totalnum / 4; _toneselector = tone4; _globalvol = _2000hzVol; if (numberofpress == 10 * _intervals) totalnum = totalnum + storedvolumesr[1][i ]; critpointsr[3] = totalnum / 4; _toneselector = tone5; _globalvol = _4000hzVol; if (numberofpress == 11 * _intervals) totalnum = totalnum + storedvolumesr[1][i ]; critpointsr[4] = totalnum / 4; _toneselector = tone6; _globalvol = _8000hzVol;

17 if(numberofpress == 12*_intervals +1) totalnum = totalnum + storedvolumesr[1][i ]; critpointsr[5] = totalnum / 4; for (int i = 0; i < 6; i++) System.out.println(critpointsL[i]); System.out.println(critpointsR[i]); sp.stop(_toneselector); sp.release(); public void attenuatevolume() if (_lefteardone == false) // if left ear running if ((_downpress == true) && ((numberofpress%6)<2)) System.out.println("TRUEEEEEEEEEEEEE!!!!!!!!!!!!!!!!"); voll = (float) (voll * 1 / 2); if ((_downpress == true) && (numberofpress%6)>=2) voll = (float) (voll * 9 / 10); if ((_downpress!= true) && ((numberofpress%6)<2)) voll = (float) (voll * 2 / 1); if ((_downpress!= true) && ((numberofpress%6)>=2)) voll = (float) (voll * 10 / 9); if (numberofpress >= 6 * _intervals) // _toneselector = tone1; // _intervals =0; _lefteardone = true; // numberofpress = 0; if ((_downpress == true) && ((numberofpress%6)<2)) System.out.println("DOWNPRESSED");

18 volr = (float) (volr * 1 / 2); if ((_downpress == true) && ((numberofpress%6)>=2)) volr = (float) (volr * 9 / 10); if ((_downpress!= true) && ((numberofpress%6)<2)) System.out.println("UP PRESSED"); volr = (float) (volr * 2 / 1); if ((_downpress!= true) && ((numberofpress%6)>=2)) volr = (float) (volr * 10 / 9); if (voll <= 0) voll = 0; if (voll >= _globalvol) voll = _globalvol; if (volr <= 0) volr = 0; if (volr >= _globalvol) boolean _rightearstarted; public void channelswitcher() if (_lefteardone == true && oneshot == 0) voll = 0; _rightearstarted = false; oneshot++; if (_rightearstarted == false && oneshot == 1) System.out.println("FALSE"); _rightearstarted = true; oneshot++; System.out.println(oneShot); View.OnTouchListener handler2 = new public boolean ontouch(view v, MotionEvent event) if (event.getaction() == android.view.motionevent.action_down)

19 sp.play(_toneselector, voll, volr, 0, 0, 1); // System.out.println("CURRENT VOLUME: " + voll); else if (event.getaction() == android.view.motionevent.action_up) return false; ; private OnClickListener startlistener = new OnClickListener() public void onclick(view view) System.out.println("BUTTON PRESSED!"); Intent myintent = new Intent(view.getContext(), XYPlotter.class); startactivityforresult(myintent, 0); ; public static double[] getvaluesl() return critpointsl; public static double[] getvaluesr() return critpointsr; private final double duration = 0.4; // seconds private final int samplerate = 8000; private final double numsamples = duration * samplerate; private final double sample[] = new double[(int) numsamples]; private double freqoftone = 250; int freqcounter = 0; /** hz **/ // BOOLEANS private boolean _freq1; private float _channel = 1; boolean _lefteardone = false; boolean _launch250hz = true; // ****************** private byte generatedsnd[] = new byte[(int) (2 * numsamples)]; // volumes float voll = (float) 0; float volr = (float) 0; double decrvol; double incrementer = 2 / 3; double _attenuationamount = 0.09; float _globalvol; // frequency volumes for earbud offset

20 float _250hzVol = (float) 0.45; float _500hzVol = (float) 0.37; float _1000hzVol = (float) 0.36; float _2000hzVol = (float) 0.24; float _4000hzVol = (float) 0.16; float _8000hzVol = (float) 0.78; int numberofpress = 0; int numbeeps = 6; // BOOLEANS boolean _downpress; boolean _flag = false; boolean _firsttime = true; boolean leftearcomplete = false; private int idx; private double storedvalues[] = new double[(int) duration]; private static double critpointsl[] = new double[6]; private static double critpointsr[] = new double[6]; private int _intervals = 6; private double totalnum = 0; private double totalnum1 = 0; int count = 0; int _touchdowncounter = 0; int _touchcounter = 0; int _freqcounter = 0; private double _datapoints[] = new double[4000]; private double storedvolumesl[][] = new double[2][1000]; private double storedvolumesr[][] = new double[2][1000]; int oneshot = 0; int _teststage = 0; /* * protected void onresume() super.onresume(); final Thread thread = new * Thread(new Runnable() public void run() * * // gentone(); handler.post(new Runnable() public void run() * * // playsound(); ); ); thread.start(); */

21 import android.media.audiomanager; import android.media.mediaplayer; import android.media.soundpool; import android.os.bundle; import android.os.handler; import android.app.activity; import android.content.context; import android.content.intent; import android.util.log; import android.view.menu; import android.view.motionevent; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; public class MainActivity extends Activity SoundPool sp; MediaPlayer mp; int _toneselector; int tone1 = 0; int tone2 = 0; int tone3 = 0; int tone4 = 0; int tone5 = 0; int tone6 = 0; Handler handler = new Handler(); public void oncreate(bundle b) AudioManager audiomanager = (AudioManager) getsystemservice(context.audio_service); audiomanager.setstreamvolume(audiomanager.stream_music, 9, 0); super.oncreate(b); setcontentview(r.layout.main); Button b1 = (Button) findviewbyid(r.id.button); Button b2 = (Button) findviewbyid(r.id.button1); b1.setontouchlistener(handler1); Handler handler = new Handler(); Button buttonstart = (Button) findviewbyid(r.id.button1); buttonstart.setonclicklistener(startlistener); sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0); tone1 = sp.load(this, R.raw.f250hz, 1); tone2 = sp.load(this, R.raw.f500hz, 1); tone3 = sp.load(this, R.raw.f1000hz, 1); tone4 = sp.load(this, R.raw.f2000hz, 1); tone5 = sp.load(this, R.raw.f4000hz, 1); tone6 = sp.load(this, R.raw.f8000hz, 1);

22 View.OnTouchListener handler1 = new public boolean ontouch(view v, MotionEvent event) if (event.getaction() == android.view.motionevent.action_down) _downpress = true; storedvolumesl[0][numberofpress] = numberofpress; storedvolumesl[1][numberofpress] = voll; storedvolumesr[0][numberofpress] = numberofpress; storedvolumesr[1][numberofpress] = volr; numberofpress++; if (_firsttime == true) _toneselector = tone1; looptone(); else if (event.getaction() == android.view.motionevent.action_up) _downpress = false; storedvolumesl[0][numberofpress] = numberofpress; storedvolumesl[1][numberofpress] = voll; storedvolumesr[0][numberofpress] = numberofpress; storedvolumesr[1][numberofpress] = volr; numberofpress++; System.out.println(volL); return false; ; public void looptone() _firsttime = false; Thread thread = new public void run() while (_flag == false) channelswitcher(); // check to see if left ear is done, if // so switch channel

23 freqcount(); sp.play(_toneselector, voll, volr, 0, 0, 1); if (_downpress == true) incrementer = 2 / 3; else incrementer = 3 / 2; System.out.println("Left volume: " + voll + ", " + " Right volume: " + volr); try sleep(1000); attenuatevolume(); getsystemservice(context.audio_service); // calls attenuate volume method // below AudioManager audiomanager = (AudioManager) audiomanager.setstreamvolume(audiomanager.stream_music, 9, 0); // from 0-15? System.gc(); catch (InterruptedException e) if (numberofpress >= 12 * _intervals+2) break; /*for (int i = 0; i < 6; i++) System.out.println(critpointsL[i]); System.out.println(critpointsR[i]); */ ; thread.start(); public void freqcount() System.out.println("NUMBER OF PRESSES: " + numberofpress); // System.out.println("NUMBER OF INTERVALS: " + _intervals); if (_launch250hz == true) // System.out.println("NUMPRESSES: " + numberofpress); _toneselector = tone1;

24 _globalvol = _250hzVol; voll = _globalvol; _launch250hz = false; // test rotate if (numberofpress == _intervals) totalnum = totalnum + storedvolumesl[1][i + 2]; critpointsl[0] = totalnum / 4; _toneselector = tone2; _globalvol = _500hzVol; voll = _globalvol; if (numberofpress == 2 * _intervals) totalnum = totalnum + storedvolumesl[1][i ]; critpointsl[1] = totalnum / 4; _toneselector = tone3; _globalvol = _1000hzVol; voll = _globalvol; if (numberofpress == 3 * _intervals) totalnum = totalnum + storedvolumesl[1][i ]; critpointsl[2] = totalnum / 4; _toneselector = tone4; _globalvol = _2000hzVol; voll = _globalvol; if (numberofpress == 4 * _intervals) totalnum = totalnum + storedvolumesl[1][i ];

25 critpointsl[3] = totalnum / 4; _toneselector = tone5; _globalvol = _4000hzVol; voll = _globalvol; if (numberofpress == 5 * _intervals) totalnum = totalnum + storedvolumesl[1][i ]; critpointsl[4] = totalnum / 4; _toneselector = tone6; _globalvol = _8000hzVol; voll = _globalvol; /* * this is when the left ear is done and switches to the right ear this * is when the left ear is done and switches to the right ear this is * when the left ear is done and switches to the right ear */ if (numberofpress == 6 * _intervals) totalnum = totalnum + storedvolumesl[1][i ]; critpointsl[5] = totalnum / 4; _toneselector = tone1; _globalvol = _250hzVol; if (numberofpress == 7 * _intervals) totalnum = totalnum + storedvolumesr[1][i ]; critpointsr[0] = totalnum / 4; _toneselector = tone2; _globalvol = _500hzVol;

26 if (numberofpress == 8 * _intervals) totalnum = totalnum + storedvolumesr[1][i ]; critpointsr[1] = totalnum / 4; _toneselector = tone3; _globalvol = _1000hzVol; if (numberofpress == 9 * _intervals) totalnum = totalnum + storedvolumesr[1][i ]; critpointsr[2] = totalnum / 4; _toneselector = tone4; _globalvol = _2000hzVol; if (numberofpress == 10 * _intervals) totalnum = totalnum + storedvolumesr[1][i ]; critpointsr[3] = totalnum / 4; _toneselector = tone5; _globalvol = _4000hzVol; if (numberofpress == 11 * _intervals) totalnum = totalnum + storedvolumesr[1][i ]; critpointsr[4] = totalnum / 4; _toneselector = tone6; _globalvol = _8000hzVol;

27 if(numberofpress == 12*_intervals +1) totalnum = totalnum + storedvolumesr[1][i ]; critpointsr[5] = totalnum / 4; for (int i = 0; i < 6; i++) System.out.println(critpointsL[i]); System.out.println(critpointsR[i]); sp.stop(_toneselector); sp.release(); public void attenuatevolume() if (_lefteardone == false) // if left ear running if ((_downpress == true) && ((numberofpress%6)<2)) System.out.println("TRUEEEEEEEEEEEEE!!!!!!!!!!!!!!!!"); voll = (float) (voll * 1 / 2); if ((_downpress == true) && (numberofpress%6)>=2) voll = (float) (voll * 9 / 10); if ((_downpress!= true) && ((numberofpress%6)<2)) voll = (float) (voll * 2 / 1); if ((_downpress!= true) && ((numberofpress%6)>=2)) voll = (float) (voll * 10 / 9); if (numberofpress >= 6 * _intervals) // _toneselector = tone1; // _intervals =0; _lefteardone = true; // numberofpress = 0; if ((_downpress == true) && ((numberofpress%6)<2))

28 System.out.println("DOWNPRESSED"); volr = (float) (volr * 1 / 2); if ((_downpress == true) && ((numberofpress%6)>=2)) volr = (float) (volr * 9 / 10); if ((_downpress!= true) && ((numberofpress%6)<2)) System.out.println("UP PRESSED"); volr = (float) (volr * 2 / 1); if ((_downpress!= true) && ((numberofpress%6)>=2)) volr = (float) (volr * 10 / 9); if (voll <= 0) voll = 0; if (voll >= _globalvol) voll = _globalvol; if (volr <= 0) volr = 0; if (volr >= _globalvol) boolean _rightearstarted; public void channelswitcher() if (_lefteardone == true && oneshot == 0) voll = 0; _rightearstarted = false; oneshot++; if (_rightearstarted == false && oneshot == 1) System.out.println("FALSE"); _rightearstarted = true; oneshot++; System.out.println(oneShot); View.OnTouchListener handler2 = new public boolean ontouch(view v, MotionEvent event)

29 if (event.getaction() == android.view.motionevent.action_down) sp.play(_toneselector, voll, volr, 0, 0, 1); // System.out.println("CURRENT VOLUME: " + voll); else if (event.getaction() == android.view.motionevent.action_up) return false; ; private OnClickListener startlistener = new OnClickListener() public void onclick(view view) System.out.println("BUTTON PRESSED!"); Intent myintent = new Intent(view.getContext(), XYPlotter.class); startactivityforresult(myintent, 0); ; public static double[] getvaluesl() return critpointsl; public static double[] getvaluesr() return critpointsr; private final double duration = 0.4; // seconds private final int samplerate = 8000; private final double numsamples = duration * samplerate; private final double sample[] = new double[(int) numsamples]; private double freqoftone = 250; int freqcounter = 0; /** hz **/ // BOOLEANS private boolean _freq1; private float _channel = 1; boolean _lefteardone = false; boolean _launch250hz = true; // ****************** private byte generatedsnd[] = new byte[(int) (2 * numsamples)]; // volumes float voll = (float) 0; float volr = (float) 0; double decrvol; double incrementer = 2 / 3; double _attenuationamount = 0.09;

30 float _globalvol; // frequency volumes for earbud offset float _250hzVol = (float) 0.45; float _500hzVol = (float) 0.37; float _1000hzVol = (float) 0.36; float _2000hzVol = (float) 0.24; float _4000hzVol = (float) 0.16; float _8000hzVol = (float) 0.78; int numberofpress = 0; int numbeeps = 6; // BOOLEANS boolean _downpress; boolean _flag = false; boolean _firsttime = true; boolean leftearcomplete = false; private int idx; private double storedvalues[] = new double[(int) duration]; private static double critpointsl[] = new double[6]; private static double critpointsr[] = new double[6]; private int _intervals = 6; private double totalnum = 0; private double totalnum1 = 0; int count = 0; int _touchdowncounter = 0; int _touchcounter = 0; int _freqcounter = 0; private double _datapoints[] = new double[4000]; private double storedvolumesl[][] = new double[2][1000]; private double storedvolumesr[][] = new double[2][1000]; int oneshot = 0; int _teststage = 0; /* * protected void onresume() super.onresume(); final Thread thread = new * Thread(new Runnable() public void run() * * // gentone(); handler.post(new Runnable() public void run() * * // playsound(); ); ); thread.start(); */

31

App Development for Smart Devices. Lec #7: Audio, Video & Telephony Try It Out

App Development for Smart Devices. Lec #7: Audio, Video & Telephony Try It Out App Development for Smart Devices CS 495/595 - Fall 2013 Lec #7: Audio, Video & Telephony Try It Out Tamer Nadeem Dept. of Computer Science Trt It Out Example - SoundPool Example - VideoView Page 2 Fall

More information

<uses-permission android:name="android.permission.internet"/>

<uses-permission android:name=android.permission.internet/> Chapter 11 Playing Video 11.1 Introduction We have discussed how to play audio in Chapter 9 using the class MediaPlayer. This class can also play video clips. In fact, the Android multimedia framework

More information

Android Coding. Dr. J.P.E. Hodgson. August 23, Dr. J.P.E. Hodgson () Android Coding August 23, / 27

Android Coding. Dr. J.P.E. Hodgson. August 23, Dr. J.P.E. Hodgson () Android Coding August 23, / 27 Android Coding Dr. J.P.E. Hodgson August 23, 2010 Dr. J.P.E. Hodgson () Android Coding August 23, 2010 1 / 27 Outline Starting a Project 1 Starting a Project 2 Making Buttons Dr. J.P.E. Hodgson () Android

More information

public AnimLayer(Context context, AttributeSet attrs, int defstyle) { super(context, attrs, defstyle); initlayer(); }

public AnimLayer(Context context, AttributeSet attrs, int defstyle) { super(context, attrs, defstyle); initlayer(); } AnimLayer.java package com.kyindo.game; import java.util.arraylist; import java.util.list; import android.content.context; import android.util.attributeset; import android.view.view; import android.view.animation.animation;

More information

MAD ASSIGNMENT NO 2. Submitted by: Rehan Asghar BSSE AUGUST 25, SUBMITTED TO: SIR WAQAS ASGHAR Superior CS&IT Dept.

MAD ASSIGNMENT NO 2. Submitted by: Rehan Asghar BSSE AUGUST 25, SUBMITTED TO: SIR WAQAS ASGHAR Superior CS&IT Dept. MAD ASSIGNMENT NO 2 Submitted by: Rehan Asghar BSSE 7 15126 AUGUST 25, 2017 SUBMITTED TO: SIR WAQAS ASGHAR Superior CS&IT Dept. Android Widgets There are given a lot of android widgets with simplified

More information

1. Location Services. 1.1 GPS Location. 1. Create the Android application with the following attributes. Application Name: MyLocation

1. Location Services. 1.1 GPS Location. 1. Create the Android application with the following attributes. Application Name: MyLocation 1. Location Services 1.1 GPS Location 1. Create the Android application with the following attributes. Application Name: MyLocation Project Name: Package Name: MyLocation com.example.mylocation 2. Put

More information

Thread. A Thread is a concurrent unit of execution. The thread has its own call stack for methods being invoked, their arguments and local variables.

Thread. A Thread is a concurrent unit of execution. The thread has its own call stack for methods being invoked, their arguments and local variables. 1 Thread A Thread is a concurrent unit of execution. The thread has its own call stack for methods being invoked, their arguments and local variables. Each virtual machine instance has at least one main

More information

Embedded Systems Programming - PA8001

Embedded Systems Programming - PA8001 Embedded Systems Programming - PA8001 http://goo.gl/ydeczu Lecture 9 Mohammad Mousavi m.r.mousavi@hh.se Center for Research on Embedded Systems School of Information Science, Computer and Electrical Engineering

More information

Vienos veiklos būsena. Theory

Vienos veiklos būsena. Theory Vienos veiklos būsena Theory While application is running, we create new Activities and close old ones, hide the application and open it again and so on, and Activity can process all these events. It is

More information

Android Apps Development for Mobile and Tablet Device (Level I) Lesson 2

Android Apps Development for Mobile and Tablet Device (Level I) Lesson 2 Workshop 1. Compare different layout by using Change Layout button (Page 1 5) Relative Layout Linear Layout (Horizontal) Linear Layout (Vertical) Frame Layout 2. Revision on basic programming skill - control

More information

EMBEDDED SYSTEMS PROGRAMMING Application Tip: Switching UIs

EMBEDDED SYSTEMS PROGRAMMING Application Tip: Switching UIs EMBEDDED SYSTEMS PROGRAMMING 2015-16 Application Tip: Switching UIs THE PROBLEM How to switch from one UI to another Each UI is associated with a distinct class that controls it Solution shown: two UIs,

More information

Android/Java Lightning Tutorial JULY 30, 2018

Android/Java Lightning Tutorial JULY 30, 2018 Android/Java Lightning Tutorial JULY 30, 2018 Java Android uses java as primary language Resource : https://github.mit.edu/6178-2017/lec1 Online Tutorial : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/inde

More information

Services. service: A background task used by an app.

Services. service: A background task used by an app. CS 193A Services This document is copyright (C) Marty Stepp and Stanford Computer Science. Licensed under Creative Commons Attribution 2.5 License. All rights reserved. Services service: A background task

More information

Workshop. 1. Create a simple Intent (Page 1 2) Launch a Camera for Photo Taking

Workshop. 1. Create a simple Intent (Page 1 2) Launch a Camera for Photo Taking Workshop 1. Create a simple Intent (Page 1 2) Launch a Camera for Photo Taking 2. Create Intent with Parsing Data (Page 3 8) Making Phone Call and Dial Access Web Content Playing YouTube Video 3. Create

More information

Mobile Application Development Lab [] Simple Android Application for Native Calculator. To develop a Simple Android Application for Native Calculator.

Mobile Application Development Lab [] Simple Android Application for Native Calculator. To develop a Simple Android Application for Native Calculator. Simple Android Application for Native Calculator Aim: To develop a Simple Android Application for Native Calculator. Procedure: Creating a New project: Open Android Stdio and then click on File -> New

More information

10.1 Introduction. Higher Level Processing. Word Recogniton Model. Text Output. Voice Signals. Spoken Words. Syntax, Semantics, Pragmatics

10.1 Introduction. Higher Level Processing. Word Recogniton Model. Text Output. Voice Signals. Spoken Words. Syntax, Semantics, Pragmatics Chapter 10 Speech Recognition 10.1 Introduction Speech recognition (SR) by machine, which translates spoken words into text has been a goal of research for more than six decades. It is also known as automatic

More information

INTRODUCTION TO ANDROID

INTRODUCTION TO ANDROID INTRODUCTION TO ANDROID 1 Niv Voskoboynik Ben-Gurion University Electrical and Computer Engineering Advanced computer lab 2015 2 Contents Introduction Prior learning Download and install Thread Android

More information

CS 370 Android Basics D R. M I C H A E L J. R E A L E F A L L

CS 370 Android Basics D R. M I C H A E L J. R E A L E F A L L CS 370 Android Basics D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Activity Basics Manifest File AndroidManifest.xml Central configuration of Android application Defines: Name of application Icon for

More information

Press project on the left toolbar if it doesn t show an overview of the app yet.

Press project on the left toolbar if it doesn t show an overview of the app yet. #3 Setting up the permissions needed to allow the app to use GPS. Okay! Press project on the left toolbar if it doesn t show an overview of the app yet. In this project plane, we will navigate to the manifests

More information

INVISIO V60. Multi-Com Control Unit USER MANUAL

INVISIO V60. Multi-Com Control Unit USER MANUAL INVISIO V60 Multi-Com Control Unit USER MANUAL Contents Disclaimer 4 Overview 6 Getting Started 7 Hear-Thru Control 8 Hear-Thru Volume Steps 9 Transmit 10 PTT Assignment Examples 11 Received Audio 12 Received

More information

package import import import import import import import public class extends public void super new this class extends public super public void new

package import import import import import import import public class extends public void super new this class extends public super public void new Android 2-D Drawing Android uses a Canvas object to host its 2-D drawing methods. The program below draws a blue circle on a white canvas. It does not make use of the main.xml layout but draws directly

More information

SW MAPS TEMPLATE BUILDER. User s Manual

SW MAPS TEMPLATE BUILDER. User s Manual SW MAPS TEMPLATE BUILDER User s Manual Copyright (c) 2017 SOFTWEL (P) Ltd All rights reserved. Redistribution and use in binary forms, without modification, are permitted provided that the following conditions

More information

Hi Hsiao-Lung Chan, Ph.D. Dept Electrical Engineering Chang Gung University, Taiwan

Hi Hsiao-Lung Chan, Ph.D. Dept Electrical Engineering Chang Gung University, Taiwan Lab: LED Control Hi Hsiao-Lung Chan, Ph.D. Dept Electrical Engineering Chang Gung University, Taiwan chanhl@maili.cgu.edu.twcgu LED control Controlled by I/O ports of GPJ3_0 and GPJ3_1 Control register:

More information

GATAV 5. Animations Using a Game Loop

GATAV 5. Animations Using a Game Loop GATAV 5. Animations Using a Game Loop TOC 1. The basic principle. 2. Creating bubbles. 3. Making the bubbles more look alive. 4. The appearent look. 5. Making the audiance impressed. 6. Now it up to you:

More information

COMP61242: Task 3 1 2/05/18

COMP61242: Task 3 1 2/05/18 COMP61242: Task 3 1 2/05/18 1. Introduction University of Manchester School of Computer Science COMP61242: Mobile Communications Semester 2: 2017-18 Laboratory Task 3 Communicating with Android Smart-phones

More information

Manifest.xml. Activity.java

Manifest.xml. Activity.java Dr.K.Somasundaram Ph.D Professor Department of Computer Science and Applications Gandhigram Rural Institute, Gandhigram, Tamil Nadu-624302, India ka.somasundaram@gmail.com Manifest.xml

More information

Android Apps Development for Mobile Game Lesson Create a simple paint brush that allows user to draw something (Page 11 13)

Android Apps Development for Mobile Game Lesson Create a simple paint brush that allows user to draw something (Page 11 13) Workshop 1. Create a simple Canvas view with simple drawing (Page 1 5) Hide Action Bar and Status Bar Create Canvas View Create Simple Drawing 2. Create a simple animation (Page 6 10) Load a simple image

More information

Real-Time Embedded Systems

Real-Time Embedded Systems Real-Time Embedded Systems DT8025, Fall 2016 http://goo.gl/azfc9l Lecture 8 Masoumeh Taromirad m.taromirad@hh.se Center for Research on Embedded Systems School of Information Technology 1 / 51 Smart phones

More information

The Check-in Call How-to Guide

The Check-in Call How-to Guide The Check-in Call How-to Guide Welcome to The Check-in Call. Thank you for choosing GreatCall s Check-in Call service. We ve designed this service so that you and your loved ones can enjoy the peace of

More information

Android Services. Victor Matos Cleveland State University. Services

Android Services. Victor Matos Cleveland State University. Services 22 Android Victor Matos Cleveland State University Notes are based on: Android Developers http://developer.android.com/index.html 22. Android Android A Service is an application component that runs in

More information

else if(rb2.ischecked()) {

else if(rb2.ischecked()) { Problem :Toy Calculator Description:Please design an Android application that contains 2 activities: cal_main and cal_result. The following figure is a suggested layout for the cal_main activity. For the

More information

B9: Việc cuối cùng cần làm là viết lại Activity. Tới Example.java và chỉnh sửa theo nội dung sau: Mã: package at.exam;

B9: Việc cuối cùng cần làm là viết lại Activity. Tới Example.java và chỉnh sửa theo nội dung sau: Mã: package at.exam; B9: Việc cuối cùng cần làm là viết lại Activity. Tới Example.java và chỉnh sửa theo nội dung sau: Mã: package at.exam; import java.util.arraylist; import android.app.activity; import android.app.alertdialog;

More information

Basic GUI elements - exercises

Basic GUI elements - exercises Basic GUI elements - exercises https://developer.android.com/studio/index.html LIVE DEMO Please create a simple application, which will be used to calculate the area of basic geometric figures. To add

More information

Upcoming Assignments Quiz Friday? Lab 5 due today Alpha Version due Friday, February 26

Upcoming Assignments Quiz Friday? Lab 5 due today Alpha Version due Friday, February 26 Upcoming Assignments Quiz Friday? Lab 5 due today Alpha Version due Friday, February 26 Inject one subtle defect (fault seeding) To be reviewed by a few class members Usability study by CPE 484 students

More information

Embedded Systems Programming - PA8001

Embedded Systems Programming - PA8001 Embedded Systems Programming - PA8001 http://goo.gl/ydeczu Lecture 8 Mohammad Mousavi m.r.mousavi@hh.se Center for Research on Embedded Systems School of Information Science, Computer and Electrical Engineering

More information

PsyAcoustX Manual (v1)

PsyAcoustX Manual (v1) PsyAcoustX Manual (v1) - 2015 Skyler Jennings, PhD Contents Getting started: Experiment Menu and Calibration Opening the GUI:... 2 Experiment Menu... 2 The SystemInfo.mat file... 3 Calibration:... 4 Calibration

More information

Programming of Mobile Services, Spring 2012

Programming of Mobile Services, Spring 2012 Programming of Mobile Services, Spring 2012 HI1017 Lecturer: Anders Lindström, anders.lindstrom@sth.kth.se Lecture 6 Today s topics Android graphics - Views, Canvas, Drawables, Paint - Double buffering,

More information

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I)

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) Lecture 3: Android Life Cycle and Permission Android Lifecycle An activity begins its lifecycle when entering the oncreate() state If not

More information

MAD ASSIGNMENT NO 3. Submitted by: Rehan Asghar BSSE AUGUST 25, SUBMITTED TO: SIR WAQAS ASGHAR Superior CS&IT Dept.

MAD ASSIGNMENT NO 3. Submitted by: Rehan Asghar BSSE AUGUST 25, SUBMITTED TO: SIR WAQAS ASGHAR Superior CS&IT Dept. MAD ASSIGNMENT NO 3 Submitted by: Rehan Asghar BSSE 7 15126 AUGUST 25, 2017 SUBMITTED TO: SIR WAQAS ASGHAR Superior CS&IT Dept. MainActivity.java File package com.example.tutorialspoint; import android.manifest;

More information

Android Workshop: Model View Controller ( MVC):

Android Workshop: Model View Controller ( MVC): Android Workshop: Android Details: Android is framework that provides java programmers the ability to control different aspects of smart devices. This interaction happens through the Android SDK (Software

More information

Threads Chate Patanothai

Threads Chate Patanothai Threads Chate Patanothai Objectives Knowing thread: 3W1H Create separate threads Control the execution of a thread Communicate between threads Protect shared data C. Patanothai Threads 2 What are threads?

More information

TextView Control. EditText Control. TextView Attributes. android:id - This is the ID which uniquely identifies the control.

TextView Control. EditText Control. TextView Attributes. android:id - This is the ID which uniquely identifies the control. A TextView displays text to the user. TextView Attributes TextView Control android:id - This is the ID which uniquely identifies the control. android:capitalize - If set, specifies that this TextView has

More information

Adaptive Layout Hands-On Challenges

Adaptive Layout Hands-On Challenges Adaptive Layout Hands-On Challenges Copyright 2015 Razeware LLC. All rights reserved. No part of this book or corresponding materials (such as text, images, or source code) may be reproduced or distributed

More information

User s Manual LOC8ING. Air Travel Tag Ver TM. LOC8ING LTD. Unit 1016 Houston Centre, 63 Mody road, T.S.T East, Kowloon HONG KONG

User s Manual LOC8ING. Air Travel Tag Ver TM. LOC8ING LTD. Unit 1016 Houston Centre, 63 Mody road, T.S.T East, Kowloon HONG KONG User s Manual LOC8ING TM. Air Travel Tag Ver.1.8.2 LOC8ING LTD. Unit 1016 Houston Centre, 63 Mody road, T.S.T East, Kowloon HONG KONG Tel. +852 21165380 email. info@loc8ing.com Web. www.loc8ing.com LOC8ING

More information

1 카메라 1.1 제어절차 1.2 관련주요메서드 1.3 제작철차 서피스뷰를생성하고이를제어하는서피스홀더객체를참조해야함. 매니페스트에퍼미션을지정해야한다.

1 카메라 1.1 제어절차 1.2 관련주요메서드 1.3 제작철차 서피스뷰를생성하고이를제어하는서피스홀더객체를참조해야함. 매니페스트에퍼미션을지정해야한다. 1 카메라 1.1 제어절차 서피스뷰를생성하고이를제어하는서피스홀더객체를참조해야함. 매니페스트에퍼미션을지정해야한다. 1.2 관련주요메서드 setpreviewdisplay() : startpreview() : stoppreview(); onpicturetaken() : 사진을찍을때자동으로호출되며캡처한이미지가전달됨 1.3 제작철차 Step 1 프로젝트를생성한후매니페스트에퍼미션들을설정한다.

More information

... 1... 2... 2... 3... 3... 4... 4... 5... 5... 6... 6... 7... 8... 9... 10... 13... 14... 17 1 2 3 4 file.txt.exe file.txt file.jpg.exe file.mp3.exe 5 6 0x00 0xFF try { in.skip(9058); catch (IOException

More information

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I)

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) Lecture 3: Android Life Cycle and Permission Entire Lifetime An activity begins its lifecycle when entering the oncreate() state If not interrupted

More information

@Bind(R.id.input_ ) EditText EditText Button _loginbutton;

@Bind(R.id.input_ ) EditText EditText Button _loginbutton; package cyborg.pantaucctv; import android.app.progressdialog; import android.content.intent; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.util.log; import android.view.view;

More information

Services. Marco Ronchetti Università degli Studi di Trento

Services. Marco Ronchetti Università degli Studi di Trento 1 Services Marco Ronchetti Università degli Studi di Trento Service An application component that can perform longrunning operations in the background and does not provide a user interface. So, what s

More information

Fundamentals of Perceptual Audio Encoding. Craig Lewiston HST.723 Lab II 3/23/06

Fundamentals of Perceptual Audio Encoding. Craig Lewiston HST.723 Lab II 3/23/06 Fundamentals of Perceptual Audio Encoding Craig Lewiston HST.723 Lab II 3/23/06 Goals of Lab Introduction to fundamental principles of digital audio & perceptual audio encoding Learn the basics of psychoacoustic

More information

1D/2D android secondary development

1D/2D android secondary development 1D/2D android secondary development The example in this document is developed in eclipse. 1. Import library to project Copy the filefolder and to the Project- libs 2.Copy JAVA

More information

Q.1 Explain the dialog and also explain the Demonstrate working dialog in android.

Q.1 Explain the dialog and also explain the Demonstrate working dialog in android. Q.1 Explain the dialog and also explain the Demonstrate working dialog in android. - A dialog is a small window that prompts the user to make a decision or enter additional information. - A dialog does

More information

Behavioral Auditory Research Tests (BART) Revised: 02/2/2010

Behavioral Auditory Research Tests (BART) Revised: 02/2/2010 Behavioral Auditory Research Tests (BART) Revised: 02/2/2010 2 OVERVIEW The purpose of Behavioral Auditory Tests (BART) is to simplify the process of designing and implementing experiments in auditory

More information

Services. Marco Ronchetti Università degli Studi di Trento

Services. Marco Ronchetti Università degli Studi di Trento 1 Services Marco Ronchetti Università degli Studi di Trento Service An application component that can perform longrunning operations in the background and does not provide a user interface. So, what s

More information

X Generic Event Extension. Peter Hutterer

X Generic Event Extension. Peter Hutterer X Generic Event Extension Peter Hutterer X Generic Event Extension Peter Hutterer X Version 11, Release 7.7 Version 1.0 Copyright 2007 Peter Hutterer Permission is hereby granted, free of charge, to any

More information

Solving an Android Threading Problem

Solving an Android Threading Problem Home Java News Brief Archive OCI Educational Services Solving an Android Threading Problem Introduction by Eric M. Burke, Principal Software Engineer Object Computing, Inc. (OCI) By now, you probably know

More information

Basic UI elements: Android Buttons (Basics) Marco Ronchetti Università degli Studi di Trento

Basic UI elements: Android Buttons (Basics) Marco Ronchetti Università degli Studi di Trento Basic UI elements: Android Buttons (Basics) Marco Ronchetti Università degli Studi di Trento Let s work with the listener Button button = ; button.setonclicklistener(new.onclicklistener() { public void

More information

Multithreading Pearson Education, Inc. All rights reserved.

Multithreading Pearson Education, Inc. All rights reserved. 1 23 Multithreading 2 23.1 Introduction Multithreading Provides application with multiple threads of execution Allows programs to perform tasks concurrently Often requires programmer to synchronize threads

More information

JOHNS HOPKINS ARAMCO HEALTHCARE MYCHART. Terms and Conditions

JOHNS HOPKINS ARAMCO HEALTHCARE MYCHART. Terms and Conditions JOHNS HOPKINS ARAMCO HEALTHCARE MYCHART Terms and Conditions Johns Hopkins Aramco Healthcare MyChart ( JHAH MyChart ) is an Internet application that enables patients and/or their proxies to have secure

More information

Android Programs Day 5

Android Programs Day 5 Android Programs Day 5 //Android Program to demonstrate the working of Options Menu. 1. Create a New Project. 2. Write the necessary codes in the MainActivity.java to create OptionMenu. 3. Add the oncreateoptionsmenu()

More information

Mobile Programming Practice Background processing AsynTask Service Broadcast receiver Lab #5

Mobile Programming Practice Background processing AsynTask Service Broadcast receiver Lab #5 1 Mobile Programming Practice Background processing AsynTask Service Broadcast receiver Lab #5 Prof. Hwansoo Han T.A. Sung-in Hong T.A. Minseop Jeong 2 Background processing Every Android app has a main

More information

shared objects monitors run() Runnable start()

shared objects monitors run() Runnable start() Thread Lecture 18 Threads A thread is a smallest unit of execution Each thread has its own call stack for methods being invoked, their arguments and local variables. Each virtual machine instance has at

More information

Java Basics A Simple Hit the Zombies Game

Java Basics A Simple Hit the Zombies Game Lecture #3 Introduction Java Basics A Simple Hit the Zombies Game The previous lecture provided a guided tour to explore the basics of Android Studio and how to use it to create a project to build an Android

More information

4GB Micro-Speak Plus User Guide Text

4GB Micro-Speak Plus User Guide Text 4GB Micro-Speak Plus User Guide Text Important Notes Please read all instructions carefully before using this product and retain this document for future reference. Micro-Speak is not recommended for children

More information

Checking Multiple Conditions

Checking Multiple Conditions Checking Multiple Conditions Conditional code often relies on a value being between two other values Consider these conditions: Free shipping for orders over $25 10 items or less Children ages 3 to 11

More information

Outline. Admin. Example: TipCalc. Android: Event Handler Blocking, Android Inter-Thread, Process Communications. Recap: Android UI App Basic Concepts

Outline. Admin. Example: TipCalc. Android: Event Handler Blocking, Android Inter-Thread, Process Communications. Recap: Android UI App Basic Concepts Outline Android: Event Handler Blocking, Android Inter-Thread, Process Communications 10/11/2012 Admin Android Basic concepts Activity, View, External Resources, Listener Inter-thread communications Handler,

More information

Threads & Timers. CSE260, Computer Science B: Honors Stony Brook University

Threads & Timers. CSE260, Computer Science B: Honors Stony Brook University Threads & Timers CSE260, Computer Science B: Honors Stony Brook University http://www.cs.stonybrook.edu/~cse260 Multi-tasking When you re working, how many different applications do you have open at one

More information

Contents. 6-1 Copyright (c) N. Afshartous

Contents. 6-1 Copyright (c) N. Afshartous Contents 1. Classes and Objects 2. Inheritance 3. Interfaces 4. Exceptions and Error Handling 5. Intro to Concurrency 6. Concurrency in Java 7. Graphics and Animation 8. Applets 6-1 Copyright (c) 1999-2004

More information

Comparative Locatability Tests of Warning Signals. Sound Locatability Tests

Comparative Locatability Tests of Warning Signals. Sound Locatability Tests Comparative Locatability Tests of Warning Signals 4 Sounds: BB Broadband MT Multi-tone; 200 Hz intervals TT Triple-tone; 500 Hz, 1kHz & 2kHz ST Single-tone; 1kHz 4 Sounds City of London Freeman s School

More information

Scroll View School Hands-On Challenges

Scroll View School Hands-On Challenges Scroll View School Hands-On Challenges Copyright 2014 Razeware LLC. All rights reserved. No part of this book or corresponding materials (such as text, images, or source code) may be reproduced or distributed

More information

PATH Newsletter Firmware / Software / Service Tool Release note DEVICES 2. FIRMWARE TEST MODULES. January 17 th, 2014

PATH Newsletter Firmware / Software / Service Tool Release note DEVICES 2. FIRMWARE TEST MODULES. January 17 th, 2014 January 17 th, 2014 Dear customer, PATH medical is pleased to announce the release of new device hardware, device firmware (1.7.5511), PC software (1.5.0.4185 beta version), and Service Tool (1.3.0.4069).

More information

Exercise Session Week 8

Exercise Session Week 8 Chair of Software Engineering Java and C# in Depth Carlo A. Furia, Marco Piccioni, Bertrand Meyer Exercise Session Week 8 Quiz 1: What is printed? (Java) class MyTask implements Runnable { public void

More information

Androidプログラミング 2 回目 迫紀徳

Androidプログラミング 2 回目 迫紀徳 Androidプログラミング 2 回目 迫紀徳 前回の復習もかねて BMI 計算アプリを作ってみよう! 2 3 BMI の計算方法 BMI = 体重 [kg] 身長 [m] 2 状態も表示できると GOOD 状態低体重 ( 痩せ型 ) 普通体重肥満 (1 度 ) 肥満 (2 度 ) 肥満 (3 度 ) 肥満 (4 度 ) 指標 18.5 未満 18.5 以上 25 未満 25 以上 30 未満 30

More information

Steps to create a Tic-Tac-Toe game Part 2

Steps to create a Tic-Tac-Toe game Part 2 Steps to create a Tic-Tac-Toe game Part 2 Let's fix a couple of things before moving on. The computer only makes one move, so correct that by updating the Board.setSelectedCell method as follows: public

More information

Software Engineering Large Practical: Preferences, storage, and testing

Software Engineering Large Practical: Preferences, storage, and testing Software Engineering Large Practical: Preferences, storage, and testing Stephen Gilmore (Stephen.Gilmore@ed.ac.uk) School of Informatics November 9, 2016 Contents A simple counter activity Preferences

More information

ACS COLLEGE OF ENGINEERING DEPARTMENT OF BIOMEDICAL ENGINEERING

ACS COLLEGE OF ENGINEERING DEPARTMENT OF BIOMEDICAL ENGINEERING ACS COLLEGE OF ENGINEERING DEPARTMENT OF BIOMEDICAL ENGINEERING C++ and Data Structures Pre -Lab questions(2015-2016) Cycle -1 1. Which is not an integer data type? 2. Which is a numeric data type? 3.

More information

MainWindow.java. Page 1

MainWindow.java. Page 1 / This project is a demo showing a sound card selector and tester. The UI would look nice and work better, but I've decided that's outside the scope of this demo. Code from this demo will eventually be

More information

Mobile Computing Practice # 2c Android Applications - Interface

Mobile Computing Practice # 2c Android Applications - Interface Mobile Computing Practice # 2c Android Applications - Interface One more step in the restaurants application. 1. Design an alternative layout for showing up in landscape mode. Our current layout is not

More information

Exercise Session Week 8

Exercise Session Week 8 Chair of Software Engineering Java and C# in Depth Carlo A. Furia, Marco Piccioni, Bertrand Meyer Exercise Session Week 8 Java 8 release date Was early September 2013 Currently moved to March 2014 http://openjdk.java.net/projects/jdk8/milestones

More information

Mobile Admin GETTING STARTED GUIDE. Version 8.2. Last Updated: Thursday, May 25, 2017

Mobile Admin GETTING STARTED GUIDE. Version 8.2. Last Updated: Thursday, May 25, 2017 GETTING STARTED GUIDE Mobile Admin Version 8.2 Last Updated: Thursday, May 25, 2017 Retrieve the latest version from: https://support.solarwinds.com/success_center/mobile_admin/mobile_admin_documentation

More information

Voluntary Product Accessibility Template (VPAT)

Voluntary Product Accessibility Template (VPAT) Voluntary Product Accessibility Template (VPAT) Date 2017-02-06 Name of Product Top Hat Lecture - Student - Android App Version Contact Steve Pascoe steve.pascoe+vpat@tophat.com Summary Table Criteria

More information

Create a local SQL database hosting a CUSTOMER table. Each customer includes [id, name, phone]. Do the work inside Threads and Asynctasks.

Create a local SQL database hosting a CUSTOMER table. Each customer includes [id, name, phone]. Do the work inside Threads and Asynctasks. CIS 470 Lesson 13 Databases - Quick Notes Create a local SQL database hosting a CUSTOMER table. Each customer includes [id, name, phone]. Do the work inside Threads and Asynctasks. package csu.matos; import

More information

Coding Menggunakan software Eclipse: Mainactivity.java (coding untuk tampilan login): package com.bella.pengontrol_otomatis;

Coding Menggunakan software Eclipse: Mainactivity.java (coding untuk tampilan login): package com.bella.pengontrol_otomatis; Coding Menggunakan software Eclipse: Mainactivity.java (coding untuk tampilan login): package com.bella.pengontrol_otomatis; import android.app.activity; import android.os.bundle; import android.os.countdowntimer;

More information

IPN-ESCOM Application Development for Mobile Devices. Extraordinary. A Web service, invoking the SOAP protocol, in an Android application.

IPN-ESCOM Application Development for Mobile Devices. Extraordinary. A Web service, invoking the SOAP protocol, in an Android application. Learning Unit Exam Project IPN-ESCOM Application Development for Mobile Devices. Extraordinary. A Web service, invoking the SOAP protocol, in an Android application. The delivery of this project is essential

More information

Interface ใน View class ประกอบด วย

Interface ใน View class ประกอบด วย Boonrit kidngan Interface ใน View class ประกอบด วย View.OnClickListener เม อม การ click View.OnLongClickListener เม อม การ click ค าง View.OnFocusChangeListener เม อเปล ยนการเล อก View.OnKeyListener เม

More information

A Crash Course to Android Mobile Platform

A Crash Course to Android Mobile Platform Enterprise Application Development using J2EE Shmulik London Lecture #2 A Crash Course to Android Mobile Platform Enterprise Application Development Using J2EE / Shmulik London 2004 Interdisciplinary Center

More information

MyDatabaseHelper. public static final String TABLE_NAME = "tbl_bio";

MyDatabaseHelper. public static final String TABLE_NAME = tbl_bio; Page 1 of 5 MyDatabaseHelper import android.content.context; import android.database.sqlite.sqliteopenhelper; class MyDatabaseHelper extends SQLiteOpenHelper { private static final String DB_NAME = "friend_db";

More information

Understanding Intents and Intent Filters

Understanding Intents and Intent Filters 255 Chapter 11 Understanding Intents and Intent Filters This chapter will delve into intents, which are messaging objects that carry communications between the major components of your application your

More information

Dog Training Collar with Wireless Remote. CC-710 Product User Guide. Copyright 2014 Cujo Control. All Rights Reserved.

Dog Training Collar with Wireless Remote. CC-710 Product User Guide. Copyright 2014 Cujo Control. All Rights Reserved. Dog Training Collar with Wireless Remote CC-710 Product User Guide Copyright 2014 Cujo Control. All Rights Reserved. Contents Overview... 2 Parts List... 3 Charging the Remote and Receiver... 4 Fitting

More information

Analogue Ripper. What TAR does not do. Record Albums Break Them Into Tracks Send the tracks to itunes

Analogue Ripper. What TAR does not do. Record Albums Break Them Into Tracks Send the tracks to itunes Analogue Ripper Record Albums Break Them Into Tracks Send the tracks to itunes I. What the Analogue Ripper (TAR) does TAR allows you to digitally record music and sound from any analogue source onto your

More information

Basic UI elements: Defining Activity UI in the code. Marco Ronchetti Università degli Studi di Trento

Basic UI elements: Defining Activity UI in the code. Marco Ronchetti Università degli Studi di Trento 1 Basic UI elements: Defining Activity UI in the code Marco Ronchetti Università degli Studi di Trento UI Programmatically public class UIThroughCode extends Activity { LinearLayout llayout; TextView tview;

More information

App Development for Smart Devices. Lec #18: Advanced Topics

App Development for Smart Devices. Lec #18: Advanced Topics App Development for Smart Devices CS 495/595 - Fall 2011 Lec #18: Advanced Topics Tamer Nadeem Dept. of Computer Science Objective Web Browsing Android Animation Android Backup Presentation - Developing

More information

Podstawowe komponenty aplikacji, wymiana międzyprocesowa

Podstawowe komponenty aplikacji, wymiana międzyprocesowa Podstawowe komponenty aplikacji, wymiana międzyprocesowa Intencje. Budowanie intencji, komunikacja z wykorzystaniem intencji pomiędzy aktywnościami i aplikacjami. Obsługa powiadomień za pomocą klasy BroadcastReceiver.

More information

Create Parent Activity and pass its information to Child Activity using Intents.

Create Parent Activity and pass its information to Child Activity using Intents. Create Parent Activity and pass its information to Child Activity using Intents. /* MainActivity.java */ package com.example.first; import android.os.bundle; import android.app.activity; import android.view.menu;

More information

EMBEDDED SYSTEMS PROGRAMMING Application Tip: Saving State

EMBEDDED SYSTEMS PROGRAMMING Application Tip: Saving State EMBEDDED SYSTEMS PROGRAMMING 2016-17 Application Tip: Saving State THE PROBLEM How to save the state (of a UI, for instance) so that it survives even when the application is closed/killed The state should

More information

Distributed Speaker Synchronization

Distributed Speaker Synchronization Distributed Computing Distributed Speaker Synchronization Semester Thesis Kevin Luchsinger kevinlu@student.ethz.ch Distributed Computing Group Computer Engineering and Networks Laboratory ETH Zürich Supervisors:

More information

MANUAL AND USER GUIDE

MANUAL AND USER GUIDE MANUAL AND USER GUIDE INTERPRETER CONTROL CENTER Audio Control Center For Simultaneous Interpreters Model IC-1 MAN 067E INTERPRETER CONTROL CENTER, MODEL IC-1 INSTALLATION GUIDE & USER MANUAL Contents

More information

Mobile Application Development - Android

Mobile Application Development - Android Mobile Application Development - Android MTAT.03.262 Satish Srirama satish.srirama@ut.ee Goal Give you an idea of how to start developing Android applications Introduce major Android application concepts

More information