Utilisé ViewPager pour les images glissantes, chaque image surclic diffère MP3 différents.Mediaplayer répondre à un deuxième clic pour faire une pause
application dont 50 pages (images) & 50 mp3 différents, tous les mp3 stockés sur l'application elle-même.
ex. Flux de première page MP3 (un), deuxième page MP3 (deux) et ainsi de suite jusqu'à la page cinquante.
PREMIER:
son beau travail juste une seule question qui est:
In any page --> clicking the image -->
PLAY MP3(one) --> click again--> PAUSE MP3 -->
in paused state of MP3(one) SWIPE to next page -->
--> in next page --> clicking the image -->
PLAY MP3(two) --> click to pause the MP3(two)
--> it doesn't respond to first click,it respond to second click to pause MP3(two).
DEUXIÈME:
l'application contient 50 pages et 50 MP3 différents, ne j'ai besoin pour répéter le code mediaplayer 50 fois que j'ai déjà fait, ou il y a une meilleure approche pour faire cela en code unique appliqué à tous les 50 mediaplayer MP3, comme tout a la même fonction cycle.
des conseils s'il vous plaît et comment l'appliquer dans le codage.
MainActivity:
public class MainActivity extends Activity {
private ViewPager mViewPager;
MediaPlayer mp;
private boolean isPaused;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mViewPager= (ViewPager) findViewById(R.id.view_pager);
ImageAdapter adapter = new ImageAdapter(this);
mViewPager.setAdapter(adapter);
final GestureDetector tapGestureDetector = new GestureDetector(this, new TapGestureListener());
mViewPager.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
tapGestureDetector.onTouchEvent(event);
return false;
}
});
}
private class TapGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
if (mViewPager.getCurrentItem() == 0) {
if (mp != null) {
if (isPaused) {
mp.start();
isPaused = false;
} else {
mp.pause();
isPaused = true;
}
} else {
mp = MediaPlayer.create(MainActivity.this, R.raw.aa);
mp.start();
}
}
if (mViewPager.getCurrentItem() == 1) {
if (mp != null) {
if (isPaused) {
mp.start();
isPaused = false;
} else {
mp.pause();
isPaused = true;
}
} else {
mp = MediaPlayer.create(MainActivity.this, R.raw.bb);
mp.start();
}
}
if (mViewPager.getCurrentItem() == 2) {
if (mp != null) {
if (isPaused) {
mp.start();
isPaused = false;
} else {
mp.pause();
isPaused = true;
}
} else {
mp = MediaPlayer.create(MainActivity.this, R.raw.cc);
mp.start();
}
}
if (mViewPager.getCurrentItem() == 3) {
if (mp != null) {
if (isPaused) {
mp.start();
isPaused = false;
} else {
mp.pause();
isPaused = true;
}
} else {
mp = MediaPlayer.create(MainActivity.this, R.raw.dd);
mp.start();
}
}
//AND SO ON FOR 50 PAGES//
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
if (mp == null) {
return;
}
mp.release();
mp = null;
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
});
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer m) {
Toast.makeText(MainActivity.this,
"COMPLETED", Toast.LENGTH_LONG).show();
// Set the MainActivity member to null
MainActivity.this.mp = null;
}
});
return super.onSingleTapConfirmed(e);
}
}
}
ImageAdapter:
public class ImageAdapter extends PagerAdapter {
Context context;
private int[] GalImages = new int[] {
R.drawable.a,
R.drawable.b,
R.drawable.c,
R.drawable.d,
};
ImageAdapter(Context context){
this.context=context;
}
@Override
public int getCount() {
return GalImages.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
int padding = context.getResources().getDimensionPixelSize(R.dimen.activity_horizontal_margin);
imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setImageResource(GalImages[position]);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
Je suis nouveau android, j'ai essayé de le réparer, mais sans succès, son application simple comprend juste MainActivity & ImageAdapter.
i essayé le code ci-dessous également toujours le problème pas résolu:
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
}
mp.release();
mp = null;
}
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
});
MISE À JOUR:
Dans une page:
disons la page (un) ---> cliquez pour lire MP3 ---> (lecture) ---> cliquer pour faire une pause MP3 ---> (pause) ---> glisser vers n'importe quelle page Rt ou Lf ---> (glissé sur la page (deux) par exemple) ---> clique ici pour jouer MP3 sur la page (deux) ---> (joue) ---> clique pour mettre en pause MP3 sur la page (deux) ---> (pause) - -> (toutes les actions onclick précédentes fonctionnent correctement) ---> cliquer pour reprendre la lecture MP3 dans la page (deux) qui est déjà en état de pause ====> MAIS par erreur lorsque vous cliquez sur l'image de la page (deux) pour reprendre la lecture du MP3, votre doigt pas droit, son légèrement incliné de sorte que le doigt cliquez sur conduire à (cliquez sur la page (deux) et dans le même temps glisser vers la page (trois) ====> voici le numéro de la page (trois) MP3 commence à jouer par lui-même depuis le début.
Je souhaite que cela se produise occasionnellement ou par erreur pour ne pas commencer à lire le MP3 en page (trois) jusqu'à ce que je clique sur l'image de la page (trois) puis commence à lire le MP3.
toute aide sera vraiment appréciée.
s'il vous plaît j'ai petit problème, si vous avez un conseil, dans n'importe quelle page ---> cliquez pour jouer ---> cliquez pour pause - -> balayez vers n'importe quelle page Rt ou Lf ---> cliquez ici pour jouer ---> cliquez pour mettre en pause ---> (fonctionne correctement) ---> cliquez pour résumer mais balayez par erreur vers la page suivante ---> commencer immédiatement la page MP3 immédiatement sans cliquer dessus, Je veux même si mon doigt clique mène accidentellement à une autre page pour commencer à cliquer pas par lui-même. – frozenhill4
ok si cette réponse vous a aidé s'il vous plaît l'accepter et attribuer la prime et votre deuxième question n'est pas claire. Comme lorsque vous balayez vers la page suivante ou précédente si vous devez lire le mp3 immédiatement ou il devrait jouer après avoir balayer sur la page et en cliquant dessus? –
@ReyanshMishra s'il vous plaît ne pas imposer votre réponse sur OP & force pour vous envoyer prime, S'il a des doutes les effacer. Si le problème est résolu, il acceptera sûrement et vous fournira la prime. – Gattsu