【问题标题】:Android studio check if Mediaplayer is playing in a screen widget activityAndroid Studio 检查 Mediaplayer 是否正在屏幕小部件活动中播放
【发布时间】:2022-06-23 04:21:59
【问题描述】:

主屏幕上有一个按钮,可以播放某首歌曲并更改按钮的背景图像。如果用户再次点击按钮(当音乐播放时),那么音乐应该停止并且按钮的背景图像应该自己回到一般位置。但看起来程序无法检测到我的 Mediaplayer 是否正在播放。我在这里错过了什么?

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
        AppWidgetManager appWidgetManager= AppWidgetManager.getInstance(context);
        RemoteViews rv= new RemoteViews(context.getPackageName(),
                R.layout.playbtn_widget);
        if (intent.getAction().equals("btnPlay")) {
            if (!mediaPlayer.isPlaying()) {
                mediaPlayer= MediaPlayer.create(context,R.raw.itsmylife);
                mediaPlayer.start();
                rv.setImageViewResource(R.id.imbtnwidget,
                        R.drawable.btnk32);
            } else {
                mediaPlayer.stop();

            }
            mediaPlayer.setOnCompletionListener(mediaPlayer -> {
                rv.setImageViewResource(R.id.imbtnwidget,
                        R.drawable.btnk3);
                appWidgetManager.updateAppWidget(new ComponentName(context,
                        BtnAppWidgetProvider.class), rv);
            });
            appWidgetManager.updateAppWidget(new ComponentName(context,
                    BtnAppWidgetProvider.class), rv);
        }
    }

当我点击按钮时,它应该设置背景图像并停止音乐,但它只是再次启动媒体播放器并且背景图像保持不变。我不知道如何解决这个问题。似乎它每次都会创建一个新的媒体播放器

【问题讨论】:

    标签: java android android-mediaplayer media


    【解决方案1】:

    问题


    它创建一个新的Media Player,因为该类被重新创建或重新执行。这将清除所有变量并重新定义它们。这就是你的问题。

    解决方案


    1. 只需创建一个类似MediaPlayerHelper.java的类名

    2. 创建一个MediaPlayer 的变量,它是公共的和静态的。像这样:

      public static MediaPlayer mp;
      
    3. 现在,当按下按钮时,您可以检查它是否正在播放。像这样的:

      if(MediaPlayerHelper.mp != null && MediaPlayerHelper.mp.isPlaying()){
         // the media player is currently playing. Stop it.
      }else{
         // the media is not playing. Start it
      }
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多