gpt4 book ai didi

java - 更改来自类的事件上的按钮

转载 作者:行者123 更新时间:2023-12-01 12:05:53 24 4
gpt4 key购买 nike

我有一个 SoundManager 类,我在其中创建了一个 SoundManger 并让它播放!

这是播放声音的类的函数:

    public void mediaPlayerStart() {
Uri alert = getAlarmUri();
Boolean mute = mute();

if(mMediaPlayer == null && !mute) {
try {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
mMediaPlayer.setDataSource(context, alert);
mMediaPlayer.setLooping(true);
mMediaPlayer.prepare();
mMediaPlayer.start();

} catch (Exception e) {
e.printStackTrace();
}
}
}

我的主要 Activity 中有一个带有图像背景的按钮。现在我希望按钮在播放声音时更改为另一个背景。

但首先我无法更改 SoundManager 类文件中 MainActivity 的按钮,其次我无法从 SoundManager 传递到 MainActivity,无论声音是否正在播放?

这是我的主按钮:

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button stopButton = (Button)findViewById(R.id.StopButton);

stopButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
SoundManager.stop();
stopButton.setBackgroundResource(R.drawable.normal);
}
});
}

声音是在名为 GcmIntentService 的类中创建的。我在那里构建一个通知并播放声音。以下是该函数的摘录:

private void sendNotification(String msg) {
//is media player playing a sound?

mNotificationManager = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);


long when = System.currentTimeMillis();
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this, MainActivity.class), 0);

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Boolean notifyAlways = preferences.getBoolean("ring24h",true);
if(notifyAlways){
System.out.println("Immer");

Handler handler = new Handler(getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
SoundManager soundManager = new SoundManager(getApplicationContext());
soundManager.acquire();
soundManager.mediaPlayerStart();
}
});

所以声音是在 GcmIntentService 中创建的,并且在我的 main 中我停止了它。

所以要明确一点:当声音播放时,我希望按钮上有另一个图像背景。以及不播放声音时的标准正常背景。

最佳答案

stopButton.setBackgroundResource(R.drawable.PLAYINGIMG); 添加到您的 mediaPlayerStart() if 语句中,其中“PLAYINGIMG”是您想要的背景图像。您只需在创建播放器时更改图像,然后使用 stop onclick 监听器将其更改回来。

关于java - 更改来自类的事件上的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27605088/

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