Skip to content Skip to sidebar Skip to footer

Viewpager Swipe Previous Sound

Here i am using viewpager to swipe my images & it plays different sound on each image swipe. Now Its working fine but when i swipe back the sound does not match the image... My

Solution 1:

Move your MediaPlayer object and code for playing the sound to onPageChangeListener of your ViewPager object. Currently it is playing audio only when the items are instantiated.

If you move them to onPageChangeListener it will play on each page change irrespective of if a new item is instantiated or not.

@OverrideprotectedvoidonCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_numbers);
    ViewPagerviewPager= (ViewPager)findViewById(R.id.view_pager);
    ImagePagerAdapteradapter=newImagePagerAdapter();
    viewPager.setAdapter(adapter);
    viewPager.setOnPageChangeListener(player);
    player = MediaPlayer.create(this, R.raw.jingle);
    player.setLooping(true);
    player.setVolume(100, 100);
    player.start();
 }

OnPageChangeListenerplayer=newOnPageChangeListener()
{

    @OverridepublicvoidonPageSelected(int arg0)
    {
        mp = MediaPlayer.create(Numbers.this, mAudio[arg0]);
        mp.start();
    }

    @OverridepublicvoidonPageScrolled(int arg0, float arg1, int arg2)
    {
    }

    @OverridepublicvoidonPageScrollStateChanged(int arg0)
    {
    }
};

Solution 2:

I found my answer. Now this is the code which definitely work

publicclassNumbersextendsActivity {
    MediaPlayer mp;
    MediaPlayer BG;

    @OverridepublicvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_numbers);
        ViewPagerAdapteradapter=newViewPagerAdapter(this, imageArra);
        ViewPagermyPager= (ViewPager) findViewById(R.id.myfivepanelpager);
        myPager.setOnPageChangeListener(player);
        myPager.setAdapter(adapter);
        myPager.setCurrentItem(0);
        BG = MediaPlayer.create(this, R.raw.jingle);
        BG.setLooping(true);
        BG.setVolume(100, 100);
        BG.start();
        mp = MediaPlayer.create(Numbers.this, mAudio[0]);
        mp.start();
    }

    @OverrideprotectedvoidonPause() {
        super.onPause();
        BG.pause();
        }

    @OverrideprotectedvoidonResume() {
    super.onResume();
    BG.start();
    }

    privateint[] mAudio = newint[]{R.raw.one,
                                     R.raw.two,
                                     R.raw.three,
                                     R.raw.four,
                                     R.raw.five,
                                     R.raw.six,
                                     R.raw.seven,
                                     R.raw.eight,
                                     R.raw.nine,
                                     R.raw.ten};

    privateint imageArra[] =  {R.drawable.no1,
                                R.drawable.no2,
                                R.drawable.no3,
                                R.drawable.no4,
                                R.drawable.no5,
                                R.drawable.no6,
                                R.drawable.no7,
                                R.drawable.no8,
                                R.drawable.no9,
                                R.drawable.no10};

    publicOnPageChangeListenerplayer=newOnPageChangeListener()
    {

        @OverridepublicvoidonPageSelected(int arg1)
        {
        mp = MediaPlayer.create(Numbers.this, mAudio[arg1]);
        mp.start();
        }

        @OverridepublicvoidonPageScrolled(int arg0, float arg1, int arg2)
        {
        }

        @OverridepublicvoidonPageScrollStateChanged(int arg0)
        {
        }
    };

    @OverridepublicbooleanonCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.numbers, menu);
        returntrue;
    }

}

Solution 3:

It has worked for me

@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_farm_animals);
    ButterKnife.bind(this);
    farmAnimalAdapter = newFarmAnimalAdapter(this);
    viewPager.setOnPageChangeListener(players);
    viewPager.setAdapter(farmAnimalAdapter);

}
publicint[] animal_images = newint[]{
        R.drawable.cow,
        R.drawable.sheep,
        R.drawable.horse,
        R.drawable.goat
};
publicint[] animal_sound = newint[]{
        R.raw.cow,
        R.raw.sheep,
        R.raw.horse,
        R.raw.goat
};
public String[] names = newString[] {
        "COW","SHEEP","HORSE","GOAT"
};
ViewPager.OnPageChangeListener players= newViewPager.OnPageChangeListener() {
    @OverridepublicvoidonPageScrolled(int i, float v, int i1) {

    }

    @OverridepublicvoidonPageSelected(int i) {
        //audioMediaPlayersound= MediaPlayer.create(getApplicationContext(),animal_sound[i]);
        sound.start();
    }

    @OverridepublicvoidonPageScrollStateChanged(int i) {

    }
};`   publicclassFarmAnimalAdapterextendsPagerAdapter{
    Context mContext;
    LayoutInflater mLayoutInflater;


    publicFarmAnimalAdapter(Context mContext) {
        this.mContext = mContext;
        this.mLayoutInflater = mLayoutInflater;
    }
    @OverridepublicintgetCount() {
        return names.length ;
    }
    @OverridepublicbooleanisViewFromObject(@NonNull View view, @NonNull Object object) {
        returnview== object;
    }

    @NonNull@Overridepublic Object instantiateItem(@NonNull ViewGroup container, int position) {
        mLayoutInflater =(LayoutInflater)mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
        Viewview= mLayoutInflater.inflate(R.layout.farmanimal_adapter_list,container,false);
        ImageViewtxtimage= (ImageView)view.findViewById(R.id.txtimage);
        AppCompatTextViewtxtname= (AppCompatTextView)view.findViewById(R.id.txtname);
        txtimage.setImageResource(animal_images[position]);
        txtname.setText(names[position]);
        container.addView(view);
        return view;
    }

  @OverridepublicvoiddestroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
       container.removeView((RelativeLayout)object);
   }

}

`

`

Post a Comment for "Viewpager Swipe Previous Sound"