2011-08-13 13 views
0

ねえねえ、私は私のアプリを実行するとき、それはメイン画面に行く。そこから私は2つのイメージボタンのうちの1つに当たって、サウンドが再生されます。私が抱えている問題は、最初にボタンを押すと、音が普通で大きくて、ボタンのアクティビティが次のレイアウトに移動するということです。レイアウトからメイン画面に戻ってボタンをもう一度押すと、まだ音が聞こえますが、まれにしか聞こえません。時にはほとんど聞こえない。どのようにしてサウンドが常に安定しているのでしょうか?ありがとう!ボタン音量の変化?

DragonFruitActivity.java

package com.Dragon_Fruit; 

import java.io.IOException; 

import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.ImageButton; 

public class DragonFruitActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // ***BUTTON SOUND***// 
     final MediaPlayer buttonSound = MediaPlayer.create(
       DragonFruitActivity.this, R.raw.button_click); 

     ImageButton playbutton = (ImageButton) findViewById(R.id.playbutton); 
     playbutton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       arg0.setBackgroundResource(R.drawable.playbuttonselected); 
       // TODO Auto-generated method stub 
       if(buttonSound.isPlaying()) { 
        buttonSound.stop(); 
       } 

       try { 
        buttonSound.prepare(); 
       } catch (IllegalStateException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

       buttonSound.start(); 

       startActivity(new Intent(DragonFruitActivity.this, 
         playbutton.class)); 
      } 

     }); 
     ImageButton settingsbutton = (ImageButton) findViewById(R.id.settingsbutton); 
     settingsbutton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       if(buttonSound.isPlaying()) { 
        buttonSound.stop(); 
       } 

       try { 
        buttonSound.prepare(); 
       } catch (IllegalStateException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

       buttonSound.start(); 

       startActivity(new Intent(DragonFruitActivity.this, 
         settingsbutton.class)); 
      } 

     }); 
    } 
} 

答えて

0

音はどのくらいですか?もし本当に短い(< 250ms)、私はいくつかの携帯電話(モトローラアトリックス)オーディオドライバがスリープ状態になる間に音がしばらく再生されている問題を見てきました。この場合、オーディオドライバがまだ目を覚ましているため、実際に短い音が再生されないか、最初に再生されたときには本当に静かです。

これについては私はまったく気に入らないが、数ミリ秒の低周波音(約20Hz)でサウンドの前面をパッドすることです。

ボタンを押したときにすぐにサウンドを2〜3回再生することで、これが問題であるかどうかを確認できます。その後の時間がそれより大きければ、これはおそらく問題です。

また、小さな音の再生にはSoundPoolを使用することをおすすめします。それはメモリにサウンドをロードするので、より速く再生することができます。

+0

わかりました。それをどうやってやりますか? – Zach

+0

私はAdobe Auditionを使ってサウンドファイルを編集しています。私はここで無料試用を受けることができると思う:http://www.adobe.com/products/audition.html –

+0

私はサウンドプールをどのように使うべきでしょうか? – Zach

関連する問題