访问控制Android中的Activity

时间:2013-01-04 10:42:58

标签: android android-service android-mediaplayer android-broadcast

我是android新手。我知道我们无法从服务中访问活动的控制权。但是每当我调用服务方法时,我想更改按钮的ImageSource。

这是我在服务中创建的方法:

public void play()
    {
        if (mp.isPlaying()) {
            if (mp != null) {
                mp.pause();
                // Changing button image to play button
                btnPlay.setImageResource(R.drawable.btn_play); // not allowed
            }
        } else {
            // Resume song
            if (mp != null) {
                mp.start();
                // Changing button image to pause button
                btnPlay.setImageResource(R.drawable.btn_pause); // not allowed
            }
        }
    }

在活动中我在点击播放按钮上调用此方法。如何在服务中实现此功能。如何更改按钮的图像源。请清除我的怀疑。感谢名单。

2 个答案:

答案 0 :(得分:0)

为这些事件创建自定义事件对象,并将您的活动注册为侦听器。

注意:不要忘记取消注册,因为它可能会导致内存泄漏。

答案 1 :(得分:0)

试试此代码

 public class MainActivity extends Activity
 {
/** Called when the activity is first created. */

public static MainActivity mThis;
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mThis = this;

}

}

public void play()
{

 Button btnPlay=((Button)MainActivity.mThis.findViewById(R.id.btnPlay));
  if (mp.isPlaying()) {
    if (mp != null) {
        mp.pause();
        // Changing button image to play button

        btnPlay.setImageResource(R.drawable.btn_play); 
    }
} else {
    // Resume song
    if (mp != null) {
        mp.start();
        // Changing button image to pause button
        btnPlay.setImageResource(R.drawable.btn_pause); 
    }
}