首页 > 解决方案 > 在android应用程序中加载音频文件

问题描述

我有一个带有许多音频文件的服务器,不时会添加更多文件。我希望将这些文件加载​​到我的 android 应用程序中,以便播放它们。我该怎么做呢?

我正在使用本机安卓

标签: androidandroid-studio

解决方案


用于播放、暂停、恢复音频等的简单 AudioHandler 类

public class AudioHandler {


private SimpleExoPlayer simpleExoPlayer;


//Start Playing
public void playAudio(String URL) {
    try {
        if(simpleExoPlayer == null) {
            simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(
                    new DefaultRenderersFactory(mContext),
                    new DefaultTrackSelector(),
                    new DefaultLoadControl());
        }

        // Preparing from url
        Uri uri = Uri.parse(URL);
        MediaSource mediaSource = buildMediaSource(uri);

        simpleExoPlayer.prepare(mediaSource, true, false);
        simpleExoPlayer.setPlayWhenReady(true);

        simpleExoPlayer.addListener(new Player.DefaultEventListener() {
            @Override
            public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
                super.onPlayerStateChanged(playWhenReady, playbackState);

                switch(playbackState) {
                    case Player.STATE_READY:
                        // Update UI -- Audio has start playing
                        break;
                    case Player.STATE_ENDED:
                        ReleaseMediaPlayer();
                        // Update UI -- Audio has ended
                        break;
                    default:
                        break;
                }
            }

            @Override
            public void onPlayerError(ExoPlaybackException error) {
                super.onPlayerError(error);
                ReleaseMediaPlayer();
                // Update UI -- error
            }
        });

    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void pauseAudio(){
    try{
        if (simpleExoPlayer != null) {
            simpleExoPlayer.setPlayWhenReady(false);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void resumeAudioa(){
    try{
        if (simpleExoPlayer != null) {
            simpleExoPlayer.setPlayWhenReady(true);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void ReleaseMediaPlayer(){
    try{
        if (simpleExoPlayer != null) {
            simpleExoPlayer.release();
            simpleExoPlayer = null;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private MediaSource buildMediaSource(Uri uri) {
    return new ExtractorMediaSource.Factory(
            new DefaultHttpDataSourceFactory("exoplayer-audios")).
            createMediaSource(uri);
}


// Constructor and other methods...

}


推荐阅读