【问题标题】:Looping in Android Media Player在 Android 媒体播放器中循环播放
【发布时间】:2012-11-27 13:08:15
【问题描述】:

我正在尝试在媒体播放器中播放音频文件,一旦文件完全播放,然后从该特定文件的某个位置循环并继续重复循环。

我见过一种方法 seekTo() 从特定点播放,但我对如何首先完全播放文件然后使用 seekTo 函数感到困惑。

任何帮助将不胜感激。须藤代码将帮助一个很好的。

添加代码:

这是我尝试过的代码但它会在再次播放声音之前留下大约一秒钟的间隙

public void playBackgroundMusic() {
    AssetFileDescriptor descriptor = null;
    try {
        descriptor = context.getAssets().openFd("music/" + FILE_NAME);
        try {
            this.mediaPlayer.setDataSource(descriptor.getFileDescriptor(),
                    descriptor.getStartOffset(), descriptor.getLength());
        } catch (IllegalStateException e) {
            this.mediaPlayer.reset();
            this.mediaPlayer.setDataSource(descriptor.getFileDescriptor(),
                    descriptor.getStartOffset(), descriptor.getLength());
        }
        if (listener != null) {
            this.mediaPlayer.setOnCompletionListener(listener);
        }
        this.mediaPlayer.setOnErrorListener(new OnErrorListener() {

            @Override
            public boolean onError(MediaPlayer arg0, int arg1, int arg2) {
                // TODO Auto-generated method stub
                return false;
            }
        });
        this.mediaPlayer.setLooping(false);
        this.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        this.mediaPlayer.prepare();
        this.mediaPlayer.start();

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (descriptor != null) {
                descriptor.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

private OnCompletionListener listener = new OnCompletionListener() {

    @Override
    public void onCompletion(MediaPlayer mp) {
        // TODO Auto-generated method stub
        mp.seekTo(DEFAULT_LOOPING_TIME);
        mp.start();
    }
};

【问题讨论】:

  • 您使用哪个 api 来执行此任务。你能发布你尝试过的东西吗..
  • @TechEnd 我正在使用 api 8 (Android 2.2) 来执行此任务。我还没有开始实施,但无法在我的脑海中直接实施。
  • 我的意思是你在使用 AudioRecord API 还是 MediaPlayer Android API ???我不想问版本。
  • @TechEnd 我正在使用 MediaPlayer
  • 去这个网站androidhive.info/2012/03/android-building-audio-player-tutorial可能会得到一些帮助

标签: android audio android-mediaplayer


【解决方案1】:
  • 从头开始播放媒体。
  • 使用 onPlaybackFinished 事件,或 类似于再次启动媒体的东西,这次使用 seekTo() 方法

【讨论】:

  • 试过这个,但是当声音过去时,它会在中间留下一个颠簸,就像 1 秒钟没有声音一样,然后它开始重复。有什么解决办法吗?我需要它顺畅无阻。
  • 我已经在问题上添加了代码,如果你可以看一下。
猜你喜欢
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多