繁体   English   中英

Android:如何从Fragment中的MainActivity获取MediaPlayer对象?

[英]Android: how to get a MediaPlayer object from the MainActivity in a Fragment?

我正在开发一个android应用程序,并且正在使用NavigationDrawer ,只有一个活动( MainActivity )和Fragments。 我对无线电实况流按钮ActionBar ,所以我做的一个目的MediaPlayerMainActivity的实时流按钮,它的正常工作,现在我有一个片段一些声音文件,我想获得mediaPlayer对象我在MainActivity中制作了以便使用它。 请注意,实时流按钮始终在应用程序顶部可见,因此,如果我处在具有声音文件的片段中,我希望能够收听声音文件,并且如果我单击实时流按钮,则声音文件将被暂停并且实时流将打开。

这是我的代码:这是MainActivity(仅是相对部分):

public class MainActivity extends ActionBarActivity {

   private static final String RADIO_STREAM_URL= "http://198.178.123.23:8662/stream/1/;listen.mp3";
   MediaPlayer mediaPlayer;
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
     // Inflate the menu; this adds items to the action bar if it is present.

       getMenuInflater().inflate(R.menu.main, menu);
       mediaPlayer = new MediaPlayer();
       mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
       try {
           mediaPlayer.setDataSource(RADIO_STREAM_URL);
       } catch (IOException e) {
           e.printStackTrace();
       }

       return true;
   }
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {

    if (item != null )
    {
        if(item.getItemId() == android.R.id.home){
            if (mDrawerLayout.isDrawerOpen(Gravity.END)){
                mDrawerLayout.closeDrawer(Gravity.END);
            } else {
                mDrawerLayout.openDrawer(Gravity.END);
            }
        }else if(item.getItemId() == R.id.action_settings){
            try {
                mediaPlayer.prepareAsync();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            }


            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mediaPlayer) {
                    if(mediaPlayer.isPlaying()){
                        mediaPlayer.stop();
                        Log.e("ANA Radio","was playing");
                    }else{
                        Log.e("ANA Radio","was not playing");

                        mediaPlayer.start();
                    }
                }
            });
        }

    }
    return false;
}

现在如何在Fragment中获取mediaPlayer对象?

尝试以下操作:在您的片段中,您可以编写以下代码以获取MediaPlayer对象:

((MainActivity)getActivity()).mediaPlayer

另一个解决方案是,使mediaPlayer成为类的成员。 为此,请执行以下操作:

public static MediaPlayer mediaPlayer;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM