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

标签 java android button audio

我有一个 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/

相关文章:

java - 我如何使用java获得多个单词的上位词

java - PHP 为 ls 命令返回问号

java - uber jar 内的 HttpServlet 可以发送位于 jar 内的页面吗?

java - 启动 android studio 时未正确指定 vm 选项

android - Mysql 与 Parse.com

ruby-on-rails - 以简单的形式为提交按钮设置默认类

html - 按钮百分比宽度调整大小问题

java - 如何用多个分隔符分隔字符串?

jquery - 使用 :before :after with Font Awesome Icons 切换按钮

c# - 推出 Beta 版时的 Google Play 游戏服务 : ERROR_NOT_AUTHORIZED,