java - Android - 动态更改在媒体播放器中播放的文件

标签 java android android-mediaplayer

我正在尝试动态播放声音。

我在名为“raw”的 res 文件夹下创建了一个资源目录。此目录包含 mp3 文件。

我想做的是创建一个包含所有文件名的数组,当单击一个按钮时,下一个 mp3 int 下一个索引将加载到媒体播放器并可以播放。

我找到了这段使用媒体播放器的代码

public class MainActivity extends ActionBarActivity {
Context context = this;
MediaPlayer mp;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);
    mp = MediaPlayer.create(context, R.raw.sound);
    final Button b = (Button) findViewById(R.id.Button);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            try {
                if (mp.isPlaying()) {
                    mp.stop();
                    mp.release();
                    mp = MediaPlayer.create(context, R.raw.sound);
                } mp.start();
            } catch(Exception e) { e.printStackTrace(); }
        }
    });
}
}

但我似乎无法找到使用 i 索引上的歌曲名称通过 Array 设置轨道切换的方法。

感谢您的帮助

最佳答案

我找到了解决办法。我已将原始目录中的所有文件名设置为相同的名称模式,通过名称获取每个文件资源 ID 并将其加载到播放器。

Resources res = getResources(); //resource handle
    String url = "song" +index;
    InputStream is = getClass().getClassLoader().getResourceAsStream("raw/");
    Integer resIdSound = res.getIdentifier (url,  "raw", this.getPackageName());
    mp = MediaPlayer.create(this, resIdSound);
    try {
        if (mp.isPlaying()) {
            mp.stop();
            mp.release();
            mp = MediaPlayer.create(this, resIdSound);
        } mp.start();
    } catch(Exception e) { e.printStackTrace(); }
}

关于java - Android - 动态更改在媒体播放器中播放的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39912670/

相关文章:

Android:Scoreloop 与 OpenFeint

android - 我如何使用至少一个特殊字符、数字、大写小写字母验证我的密码,但用户输入允许 4 个中的任意三个?

android - 访问 MediaPlayer 中的音频缓冲区

android - 尝试从远程 MP3 文件 Android 检索元数据时出错

java - 尝试使用 GUI,在添加按钮和标签时​​遇到问题

java - 只是确定

java - 初始化另一个方法

java - 窗口底部的 JButton

Android - 使用相机闪光灯

java - 1 项家长服务和 2 项 child 服务