package com.aiti.playsound; //play car_idle and adjust playback rate using soundpool //Mar 5 10 Bob G //Apr 29 10 Bob G add beep4 on touch
import java.util.HashMap; import android.app.Activity; import android.media.AudioManager; import android.media.SoundPool; import android.os.Bundle; import android.view.GestureDetector; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.GestureDetector.OnGestureListener; import android.widget.TextView; public class playsound extends Activity implements OnGestureListener{ public GestureDetector gd; public SoundPool soundPool; public HashMap<Integer, Integer> soundPoolMap; public int soundkey1,soundkey2; //from put? public int soundid1,soundid2; //from load public int streamid1,streamid2; //from play public final float MAXRATE=1.5f; //docs say 2.0, scuttlebutt says 1.5 public final float NORMRATE=1.0f; public final float MINRATE=0.5f; public float rate1=MINRATE; public float rate2=NORMRATE; public final float MAXVOL=(float)1.0; public final float MINVOL=(float)0.01; public final float HALFVOL=(float)0.707; public float vol1=MAXVOL; public float vol2=HALFVOL; public final int LOOPON= -1; public final int LOOPOFF=0; public static TextView tv; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.main); gd=new GestureDetector(this); tv = new TextView(this); setContentView(tv); // tv.setText("in oncreate\n"); soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0); soundPoolMap = new HashMap<Integer, Integer>(); // tv.setText("after soundpoolmap\n"); soundid1= soundPool.load(getBaseContext(), R.raw.car_idle, 1); soundid2= soundPool.load(getBaseContext(), R.raw.beep4, 1); // tv.setText("after load\n"); soundPoolMap.put(soundkey1, soundid1); //maps id to key? soundPoolMap.put(soundkey2, soundid2); //maps id to key? // tv.setText("after put\n"); play1(); play2(); }//oncreate public void play1(){ streamid1=soundPool.play(soundid1, vol1, vol1, 1, LOOPON, rate1); // soundPool.setLoop(streamid1, LOOPON); //looping on soundPool.setRate(streamid1, MINRATE); tv.setText("after play1 streamid1= "+streamid1); } public void play2(){ streamid2=soundPool.play(soundid2, vol2, vol2, 1, LOOPOFF, rate2); // // soundPool.setLoop(streamid2, LOOPOFF); //looping off // soundPool.setRate(streamid2, NORMRATE); tv.append("\nafter play2 streamid2= "+streamid2); } public void adjVol(float k){ vol1 *= k; if(vol1 > MAXVOL) vol1 = MAXVOL; //0db if(vol1 < MINVOL) vol1 = MINVOL; //-40db soundPool.setVolume(streamid1, vol1, vol1); } public void adjrate(float k){ rate1 *= k; if(rate1 > MAXRATE) rate1 = MAXRATE; if(rate1 < MINRATE) rate1 = MINRATE; soundPool.setRate(streamid1, rate1); } @Override public boolean onKeyDown(int keyCode, KeyEvent event){ switch(keyCode){ case KeyEvent.KEYCODE_DPAD_UP: adjVol((float)1.414); break; // 3db up case KeyEvent.KEYCODE_DPAD_DOWN: adjVol((float)0.707); break; // 3db down case KeyEvent.KEYCODE_DPAD_LEFT: adjrate((float)0.9); break; // slower case KeyEvent.KEYCODE_DPAD_RIGHT: adjrate((float)1.1); break; // faster case KeyEvent.KEYCODE_DPAD_CENTER: play1(); break; default: return super.onKeyDown(keyCode, event); }//switch tv.append("\nrate "+rate1+" vol "+vol1); return true; } @Override public void onPause(){ super.onPause(); soundPool.pause(streamid1); //forum says pause doesnt work soundPool.stop(streamid1); soundPool.setLoop(streamid1, LOOPOFF); soundPool.setVolume(streamid1, MINVOL, MINVOL); soundPool.pause(streamid2); //forum says pause doesnt work soundPool.stop(streamid2); soundPool.setLoop(streamid2, LOOPOFF); soundPool.setVolume(streamid2, MINVOL, MINVOL); } @Override public void onResume(){ super.onResume(); soundPool.resume(streamid1); } @Override public void onStop(){ super.onStop(); soundPool.stop(streamid1); soundPool.setLoop(streamid1, LOOPOFF); soundPool.setVolume(streamid1, MINVOL, MINVOL); } @Override public void onDestroy(){ super.onDestroy(); soundPool.unload(soundid1); soundPool.unload(soundid2); soundPool.release(); } @Override public boolean onTouchEvent(MotionEvent motionevent){ if(motionevent.getAction()==motionevent.ACTION_DOWN) play2(); return true; } @Override public boolean onDown(MotionEvent arg0) { // TODO Auto-generated method stub return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // TODO Auto-generated method stub return false; } @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; } }//activity //--------------------eof-------------------------- -- You received this message because you are subscribed to the Google Groups "Android Beginners" group. NEW! Try asking and tagging your question on Stack Overflow at http://stackoverflow.com/questions/tagged/android To unsubscribe from this group, send email to android-beginners+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-beginners?hl=en