-1

オプションメニュー項目をクリックしたときにオーディオを1回だけ再生したい。ユーザーが次に同じアイテムをタップすると、オーディオが停止します。私はそれを考えていますが、問題を解決するのに役立つ解決策が見つかりません。これが私のコードです。ユーザーがアイテムを交互にタップすると、オーディオが交互に再生および停止します。

public boolean onCreateOptionsMenu(Menu menu) 
{
    // TODO Auto-generated method stub
    MenuInflater menuInflater= getMenuInflater();
    menuInflater.inflate(R.menu.menu, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    if (item.getItemId()== R.id.item1)
    {
        Intent intent = new Intent(AthravaShirshaActivity.this, EnglishExpln.class);
        startActivity(intent);
    }
    if(item.getItemId()== R.id.item2)
    {
        MediaPlayer mp= MediaPlayer.create(AthravaShirshaActivity.this, R.raw.mantra);
        mp.start();
        mp.setLooping(false);
        mp.setOnCompletionListener(new OnCompletionListener() 
        {
            @Override
            public void onCompletion(MediaPlayer mp)
            {
                mp.stop();
            }
        });
        item.setIcon(android.R.drawable.ic_media_pause);
    }
    return true;
} 
4

1 に答える 1

0

mponCreate() で公開して初期化 できますMediaPlayer mp= MediaPlayer.create(AthravaShirshaActivity.this, R.raw.mantra);

onOptionsItemSelected

if(mp.isPlaying())
         {
             mp.stop();
         mp=null;
             item.setIcon(android.R.drawable.ic_media_play);
         }
         else
         {
                    mp= MediaPlayer.create(AthravaShirshaActivity.this, R.raw.mantra);
            mp.start();
                mp.setLooping(false);
                mp.setOnCompletionListener(new OnCompletionListener() 
                {
                    @Override
                    public void onCompletion(MediaPlayer mp)
                    {
                        mp.stop();
                    }
                });
                item.setIcon(android.R.drawable.ic_media_pause);
         }
于 2012-07-05T16:46:53.770 に答える