【问题标题】:Detect if sound is playing/managing toggle button检测声音是否正在播放/管理切换按钮
【发布时间】:2012-08-08 19:12:19
【问题描述】:

我无法弄清楚如何管理打开/关闭音乐的切换按钮。当用户单击它时,它应该不断循环直到它被关闭。我正在使用 soundpool,如果有某种方式我可以通过使用有帮助的 soundpool 或媒体播放器检测我的媒体是否正在播放。但是我在文档中找不到任何相关的东西,类似的问题也没有很好的答案; How to tell if a sound is still playing in soundpool

到目前为止我有这个:

final ToggleButton tglbuttn = (ToggleButton) findViewById(R.id.toggleButton1);

        final SoundPool mySp = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
        final int soundId = mySp.load(this, R.raw.music, 1);

        tglbuttn.setChecked(????????); //what could go here?
        tglbuttn.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {


            }

如果我能以某种方式获得类似蓝牙切换开关的功能,但使用 soundpool/mediaplayer,一种将媒体播放的实际状态与切换按钮的状态联系起来的方法:

tglbtn.setChecked(myBluetooth.isEnabled());

【问题讨论】:

    标签: android adt soundpool


    【解决方案1】:

    您可以使用isChecked 方法来切换按钮。试试这个:

    //Make your activity implements OnClickListener
    public class MyActivity extends Activity implements OnClickListener {
    

    然后:

    //In your OnCreate()
    tglbuttn.setOnClickListener(this);
    

    最后:

    //Add this method to your Activity
    @Override 
    public void onClick(View v) {
        if(v==tglbuttn) {
            if(v.isChecked())
                play();
            else                
                stop();
            tglbuttn.setChecked(!tglbuttn.isChecked()); //It will be toggled
         }
    }
    

    【讨论】:

    • 我知道 isChecked() 没有为 View 定义,如果我添加演员表,一旦按下按钮,应用程序就会崩溃。 LogCat 中的强制转换输出无效。
    • 这是因为内部类中没有定义tglbuttn。尝试编辑。
    • Void 是变量 onClick 的无效类型,删除后 onClick 无法解析为类型。
    • 确保实现View.OnClickListener
    • 实现了,但仍然有多个错误。我也遇到了播放问题,我没有意识到要让 soundpool 正常工作的文件需要多小,所以 mediaplayer 实际上更适合我的需要,而且还有一个 isPlaying() 方法,这就是我原来需要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多