[英]Android studio check if Mediaplayer is playing in a screen widget activity
主屏幕上有一个按钮,可以播放某首歌曲并更改按钮的背景图像。 如果用户再次点击按钮(当音乐播放时),那么音乐应该停止并且按钮的背景图像应该自己回到一般位置。 但看起来程序无法检测到我的 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);
}
}
当我点击按钮时,它应该设置背景图像并停止音乐,但它只是再次启动媒体播放器并且背景图像保持不变。 我不知道如何解决这个问题。 似乎每次都会创建一个新的媒体播放器
它创建一个新的Media Player
,因为该类被重新创建或重新执行。 这将清除所有变量并重新定义它们。 这就是你的问题。
只需创建一个类似MediaPlayerHelper.java
的类名
创建一个公共且静态的MediaPlayer
变量。 像这样:
public static MediaPlayer mp;
现在,当按下按钮时,您可以检查它是否正在播放。 像这样的东西:
if(MediaPlayerHelper.mp != null && MediaPlayerHelper.mp.isPlaying()){ // the media player is currently playing. Stop it. }else{ // the media is not playing. Start it }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.