播放声音并阻止声音的最佳方式是什么?
我尝试使用RingtoneManager,MediaPlayer和SoundPool,但未能停止声音。
使用RingtoneManager TYPE_ALARM时有没有办法停止声音?
请一个简单的片段。
这是我尝试的最后一件事:
SoundPool pool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
List<Integer> streams = new ArrayList<Integer>();
int soundId = pool.load(getApplicationContext(), R.drawable.alarm, 1); //There are several versions of this, pick which fits your sound
try{
if(myWifiInfo.getRssi() < -55)
{
/*
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
r.play();*/
Thread.sleep(1000);
int streamId = -1;
streamId = pool.play(soundId, 1.0f, 1.0f, 1, 0, 1.0f);
streams.add(streamId);
textRssi.setText(String.valueOf(myWifiInfo.getRssi() + " WARNING"));
}
else {
Log.e("WIFI","Usao");
for (Integer stream : streams) {
pool.stop(stream);
}
streams.clear();
Log.e("WIFI","Izasao");
}
答案 0 :(得分:0)
我假设这个函数多次被调用?问题是您要将streamID添加到本地列表。每次调用函数时都会重新创建该列表,因此当您尝试调用stop时,列表将始终为空。
如果它只被调用一次,那么问题是你永远不会叫停止,只是玩(如果它们在它们的单独分支中)。