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.

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: