使用 Android 内置的 MediaPlayer 播放打包在应用里的音频文件。
1. 引入命名空间
using Android.Media;Code language: CSS (css)
2. 声明 MediaPlayer 字段
MediaPlayer _myPlayer;
3. 新建 Raw 资源文件夹
在 Resources 目录下新建 raw 文件夹,把音频文件(如 SecretGarden.mp3)放进去。
文件名必须小写、数字、下划线,不能有中文和空格;编译后会自动生成
Resource.Raw.xxx。
4. 在 OnCreate 中初始化并绑定按钮播放
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_main);
// 方式一:页面创建就加载音频,点击按钮直接播放
_myPlayer = MediaPlayer.Create(this, Resource.Raw.mario);
Button button = FindViewById<Button>(Resource.Id.myButton);
button.Click += delegate
{
_myPlayer.Start();
};
}Code language: JavaScript (javascript)
完整 MainActivity 示例
点击按钮时才加载并播放
using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Views;
using Android.Widget;
using Android.Media;
namespace PlayMusicDemo
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
MediaPlayer _myPlayer;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_main);
Android.Support.V7.Widget.Toolbar toolbar =
FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
SetSupportActionBar(toolbar);
FloatingActionButton fab = FindViewById<FloatingActionButton>(Resource.Id.fab);
fab.Click += FabOnClick;
var btn = FindViewById<Button>(Resource.Id.button1);
btn.Click += Btn_Click;
}
private void Btn_Click(object sender, EventArgs e)
{
// 每次点击创建播放器并播放 SecretGarden.mp3
_myPlayer = MediaPlayer.Create(this, Resource.Raw.SecretGarden);
_myPlayer.Start();
}
private void FabOnClick(object sender, EventArgs e)
{
// 浮动按钮逻辑
}
}
}Code language: PHP (php)
资源释放(推荐加上)
MediaPlayer 占用系统资源,页面销毁时要释放,避免内存泄漏:
protected override void OnDestroy()
{
base.OnDestroy();
if (_myPlayer != null)
{
_myPlayer.Release();
_myPlayer = null;
}
}Code language: JavaScript (javascript)
总结
MediaPlayer.Create(context, Resource.Raw.xxx):从 raw 资源创建播放器.Start():开始/继续播放;对应还有.Pause()暂停、.Stop()停止- raw 文件夹下的音频会被打包进 APK,适合短小的音效、背景音乐
- 文件名规则:全小写,不能有空格和中文
- 用完记得
Release()释放资源
Previous: 为应用设置 ICON 图标
Next: 播放网络音频