0

我正在尝试遍历我的 listView 并突出显示文本视图并播放突出显示的文本。

问题是所有音频文件同时播放,同时突出显示和取消突出显示。并且在播放音频时整个应用程序似乎都在颤抖..

我知道我可能必须使用线程,但仍然不确定如何使用。

这是我的代码

//This is how I call it 
Player  plOptions  =  new Player(sound,tf);
plOptions.start();

// this is the thread
private class Player extends Thread
{

    String sPlayerPath;
    TextView tf;

    public Player(String sPath_, TextView tv_) {

        sPlayerPath = sPath_;
        tf= tv_;         
    }

    @Override
    public void run()
    {
        final MediaPlayer mp =  new MediaPlayer();        
        try {

            mp.setDataSource(sPlayerPath);
            mp.prepare();
            mp.start();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            public void onPrepared(MediaPlayer mp) {
                TextHighLight(tf);  

            }
        });

        mp.setOnCompletionListener(new OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                TextUnHighLight(tf);  
            }

        });

    }

}
4

2 回答 2

0

在创建方法时初始化您的媒体播放器。实现 onCompletionListener 事件并提供播放下一首歌曲的方法。在下一个方法中重置媒体播放器,它将完美运行。

例如和一些小提示:

如果您在列表视图中单击并且媒体文件在另一个活动中播放,它将播放多首歌曲。例如,ActivityA 包含您的列表,而 ActivityB 包含媒体控件。在这种情况下,它将播放多首歌曲以避免这种情况,您必须使用服务

于 2014-06-30T09:25:08.580 回答
0

您应该在 onListItemSelected 中提供代码来回答为什么所有项目都在播放,同时突出显示的问题。

但是我从您提供的内容中了解到,您不需要线程。只需使用 prepareAsync() 而不是 prepare(),android 将为您处理线程。这将大大简化您的代码。

于 2013-06-13T17:34:47.840 回答