android 播放raw音频文件格式,Android MediaPlayer播放项目res/raw和res/assets下的音频文件...

1..播放res/raw

//方法一:根据音频文件的ID来创建MediaPlayer

MediaPlayer mp = new MediaPlayer(this,R.raw.test);

mp.start();

//方法二:

MediaPlayer mp = new MediaPlayer();

AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.test);

try {

mp.setDataSource(file.getFileDescriptor(), file.getStartOffset(),

file.getLength());

mp.prepare();

file.close();

} catch (IOException e) {

e.printStackTrace();

}

mp.setVolume(0.5f, 0.5f);

mp.setLooping(true);

mp.start();

2.播放res/assets

AssetManager am = getAssets();

AssetFileDescriptor afd = am.openFd("bomb.mp3");

MediaPlayer mp = new MediaPlayer();

mp.setDataSource(file.getFileDescriptor());

mp.prepare();

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的 Android 程序,实现多个音频文件的加载,并且可以上、下翻曲进行播放。 首先,在你的 layout 中添加一个 ListView 控件,用于显示音频文件列表。例如,在 activity_main.xml 文件中添加以下代码: ``` <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` 然后,在你的 activity 中,你需要定义一个列表数据源,用于存储音频文件信息。在这个例子中,我们使用一个简单的字符串数组来存储文件名,实际上你可以根据实际需求自定义数据源。在 MainActivity.java 文件中添加以下代码: ``` public class MainActivity extends AppCompatActivity { private ListView listView; private String[] fileList = {"file1.mp3", "file2.mp3", "file3.mp3"}; // 其他代码 } ``` 在 onCreate() 方法中初始化 ListView 控件,并将数据源与 Adapter 绑定起来,以便在界面中显示文件列表。例如: ``` @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.list_view); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, fileList); listView.setAdapter(adapter); } ``` 接下来,我们需要添加 MediaPlayer 对象,用于播放音频文件。在 MainActivity 类中添加以下代码: ``` private MediaPlayer mediaPlayer; private int currentFileIndex = 0; private void playFile(String filePath) { try { if (mediaPlayer == null) { mediaPlayer = new MediaPlayer(); } else { mediaPlayer.reset(); } mediaPlayer.setDataSource(filePath); mediaPlayer.prepare(); mediaPlayer.start(); } catch (IOException e) { e.printStackTrace(); } } private void stopPlayer() { if (mediaPlayer != null) { mediaPlayer.release(); mediaPlayer = null; } } ``` 其中,playFile() 方法用于播放指定路径的音频文件,stopPlayer() 方法用于停止播放并释放 MediaPlayer 对象。 最后,我们需要为 ListView 控件添加点击事件的监听器,在用户点击某个文件时,播放该文件。在 onCreate() 方法中添加以下代码: ``` listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { currentFileIndex = position; stopPlayer(); String filePath = getFilesDir().getAbsolutePath() + "/" + fileList[currentFileIndex]; playFile(filePath); } }); ``` 这里使用 getFilesDir() 方法获取应用程序的私有文件目录,并根据用户点击的文件索引获取相应的文件路径。在播放当前文件时,如果 MediaPlayer 对象已经存在,则先调用 stopPlayer() 方法停止播放并释放 MediaPlayer 对象,然后再调用 playFile() 方法播放当前文件。 最后,我们需要为上、下翻曲的按钮添加点击事件的监听器,以便用户可以切换上一个或下一个文件的播放。在 onCreate() 方法中添加以下代码: ``` Button prevBtn = findViewById(R.id.prev_btn); Button nextBtn = findViewById(R.id.next_btn); prevBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (currentFileIndex > 0) { currentFileIndex--; stopPlayer(); String filePath = getFilesDir().getAbsolutePath() + "/" + fileList[currentFileIndex]; playFile(filePath); } } }); nextBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (currentFileIndex < fileList.length - 1) { currentFileIndex++; stopPlayer(); String filePath = getFilesDir().getAbsolutePath() + "/" + fileList[currentFileIndex]; playFile(filePath); } } }); ``` 这里我们为两个按钮分别添加了点击事件的监听器,当用户点击上一个按钮时,如果当前文件不是第一个文件,则切换到上一个文件并播放;当用户点击下一个按钮时,如果当前文件不是最后一个文件,则切换到下一个文件并播放。 最终的 MainActivity.java 代码如下: ``` public class MainActivity extends AppCompatActivity { private ListView listView; private String[] fileList = {"file1.mp3", "file2.mp3", "file3.mp3"}; private MediaPlayer mediaPlayer; private int currentFileIndex = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.list_view); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, fileList); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { currentFileIndex = position; stopPlayer(); String filePath = getFilesDir().getAbsolutePath() + "/" + fileList[currentFileIndex]; playFile(filePath); } }); Button prevBtn = findViewById(R.id.prev_btn); Button nextBtn = findViewById(R.id.next_btn); prevBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (currentFileIndex > 0) { currentFileIndex--; stopPlayer(); String filePath = getFilesDir().getAbsolutePath() + "/" + fileList[currentFileIndex]; playFile(filePath); } } }); nextBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (currentFileIndex < fileList.length - 1) { currentFileIndex++; stopPlayer(); String filePath = getFilesDir().getAbsolutePath() + "/" + fileList[currentFileIndex]; playFile(filePath); } } }); } private void playFile(String filePath) { try { if (mediaPlayer == null) { mediaPlayer = new MediaPlayer(); } else { mediaPlayer.reset(); } mediaPlayer.setDataSource(filePath); mediaPlayer.prepare(); mediaPlayer.start(); } catch (IOException e) { e.printStackTrace(); } } private void stopPlayer() { if (mediaPlayer != null) { mediaPlayer.release(); mediaPlayer = null; } } } ``` 这样,一个简单的 Android 程序,实现了多个音频文件的加载,并能上、下翻曲进行播放

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值