Android - 播放和停止声音

时间:2013-07-08 14:02:05

标签: android

播放声音并阻止声音的最佳方式是什么?

我尝试使用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");
        }

1 个答案:

答案 0 :(得分:0)

我假设这个函数多次被调用?问题是您要将streamID添加到本地列表。每次调用函数时都会重新创建该列表,因此当您尝试调用stop时,列表将始终为空。

如果它只被调用一次,那么问题是你永远不会叫停止,只是玩(如果它们在它们的单独分支中)。