예제 #1
0
        public static void PlayMusic(Context context, string dir, string file, SeekBar seekbar)
        {
            MediaPlayer mp = new MediaPlayer();

            switch (dir)
            {
            case "assets":
                AssetFileDescriptor descriptor = context.Assets.OpenFd(file);
                mp.SetDataSource(descriptor.FileDescriptor, descriptor.StartOffset, descriptor.Length);
                descriptor.Close();
                break;

            case "external":
                Java.IO.File filefd = new Java.IO.File(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, file);
                mp.SetDataSource(context, Android.Net.Uri.FromFile(filefd));
                break;
            }
            mp.Prepare();
            mp.SetVolume(1f, 1f);
            mp.Looping = (true);
            mp.Start();
            seekbar.IncrementSecondaryProgressBy(1);
            seekbar.SecondaryProgressTintMode = PorterDuff.Mode.Lighten;
            seekbar.Max = mp.Duration;
            System.Timers.Timer timer = new System.Timers.Timer(1000);
            timer.Start();

            timer.Elapsed += delegate
            {
                // seekbar.SecondaryProgress = mp.CurrentPosition;
                seekbar.Progress = mp.CurrentPosition;
            };

            mp.Completion += delegate
            {
                timer.Stop();
                mp.Stop();
            };
            //seekbar.ProgressChanged += (s,e)=>
            //{

            //    mp.SeekTo(e.SeekBar.SecondaryProgress);
            //};
        }