-1

2つのテキストビューが画面に表示されるプロジェクトを作成しました.Ontouchメソッドで2つのテキストビューに2つのオーディオを設定しました.したがって、テキストビューのいずれかをタッチするとサウンドが再生されます. ここにコードがあります

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

       });
  }}

それが私がやった方法です。問題は、両方のテキストビューに触れると、両方のオーディオが同時に再生されることです。しかし、あるテキストビューに触れるとオーディオが再生され、その時点で別のテキストビューに触れると、前のオーディオを停止して、テキストビューに触れた対応するオーディオを再生する必要があります。または私のコードを編集しますか?

助けてください!!!

4

2 に答える 2

0

2つのメディアプレーヤーインスタンスをグローバルに宣言し、このコードを試してください

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

       });
  }}

これで問題は解決すると思います......

于 2012-05-07T04:24:31.790 に答える
0

メディア プレーヤーの 2 つのインスタンスを既に作成していると思います。あなたがしなければならないことは、どれが再生されているかを確認して停止することです。

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;  
   }  
于 2012-05-07T04:39:18.400 に答える