Android實例-MediaPlayer播放音樂和視頻(XE8+小米2)


 

結果:

1.播放視頻需要手動放入MediaPlayerControl1控件,設置MediaPlayerControl1.MediaPlayer := MediaPlayer1;

2.播放聲音文件正常,但播放器視時發現,第一邊正常第二邊就報錯了(哪位大神知道的,請M我哦,先謝謝了)。

3.打包時需要打入MP3與MP4文件,路徑為"assets\internal\"。

PS:20160421用XE10編譯在夜神上一切正常,但在小米手機2上第一邊正常,第二邊卡,但不報錯了。

 

實例代碼:

  1 unit Unit1;
  2 
  3 interface
  4 
  5 uses
  6   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  7   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  8   FMX.Controls.Presentation, FMX.StdCtrls, FMX.Media, FMX.Layouts;
  9 
 10 type
 11   TForm1 = class(TForm)
 12     MediaPlayer1: TMediaPlayer;
 13     Label1: TLabel;
 14     Timer1: TTimer;
 15     Layout2: TLayout;
 16     Layout3: TLayout;
 17     Button1: TButton;
 18     Button2: TButton;
 19     Button3: TButton;
 20     TrackBar1: TTrackBar;
 21     TrackBar2: TTrackBar;
 22     Label2: TLabel;
 23     Label3: TLabel;
 24     Layout4: TLayout;
 25     MediaPlayerControl1: TMediaPlayerControl;
 26     Layout1: TLayout;
 27     procedure Button1Click(Sender: TObject);
 28     procedure Button2Click(Sender: TObject);
 29     procedure TrackBar1Change(Sender: TObject);
 30     procedure Timer1Timer(Sender: TObject);
 31     procedure Button3Click(Sender: TObject);
 32     procedure TrackBar2Change(Sender: TObject);
 33     procedure FormCreate(Sender: TObject);
 34   private
 35     { Private declarations }
 36   public
 37     { Public declarations }
 38   end;
 39 
 40 var
 41   Form1: TForm1;
 42 
 43 implementation
 44 uses
 45   System.IOUtils;//需要引入
 46 {$R *.fmx}
 47 {$R *.NmXhdpiPh.fmx ANDROID}
 48 
 49 //執行暫停按鈕
 50 procedure TForm1.Button1Click(Sender: TObject);
 51 begin
 52   MediaPlayer1.Stop;
 53   Timer1.Enabled := false;
 54   Button2.Enabled := true;
 55   Button1.Enabled := false;
 56 end;
 57 
 58 //執行播放按鈕
 59 procedure TForm1.Button2Click(Sender: TObject);
 60 begin
 61   MediaPlayer1.FileName := TPath.GetDocumentsPath + '/abc.mp3';//指定要打開的文件當然,指定 SD 卡中其它目錄是文件也是可以的。
 62   MediaPlayer1.CurrentTime := trunc((TrackBar1.Value * MediaPlayer1.Duration) / 100);// 播放進度調整為進度條指示位置
 63   MediaPlayer1.Volume := TrackBar2.Value;//音量也調整到音量指示值
 64   MediaPlayer1.Play;//播放
 65   Timer1.Enabled := true;
 66   Button2.Enabled := false;
 67   Button1.Enabled := true;
 68 end;
 69 
 70 procedure TForm1.Button3Click(Sender: TObject);
 71 begin
 72   MediaPlayer1.FileName := IncludeTrailingPathDelimiter(TPath.GetDocumentsPath) + 'abc.mp4';//指定要播放的視頻文件
 73   MediaPlayer1.Play;
 74   Timer1.Enabled := true;
 75 end;
 76 
 77 //設置視頻在哪里顯示
 78 procedure TForm1.FormCreate(Sender: TObject);
 79 begin
 80   MediaPlayerControl1.MediaPlayer := MediaPlayer1;
 81 end;
 82 
 83 procedure TForm1.Timer1Timer(Sender: TObject);
 84 var
 85   handler: TNotifyEvent;
 86 begin
 87   handler := TrackBar1.OnChange;
 88   TrackBar1.OnChange := nil;//暫時取消其 OnChange 事件
 89   TrackBar1.Value := int((MediaPlayer1.CurrentTime / MediaPlayer1.Duration) * 100);
 90   //更新進度條的指示
 91   Label2.Text := inttostr(trunc(MediaPlayer1.CurrentTime / 60000)) + ':' +
 92   inttostr(trunc(MediaPlayer1.CurrentTime / 1000 -
 93   trunc(MediaPlayer1.CurrentTime / 60000) * 60));
 94   //顯示聲音文件所剩下的播放時間,分:秒
 95   Label3.Text := inttostr(trunc(MediaPlayer1.Duration / 60000)) + ':' +
 96   inttostr(trunc(MediaPlayer1.Duration / 1000 - trunc(MediaPlayer1.Duration /
 97   60000) * 60));//顯示聲音文件總的播放時間,分:秒
 98   TrackBar1.OnChange := handler; //還原其 OnChange 事件
 99   //播放完畢后的處理
100   if MediaPlayer1.CurrentTime >= MediaPlayer1.Duration - 1000 then//如果播放完了
101   begin
102     MediaPlayer1.Stop;
103     TrackBar1.Value:=0;
104     Button2.Enabled := true;
105     Button1.Enabled := false;
106     Timer1.Enabled := false;
107   end;
108 end;
109 
110 //滑動進度條時,改變播放進度
111 procedure TForm1.TrackBar1Change(Sender: TObject);
112 begin
113   MediaPlayer1.CurrentTime := trunc((TrackBar1.Value * MediaPlayer1.Duration) / 100);
114 end;
115 
116 //滑動音量調節條時,改變播放音量
117 procedure TForm1.TrackBar2Change(Sender: TObject);
118 begin
119   MediaPlayer1.Volume := TrackBar2.Value;
120 end;
121 
122 end.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM