想在viewpager刷卡播放声音声音、viewpager

2023-09-07 14:46:04 作者:裸奔的猪~ 3~

我工作的Andr​​oid应用程序可以播放背景音乐时的图像刷卡。我已经通过多种教程和放了;发现codeS&放大器;我试图为相同,但它不会为我工作。这是我的code,我试过..

i am working on android app which can play background sound whenever image is swipes. I have gone through multiple tutorials & found codes & i tried for the same but it won't work for me. Here is my code which i tried..

package com.android.learning_numbers;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class Numbers extends Activity {

    private static final OnPageChangeListener change = null;
    public static MediaPlayer mp = null;

    @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_numbers);
         ViewPager viewPager = (ViewPager)findViewById(R.id.view_pager);
         ImagePagerAdapter adapter = new ImagePagerAdapter();
         viewPager.setAdapter(adapter);
         viewPager.setOnPageChangeListener(change);}

     private class ImagePagerAdapter extends PagerAdapter {

         private int[] mImages = new int[] {R.drawable.sun,R.drawable.sky,R.drawable.moon,};


         private int[] mAudio= new int[]{R.raw.sun,R.raw.sky,R.raw.moon,};
         @Override
         public int getCount() {
         return mImages.length;
           }
         @Override
         public boolean isViewFromObject(View view, Object object) {
            return view == ((ImageView) object);
               }
         @Override
         public Object instantiateItem(ViewGroup container, int position) {
            Context context = Numbers.this;
            ImageView imageView = new ImageView(context);
            int padding =context.getResources().  
            getDimensionPixelSize(R.dimen.activity_vertical_margin);
            imageView.setPadding(padding, padding, padding, padding);
            imageView.setScaleType(ImageView.ScaleType.CENTER);
            imageView.setImageResource(mImages[position]);
            ((ViewPager) container).addView(imageView, 0); 
            return imageView;
            }

         public OnPageChangeListener change = new OnPageChangeListener() {

             @Override public void onPageSelected(int position) {
                 Log.d(ACTIVITY_SERVICE, "OnPageSelected");
                 if 

                 (mp != null) {
                  mp.reset();
                  mp.release();
                 }
                 mp = MediaPlayer.create(Numbers.this, mAudio[position]);
                 mp.start();
             }
             @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
             @Override public void onPageScrollStateChanged(int state) {}
            };



         @Override
         public void destroyItem(ViewGroup container, int position, Object object) {
           ((ViewPager) container).removeView((ImageView) object);
         }
     }
     }

正如我在这里觉得声音不是调用类的图像刷卡。有没有在我的code任何错误?因为这里OnPageChangeListener工作不适合我的。这究竟是什么解决办法吗?如何修改我的声音code,它为我的作品?

As i think here sound is not called by class on image swipe. Is there any error in my code? Because here OnPageChangeListener is not working for me at all. What is the solution for this? How do i modify my sound code that works for me?

推荐答案

试试这个code和;根据您的需要进行修改。它为我的作品。

Try this code & make changes according to your needs.. It works for me..

public class Alphabets extends Activity {

    MediaPlayer mp;
    MediaPlayer BG;




    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_numbers);
        ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageArra);
        ViewPager myPager = (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(Alphabets.this, mAudio[0]);
        mp.start();
}

    @Override
    protected void onPause() {
        super.onPause();
        BG.pause();
        }

    @Override
    protected void onResume() {
    super.onResume();
    BG.start();
    }

    private int[] mAudio = new int[]{R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,
                                     R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,R.raw.one,};

    private int imageArra[] =  {R.drawable.ab,R.drawable.bc,R.drawable.cd,R.drawable.de,R.drawable.ef,R.drawable.fg,R.drawable.gh,R.drawable.hi,R.drawable.ij,R.drawable.jk,R.drawable.kl,R.drawable.lm,R.drawable.mn,
                                R.drawable.no,R.drawable.op,R.drawable.pq,R.drawable.qr,R.drawable.rs,R.drawable.st,R.drawable.tu,R.drawable.uv,R.drawable.vw,R.drawable.wx,R.drawable.xy,R.drawable.yz,R.drawable.zz};

    public  OnPageChangeListener player = new OnPageChangeListener()
    {

        @Override
        public void onPageSelected(int arg1)
        {
        mp = MediaPlayer.create(Alphabets.this, mAudio[arg1]);
        mp.stop();
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2)
        {
        }

        @Override
        public void onPageScrollStateChanged(int arg0)
        {
        }
    };

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.numbers, menu);
        return true;
    }

}