Soundpool播放不正确

时间:2015-08-30 21:03:30

标签: java android xml soundpool

我正在创建一个小游戏,我可以在触摸图像按钮时从鼓组中播放音频样本。它在一台设备上工作,而不是另外两台我在其上试过的设备。我的代码中是否有任何内容使其在Android设备上不一致?我找不到任何这种不一致的原因......任何天才都有解决方案吗?

活动代码

public class GameMain extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game_main);

    // Initialise SoundPool to play the drum sample sounds
    soundPoolDrums = new SoundPool (8, AudioManager.STREAM_MUSIC, 0);

    // Create HashMap of sounds
    soundMap = new HashMap<Integer, Integer>();
  }

  // Constants and variables for storing sounds for drumkit
  public static final int HIHAT_SOUND_ID=0;
  public static final int RIDE_SOUND_ID=1;
  public static final int CYMBAL_SOUND_ID=2;
  public static final int BASS_SOUND_ID=3;
  public static final int SNARE_SOUND_ID=4;
  public static final int TOMTOMA_SOUND_ID=5;
  public static final int TOMTOMB_SOUND_ID=6;
  public static final int TOMTOMC_SOUND_ID=7;
  private SoundPool soundPoolDrums;
  private Map<Integer, Integer> soundMap;

  /*
   * The next section manages the playback of drum samples
   */

  // High-hat sample player
  public void HatOne (View view) {

      soundMap.put(HIHAT_SOUND_ID, soundPoolDrums.load(this, R.raw.drumhata, 1)); 
      soundPoolDrums.play(soundMap.get(HIHAT_SOUND_ID), 1, 1, 1, 0, 1f);
  }

  // Ride sample player
  public void HatTwo (View view) {

      soundMap.put(RIDE_SOUND_ID, soundPoolDrums.load(this, R.raw.drumhatc, 1));
      soundPoolDrums.play(soundMap.get(RIDE_SOUND_ID), 1, 1, 1, 0, 1f);
      }

  // Crash sample player
  public void Crash (View view) {

      soundMap.put(CYMBAL_SOUND_ID, soundPoolDrums.load(this, R.raw.drumcrash, 1));   
      soundPoolDrums.play(soundMap.get(CYMBAL_SOUND_ID), 1, 1, 1, 0, 1f);
      }

  // Bass sample player
  public void KickDrum (View view) {

      Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
      vib.vibrate(200);

      soundMap.put(BASS_SOUND_ID, soundPoolDrums.load(this, R.raw.drumkick, 1)); 
      soundPoolDrums.play(soundMap.get(BASS_SOUND_ID), 1, 1, 1, 0, 1f);
  }

  // Snare sample player
  public void SnareDrum (View view) {

      Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
      vib.vibrate(150);

      soundMap.put(SNARE_SOUND_ID, soundPoolDrums.load(this, R.raw.drumsnare, 1)); 
      soundPoolDrums.play(soundMap.get(SNARE_SOUND_ID), 1, 1, 1, 0, 1f);
  }

  // High tom sample player
  public void TomOne (View view) {

      Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
      vib.vibrate(120);

      soundMap.put(TOMTOMA_SOUND_ID, soundPoolDrums.load(this, R.raw.drumtom1, 1)); 
      soundPoolDrums.play(soundMap.get(TOMTOMA_SOUND_ID), 1, 1, 1, 0, 1f);
  }

  // Mid tom sample player
  public void TomTwo (View view) {

      Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
      vib.vibrate(120);

      soundMap.put(TOMTOMB_SOUND_ID, soundPoolDrums.load(this, R.raw.drumtom2, 1)); 
      soundPoolDrums.play(soundMap.get(TOMTOMB_SOUND_ID), 1, 1, 1, 0, 1f);
  }

  // Low tom sample player
  public void TomThree (View view) {

      Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
      vib.vibrate(120);

      soundMap.put(TOMTOMC_SOUND_ID, soundPoolDrums.load(this, R.raw.drumtom3, 1)); 
      soundPoolDrums.play(soundMap.get(TOMTOMC_SOUND_ID), 1, 1, 1, 0, 1f);
  }
  // End of sample players section

  // Handlers for Back buttons
  // If tactile back button is pressed then the user is returned to the home screen
  @Override
  public void onBackPressed(){

    soundPoolDrums.release();
    soundPoolDrums = null;

    // play back sound
    MediaPlayer mMediaPlayer = MediaPlayer.create(this, R.raw.soundbackbutton) ;
    mMediaPlayer.start();
    // short vibration
    Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    vib.vibrate(200);

    Intent s = new Intent (this, Main.class);
    startActivity(s);
  }

  // Handler for back button 
  public void BackButton (View view) {

    soundPoolDrums.release();
    soundPoolDrums = null;  

    MediaPlayer mMediaPlayer = MediaPlayer.create(this, R.raw.soundbackbutton) ;
    mMediaPlayer.start();

    Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    vib.vibrate(200);

    Intent s = new Intent (this, Main.class);
    startActivity(s);   
  }

}

XML文件

     <?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/fabricblacksmr">

        <ImageButton
        android:id="@+id/BackButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:onClick="BackButton"
        android:src="@drawable/buttonhome"
        android:layout_margin="8dp"
        android:background="#00000000" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="60dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="5dp"
            android:text="@string/gamemaintext" />

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

            <ImageButton
            android:id="@+id/imageButtongame1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:onClick="HatOne"
            android:src="@drawable/dhihats" />

            <ImageButton
            android:id="@+id/imageButtongame2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:src="@drawable/dride"
            android:onClick="HatTwo"
            android:background="#00000000"/>

            <ImageButton
            android:id="@+id/imageButtongame3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:src="@drawable/dcrash"
            android:onClick="Crash"
            android:background="#00000000"/>

    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

            <ImageButton
            android:id="@+id/imageButtongame4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="KickDrum"
            android:src="@drawable/dbassdrum"
            android:background="#00000000" />

            <ImageButton
            android:id="@+id/imageButtongame5"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"  
            android:src="@drawable/dsnare"
            android:onClick="SnareDrum"
            android:background="#00000000"/>

    </TableRow>

     <TableRow
        android:id="@+id/tableRow3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

            <ImageButton
            android:id="@+id/imageButtongame6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:src="@drawable/dtom1"
            android:onClick="TomOne"
            android:background="#00000000"/>

            <ImageButton
            android:id="@+id/imageButtongame7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:src="@drawable/dtom2"
            android:onClick="TomTwo"
            android:background="#00000000"/>

            <ImageButton
            android:id="@+id/imageButtongame8"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:src="@drawable/dtom3"
            android:onClick="TomThree"
            android:background="#00000000"/>

    </TableRow>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="@string/filsdrum"/>

     <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginLeft ="120dp" 
        android:text="@string/copyright"/>

</TableLayout>

0 个答案:

没有答案