YYPOST群发软件 发表于 2025-1-14 09:14:43

用AiWork如何写出一个一个播放器呢?


导入必要的类:MediaPlayer用于播放音频文件,AudioManager用于设置音频流类型,File用于处理文件系统路径。

创建MediaPlayer实例:用于控制音频播放。

定义MP3文件列表:mp3List是一个数组,包含了要播放的MP3文件路径。

定义当前播放的文件索引:currentIndex用于跟踪当前正在播放的文件在列表中的位置。

创建活动窗口:包含播放和停止按钮。

播放按钮点击事件:调用playNext函数开始播放音乐。

停止按钮点击事件:调用mediaPlayer.stop()停止播放,并将currentIndex重置为0。

歌曲播放完成监听器:设置OnCompletionListener,当一首歌曲播放完毕后,自动调用playNext播放下一首歌曲。

YYPOST群发软件 发表于 2025-1-14 09:15:00

importClass(android.media.MediaPlayer);
importClass(android.media.AudioManager);
importClass(java.io.File);
importClass(android.widget.Toast);

var mediaPlayer = new MediaPlayer();
var mp3List = ["/sdcard/Pictures/1.mp3", "/sdcard/Music/2.mp3", "/sdcard/Audio/3.mp3"]; // MP3文件列表
var currentIndex = 0; // 当前播放的文件索引
var ac = new activity();

ac.loadSXML(`
    <vertical>
      <button text="播放" id="play"/>
      <button text="停止" id="stop"/>
      <text id="status" text="准备播放..."/>
    </vertical>`);

function playNext() {
    if (currentIndex < mp3List.length) {
      var mp3 = mp3List;
      if (file.isFile(mp3)) {
            try {
                mediaPlayer.reset(); // 重置MediaPlayer以防止之前的播放状态影响新文件
                mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                mediaPlayer.setDataSource(mp3);
                mediaPlayer.prepare();
                mediaPlayer.start();
                ac.findViewById("status").setText("正在播放: " + mp3);
                currentIndex++;
            } catch (e) {
                Toast.makeText(ac, "错误: " + e.message, Toast.LENGTH_SHORT).show();
                ac.findViewById("status").setText("错误: " + mp3 + " 播放失败");
            }
      } else {
            Toast.makeText(ac, "错误: 文件 " + mp3 + " 不存在", Toast.LENGTH_SHORT).show();
            ac.findViewById("status").setText("错误: 文件 " + mp3 + " 不存在");
      }
    } else {
      Toast.makeText(ac, "播放结束", Toast.LENGTH_SHORT).show();
      ac.findViewById("status").setText("播放结束");
      mediaPlayer.stop();
      mediaPlayer.release(); // 释放资源
      currentIndex = 0; // 重置索引以便重新开始播放
    }
}

ac.findViewById("play").setOnClickListener(() => {
    Toast.makeText(ac, "播放", Toast.LENGTH_SHORT).show();
    playNext(); // 开始播放第一个或下一个文件
});

ac.findViewById("stop").setOnClickListener(() => {
    Toast.makeText(ac, "停止", Toast.LENGTH_SHORT).show();
    mediaPlayer.stop();
    mediaPlayer.release(); // 释放资源
    ac.findViewById("status").setText("播放停止");
    currentIndex = 0; // 停止后重置播放索引
});

// 添加一个监听器来自动播放下一首
mediaPlayer.setOnCompletionListener(function() {
    playNext(); // 当前歌曲播放完毕后自动播放下一首
});


YYPOST群发软件 发表于 2025-1-14 09:15:16



用软件可以写出一个简易的播放器,专门听歌甚至占用内存极少,极度容易的播放器例子。

传到手机只需要播放就可以了。这个如果您希望从一个MP3列表中逐个播放文件,

您可以先创建一个包含所有MP3文件路径的数组,

然后使用循环或递归的方式来遍历并播放这些文件。这里是一个示例代码,展示了如何实现这一功能:



这段代码首先定义了一个mp3List数组,

包含了您想要播放的MP3文件路径。当点击播放按钮时,

它会调用playNext函数尝试播放当前索引指向的MP3文件。

如果播放完毕或者播放出错,则自动处理下一个文件,

直到列表播放完毕。同时,为MediaPlayer添加了一个完成监听器,

确保在一首歌播放结束后自动切换到下一首。
页: [1]
查看完整版本: 用AiWork如何写出一个一个播放器呢?