2014-01-09 3 views
0

Я делаю приложение для Android, на котором пользователь просматривает разные изображения. Я хочу воспроизвести другой звук на каждом изображении, соответственно. Это мой код выглядитВоспроизведение звука при просмотре изображений

package com.horizontalscrollviewwithpageindicator; 

import java.util.HashMap; 
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.view.ViewPager; 
import android.view.Menu; 
import android.media.AudioManager; 
import android.media.SoundPool; 

public class PageIndicatorActivity extends Activity { 

private static final Object S1 = null; 
private static final Object S2 = null; 
private static final Object S3 = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageArra); 
ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager); 
myPager.setAdapter(adapter); 
myPager.setCurrentItem(0); 
} 

public class OurSoundPlayer{ 
public static final int S1 = R.raw.ss; 
public static final int S2 = R.raw.uu; 
public static final int S3 = R.raw.rr; 
} 

private static SoundPool soundPool; 
private static HashMap soundPoolMap; 

public static void initSounds(Context context) { 
soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 100); 
soundPoolMap = new HashMap(3);  
soundPoolMap.put(S1, soundPool.load(context, R.raw.ss, 1)); 
soundPoolMap.put(S2, soundPool.load(context, R.raw.uu, 2)); 
soundPoolMap.put(S3, soundPool.load(context, R.raw.rr, 3)); 
} 

public static void playSound(Context context, int soundID) { 
if(soundPool == null || soundPoolMap == null){ 
initSounds(context); 
} 
float volume = (float) 1.0; 
soundPool.play((Integer) soundPoolMap.get(soundID), volume, volume, 1, 0, 1f); 
} 
private int imageArra[] = {R.drawable.a, R.drawable.b, 
R.drawable.c, R.drawable.d, 
R.drawable.e, R.drawable.f, 

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

Теперь здесь я хочу играть различные звуки в зависимости от изображения, которые находятся в массиве.

+0

вы можете добавить слушателя на страницу просмотра onPageChanged и воспроизвести звук –

+0

фактически я новичок в android. У меня нет лишних знаний об этом, я только начал строить, можете ли вы сказать мне, как это сделать? –

+0

Возможный дубликат [Проведите изображения с небольшим звуком] (http://stackoverflow.com/questions/21014928/swipe-images-with-little-sound) – Nfear

ответ

0

Я думаю, что это должно дать вам представление о том, как играть звук каждый раз, когда ваш переключатель к следующему View

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageArra); 
    ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager); 
    myPager.setOnPageChangeListener(new OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int pageId) { 
      //TODO you will have to add some logic here that matches the 
      // the pages id to the soundId 
      playSound(this, pageId); 
     } 

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

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
     } 
    }); 
    myPager.setAdapter(adapter); 
    myPager.setCurrentItem(0); 
} 

public static void playSound(Context context, int soundID) { 
    if(soundPool == null || soundPoolMap == null){ 
     initSounds(context); 
    } 
    float volume = (float) 1.0; 
    soundPool.play((Integer) soundPoolMap.get(soundID), volume, volume, 1, 0, 1f); 
} 

я не пробовал это, но это должно работать. Или, по крайней мере, дать вам представление о том, как действовать.

+0

Эй, мне нужно переопределить этот код? –

+0

вам необходимо реализовать onPageChnageListener в соответствии с вашими потребностями. Я не знаю, что именно вы хотите сделать. но воспроизведение звука на новом pahe selectio будет определенно работать следующим образом: –

+0

Я сделал это. но звук не синхронизируется с изображением. Я использовал этот код для звука. if (mp! = null) {mp.reset(); \t mp.release(); \t} \t \t mp = MediaPlayer.create (Numbers.this, mAudio [position]); \t \t \t \t mp.start(); \t \t \t \t return imageView; –

Смежные вопросы