gpt4 book ai didi

android - 通知中的播放/暂停按钮图像,Android

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:10:07 24 4
gpt4 key购买 nike

我已经实现了音乐播放器,它会在播放流式音频时触发自定义通知。

一切正常,我可以使用通知中的按钮播放/暂停音频。唯一的问题是图像按钮:它无法通过单击按钮来指示播放/暂停来更改图像。

在 RemoteReceiver 中使用 remoteViews.setImageViewResource() 无效。使用 BroadcastReceiver 完成控制,这是从播放器 Activity 触发通知的代码:

  public void setNotification(String songName){
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager notificationManager = (NotificationManager) getSystemService(ns);

@SuppressWarnings("deprecation")
Notification notification = new Notification(R.drawable.ic_launcher, null, System.currentTimeMillis());

RemoteViews notificationView = new RemoteViews(getPackageName(), R.layout.notification_view);
notificationView.setImageViewResource(R.id.button1, R.drawable.pause);
notificationView.setTextViewText(R.id.textView1, songName);

//the intent that is started when the notification is clicked (works)
Intent notificationIntent = new Intent(this, PlayerActivity.class);
PendingIntent pendingNotificationIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

notification.contentView = notificationView;
notification.contentIntent = pendingNotificationIntent;

Intent switchIntent = new Intent("com.example.test.ACTION_PLAY");
PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 0, switchIntent, PendingIntent.FLAG_UPDATE_CURRENT);

notificationView.setOnClickPendingIntent(R.id.play_pause, pendingSwitchIntent);
notificationManager.notify(1, notification);
}

notification.xml内容为

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">


<ImageView
android:layout_alignParentLeft="true"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/ic_launcher"
android:id="@+id/imgAppIc" />



<TextView
android:layout_toRightOf="@id/imgAppIc"
android:singleLine="true"
android:id="@+id/textView1"
android:ellipsize="marquee"
android:layout_marginLeft="7dp"
android:layout_marginTop="10dp"
android:marqueeRepeatLimit ="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"
android:layout_width="170dp"
android:layout_height="wrap_content"/>


<ImageButton
android:id="@+id/play_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/play"

/>

</RelativeLayout>

这是 RemoteRecivier 类

public class RemoteControlReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.notification_view);

if(action.equalsIgnoreCase("com.example.test.ACTION_PLAY")){
if(mediaplayer.isPlaying()){
mediaplayer.pause();

remoteViews.setImageViewResource(R.id.button1, R.drawable.play);
}
else {
mediaplayer.start();
remoteViews.setImageViewResource(R.id.button1, R.drawable.pause);
}
}
}
}

最后, list 是

 <receiver android:name=".RemoteControlReceiver">
<intent-filter>
<action android:name="com.Music.app.ACTION_PLAY" />
</intent-filter>


</receiver>

<activity android:name="PlayerActivity" />

最佳答案

您必须在更改后将 notification.contentView 设置为新的 remoteView,以便它可以更新通知 View 本身。

意思是,在您的 BroadcastReceiver 中收到操作后,使用所需的按钮显示(暂停或播放)重新构建您的通知

希望对你有帮助

关于android - 通知中的播放/暂停按钮图像,Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24436977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com