在mp.start();做setImageResource怎么样?

时间:2014-02-23 11:42:46

标签: android button audio syntax

在第一个OnCreate中我有一个button_stop SetImageResource,当按下时它会将图标更改为静音图标,尽管在我的代码中我想输入一个函数,说明何时mp.start();做另一个SetImageResource来使同一个按钮显示一个扬声器而不是一个静音图标。

如何在mp.start();这个函数叫做?

button_stop.setImageResource(R.drawable.ic_action_volume_on);

我想要做的是按下声音按钮(button_1,button_2),button_stop显示扬声器图标。但是,当按下button_stop时,它会显示一个静音图标(并释放MediaPlayer)。

我可以让它释放MediaPlayer并在按下button_stop时将图像更改为静音图标,但是在按下声音按钮(button_1等)后打开MediaPlayer后我无法显示扬声器图标)

这是我目前的代码。我尝试在onClick中输入SetImageResource,但它会停止正确调用MediaPlayer。

import android.app.Activity;
import android.app.PendingIntent;
import android.app.TaskStackBuilder;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;

/**
 * @author Prabu
 *
 */
public class MainActivity extends Activity implements OnClickListener{
    private MediaPlayer mp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        Button button1=(Button)findViewById(R.id.button_1);
        Button button2=(Button)findViewById(R.id.button_2);
        final ImageView button_stop=(ImageView)findViewById(R.id.button_stop);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button_stop.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if(null!=mp){
                    mp.release();
                    button_stop.setImageResource(R.drawable.ic_action_volume_muted);
                     }
            }});
    }

    public void onClick(View v) {
        int resId;
        switch (v.getId()) {
        case R.id.button_1:
            resId = R.raw.a;
            break;
        case R.id.button_2:
            resId = R.raw.b;
            break;
        default:
            resId = R.raw.a;
            break;
        }
        // Release any resources from previous MediaPlayer
        if (mp != null) {
            mp.release();
        }
        // Create a new MediaPlayer to play this sound
        mp = MediaPlayer.create(this, resId);
        mp.setLooping(true);
        mp.start();

    }{


                        }
    @Override
    protected void onDestroy() {
        if(null!=mp){
            mp.release();
        }
        super.onDestroy();
    }}

2 个答案:

答案 0 :(得分:3)

所以我对你想要的东西的理解只是为了在调用mp.start()时打开扬声器图像。我只在你的mp.start()代码中看到一个实例,所以这会在发生这种情况时改变停止按钮上的图像。

public void onClick(View v) {
    int resId;
    switch (v.getId()) {
    case R.id.button_1:
        resId = R.raw.a;
        break;
    case R.id.button_2:
        resId = R.raw.b;
        break;
    default:
        resId = R.raw.a;
        break;
    }
    // Release any resources from previous MediaPlayer
    if (mp != null) {
        mp.release();
    }
    // Create a new MediaPlayer to play this sound
    mp = MediaPlayer.create(this, resId);
    mp.setLooping(true);
    mp.start();

    //This is the added code to set the stop button.
    ImageView button_stop=(ImageView)findViewById(R.id.button_stop);
    button_stop.setImageResource(R.drawable.ic_action_volume_on);

}

答案 1 :(得分:1)

使用setBackgroundResource(R.id.img)代替setImageResource(R.id.image)将解决问题。替换这部分代码:

button_stop.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(null!=mp){
                mp.release();
                button_stop.setBackgroundResource(R.drawable.ic_action_volume_muted);
                 }
        }});

我希望它有所帮助