Android(四十五):Service - StartService、StopService实现媒体播放

Android(四十五):Service - StartService、StopService实现媒体播放,第1张

Android(四十五):Service - StartService、StopService实现媒体播放 实现媒体播放(与直接播放媒体资源的对比)
  • 目录结构
源码 布局
  • Resources/layout/main.xml
    
    
        
  • Resources/layout/music_dialog.xml
    
    
        
服务 scripts/MusicService.cs
using Android.App;
using Android.Content;
using Android.Media;
using Android.OS;
using Android.Util;

namespace android_by_csharp.scripts
{
    [Service]
    public class MusicService : Service
    {
        private string TAG = nameof(MusicService);
        public static bool IsPlay; // 记录播放状态
        private MediaPlayer _player; // MediaPlayer对象
        public override void OnCreate()
        {
            base.OnCreate();
            _player = MediaPlayer.Create(this, Resource.Raw.music);
            Log.Debug(TAG, $"{TAG} ---> OnCreate");
        }

        public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
        {
            if (!_player.IsPlaying)
            {
                _player.Start();
                IsPlay = _player.IsPlaying;
            }
            Log.Debug(TAG, $"{TAG} ---> OnStartCommand");
            return base.OnStartCommand(intent, flags, startId);
        }
        
        public override void OnDestroy()
        {
            base.OnDestroy();
            _player.Stop();
            IsPlay = _player.IsPlaying;
            _player.Release(); // 释放资源
            Log.Debug(TAG, $"{TAG} ---> OnDestroy");
        }

        public override IBinder OnBind(Intent intent)
        {
            return null;
        }
    }
}
Activity scripts/MusicActivity.cs
using Android.App;
using Android.Content;
using Android.Media;
using Android.OS;
using Android.Util;
using Android.Widget;

namespace android_by_csharp.scripts
{
    [Activity(Label = "MusicActivity", Theme = "@style/MusicActivityTheme")]
    public class MusicActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.music_dialog);

            // 服务下的媒体播放(页面执行销毁音乐还在,再次点击按钮会停止音乐的服务)
            var playPauseBtn1 = FindViewById
Activity MainActivity.cs
using android_by_csharp.scripts;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Widget;

namespace android_by_csharp
{
    
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    public class MainActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.main);

            var btn01 = FindViewById

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5597874.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存