更改来自课程的事件的按钮

时间:2014-12-22 14:54:26

标签: 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();
        }
    }
}

我的主要活动中有一个带有图像背景的按钮。现在我想,在播放声音时按钮会变为另一个背景。

但首先我无法在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中创建的,在我的主要部分我停止了它。

所以要明确一点:我想在播放声音时在按钮上有另一个图像背景。和声音没有播放时的标准正常背景。

1 个答案:

答案 0 :(得分:1)

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