我该如何处理多个音频?

时间:2012-05-07 04:06:43

标签: android audio handler

我制作了一个项目,其中两个文本视图在屏幕上。我使用Ontouch方法为两个textview设置了两个音频。所以当我触摸任何文本视图时它会播放声音。 这是代码

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final TextView tv = (TextView) findViewById(R.id.CustomFontText);
TextView tv1 = (TextView) findViewById(R.id.CustomFontText1);
Typeface tf = Typeface.createFromAsset(getAssets(),
"fonts/DroidSansFallback.ttf");
Typeface tf1 = Typeface.createFromAsset(getAssets(),
"fonts/DroidSans.ttf");
tv.setTypeface(tf);
tv1.setTypeface(tf1);

tv.setOnTouchListener(new OnTouchListener() {
   @Override
   public boolean onTouch(View v, MotionEvent event)   
   {  
       if(event.getAction() == MotionEvent.ACTION_DOWN)  
       {  
           if( v == findViewById( R.id.CustomFontText ))
           {
               MediaPlayer mp=MediaPlayer.create(getBaseContext(), R.raw.robotrock);
                mp.start();
       }  
       return false;  
   }
    return false;  
   }

       });  
 tv1.setOnTouchListener(new OnTouchListener() {
   @Override
   public boolean onTouch(View v, MotionEvent event)   
   {  
       if(event.getAction() == MotionEvent.ACTION_DOWN)  
       {  
           if( v == findViewById( R.id.CustomFontText1 ))
           {
               MediaPlayer mp1=MediaPlayer.create(getBaseContext(), R.raw.nam);
            mp1.start();
           }
       }  
       return false;  
   }  

       });
  }}

我就是这样做的。问题是当我触摸两个文本视图时,两个音频同时播放。 但我希望当我触摸一个文本视图时,音频将播放,当时如果我触摸另一个音频,之前的音频需要停止并播放相应的音频,触摸文本视图。我该如何处理它们?我需要在哪里实现或编辑我的代码?

请帮助!!!

2 个答案:

答案 0 :(得分:0)

全局声明两个媒体播放器实例并尝试此代码

mp=MediaPlayer.create(getBaseContext(), R.raw.robotrock);
    mp1=MediaPlayer.create(getBaseContext(), R.raw.nam);


tv.setOnTouchListener(new OnTouchListener() {
   @Override
   public boolean onTouch(View v, MotionEvent event)   
   {  
       if(event.getAction() == MotionEvent.ACTION_DOWN)  
       {  
           if( v == findViewById( R.id.CustomFontText ))
           {
               mp1.stop();
                mp.start();
       }  
       return false;  
   }
    return false;  
   }

       });  
 tv1.setOnTouchListener(new OnTouchListener() {
   @Override
   public boolean onTouch(View v, MotionEvent event)   
   {  
       if(event.getAction() == MotionEvent.ACTION_DOWN)  
       {  
           if( v == findViewById( R.id.CustomFontText1 ))
           {
            mp.stop();
            mp1.start();
           }
       }  
       return false;  
   }  

       });
  }}

我认为这样可以解决问题......

答案 1 :(得分:0)

我认为你已经创建了两个媒体播放器实例。你要做的就是检查哪个正在播放并停止播放。

tv.setOnTouchListener(new OnTouchListener() {
   @Override
   public boolean onTouch(View v, MotionEvent event)   
   {  
       if(event.getAction() == MotionEvent.ACTION_DOWN)  
       {  
           if( v == findViewById( R.id.CustomFontText ))
           {
               MediaPlayer mp=MediaPlayer.create(getBaseContext(), R.raw.robotrock);
               if (mp1 != null && mp1.isPlaying()) {
                   mp1.stop();
               }
                mp.start();
       }  
       return false;  
   }
    return false;  
   }

       });  
 tv1.setOnTouchListener(new OnTouchListener() {
   @Override
   public boolean onTouch(View v, MotionEvent event)   
   {  
       if(event.getAction() == MotionEvent.ACTION_DOWN)  
       {  
           if( v == findViewById( R.id.CustomFontText1 ))
           {
               MediaPlayer mp1=MediaPlayer.create(getBaseContext(), R.raw.nam);
               if (mp != null && mp.isPlaying()) {
                   mp.stop();
               }
            mp1.start();
           }
       }  
       return false;  
   }