我有一个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中创建的,在我的主要部分我停止了它。
所以要明确一点:我想在播放声音时在按钮上有另一个图像背景。和声音没有播放时的标准正常背景。
答案 0 :(得分:1)
将stopButton.setBackgroundResource(R.drawable.PLAYINGIMG);
添加到mediaPlayerStart()if语句,其中'PLAYINGIMG'是您想要的背景图像。您只是在创建播放器时更改图像,并使用stop onclick listener将其更改回来。