android - 如何处理多个音频?

标签 android audio handler

我做了一个在屏幕上有两个textview的项目。我用Ontouch方法为两个textview设置了两个音频,所以当我触摸任何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;  
   }  

       });
  }}

那就是我的方法。问题是当我同时触摸两个文本 View 时,两个音频都同时播放。
但是我想当我触摸一个textview时将播放音频,而当我触摸另一个textview时,先前的音频需要停止并播放被textview触摸的相应音频。那么我应该如何处理它们呢?或编辑我的代码?

请帮助!!!

最佳答案

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

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;  
   }  

关于android - 如何处理多个音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10476523/

相关文章:

android - Android 登录后返回按钮(重新输入问题)

android - 使用 ffmpeg 创建带有图像的视频时出错

java - 编辑文本自动计算

ios - 大部分为静音的iOS应用中的音量控制

android - 在gridview中获取水平和垂直间距

silverlight - 在Silverlight + XNA应用程序中播放音乐

java - 音频管理器分割为比 Android 提供的更多级别

ios - 使用 NSURLSession 加载数据并关闭 iOS

android - 当 getAccuracy() 低于 100 时如何停止处理程序

handler - 如何为 strope muc 插件添加 onmessage 处理程序