3

ViewPagerに問題があり、このサイトまたはGoogle検索で回答が見つかりません。
ページをスワイプしながら短い音を再生するにはどうすればよいですか?
コードを変更するにはどうすればよいですか。メディアプレーヤー/再生サウンドを追加したいのですが。(rawフォルダー内のサウンド)
ありがとう、

@Override
public void onCreate(Bundle savedInstanceState) {    
super.onCreate(savedInstanceState);    
setContentView(R.layout.main);     
MyPagerAdapter adapter = new MyPagerAdapter();   
ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);    
myPager.setAdapter(adapter);    
myPager.setCurrentItem(2);
}



private class MyPagerAdapter extends PagerAdapter { 

        public int getCount() { 
                return 5; 
        } 

        public Object instantiateItem(View collection, int position) { 

                LayoutInflater inflater = (LayoutInflater) collection.getContext() 
                                .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

                int resId = 0; 
                switch (position) { 
                case 0: 
                        resId = R.layout.farleft; 
                        break; 
                case 1: 
                        resId = R.layout.left; 
                        break; 
                case 2: 
                        resId = R.layout.middle; 
                        break; 
                case 3: 
                        resId = R.layout.right; 
                        break; 
                case 4: 
                        resId = R.layout.farright; 
                        break; 
                } 

                View view = inflater.inflate(resId, null); 

                ((ViewPager) collection).addView(view, 0); 

                return view; 
        } 
        @Override 
        public void destroyItem(View arg0, int arg1, Object arg2) { 
                ((ViewPager) arg0).removeView((View) arg2); 
         } 

        @Override 
        public boolean isViewFromObject(View arg0, Object arg1) { 
                return arg0 == ((View) arg1); 
         } 

        @Override 
        public Parcelable saveState() { 
                // TODO Auto-generated method stub 
                return null; 
        } 
4

2 に答える 2

1

SoundPoolを使用します。短いサウンド(特にゲーム、マルチメディアアプリ)を再生するように特別に設計されています。

ここにチュートリアルがあります-http://content.gpwiki.org/index.php/Android:Playing_Sound_Effects_With_SoundPool

于 2012-09-06T10:13:26.747 に答える
1

例:

private static final int rId = R.raw.sound;
private int sid=-1;
private boolean loaded = false;
SoundPool soundPool;

private SoundPool.OnLoadCompleteListener listener = 
new SoundPool.OnLoadCompleteListener(){
@Override
public void onLoadComplete(SoundPool soundPool, int sid, int status){ // could check status value here also
  if (this.sid == sid) {
    this.loaded = true;
  }
}
};


public void initSound() {
  soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 100);
  soundPool.setOnLoadCompleteListener(listener);
  this.sid = soundPool.load(getApplicationContext(), rId, 1); 
}

public void SoundPlay() {
  new Thread(new Runnable() {
    @Override
    public void run() {
      if (loaded) {
      soundPool.play(this.sid, 1.0, 1.0, 1, 0, 1f);     
        }
  }).start();
}

したがって、次のようなコンストラクターを追加します。

MyPagerAdapter() {
  initSound();
}

そして、SoundPlay()を使用してinstantiateItem()で毎回再生します。

私は上記のコードをそのままテストしていませんが、私自身のものでも同様のものを使用しています。

于 2012-09-06T10:33:29.373 に答える