Android实例-MediaPlayer播放音乐和视频(XE8+小米2)
结果:
1.播放视频需要手动放入MediaPlayerControl1控件,设置MediaPlayerControl1.MediaPlayer := MediaPlayer1;
2.播放声音文件正常,但播放器视时发现,第一边正常第二边就报错了(哪位大神知道的,请M我哦,先谢谢了)。
3.打包时需要打入MP3与MP4文件,路径为"assets\internal\"。
PS:20160421用XE10编译在夜神上一切正常,但在小米手机2上第一边正常,第二边卡,但不报错了。
实例代码:
unit Unit1; interface uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.Media, FMX.Layouts; type
TForm1 = class(TForm)
MediaPlayer1: TMediaPlayer;
Label1: TLabel;
Timer1: TTimer;
Layout2: TLayout;
Layout3: TLayout;
Button1: TButton;
Button2: TButton;
Button3: TButton;
TrackBar1: TTrackBar;
TrackBar2: TTrackBar;
Label2: TLabel;
Label3: TLabel;
Layout4: TLayout;
MediaPlayerControl1: TMediaPlayerControl;
Layout1: TLayout;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure TrackBar2Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation
uses
System.IOUtils;//需要引入
{$R *.fmx}
{$R *.NmXhdpiPh.fmx ANDROID} //执行暂停按钮
procedure TForm1.Button1Click(Sender: TObject);
begin
MediaPlayer1.Stop;
Timer1.Enabled := false;
Button2.Enabled := true;
Button1.Enabled := false;
end; //执行播放按钮
procedure TForm1.Button2Click(Sender: TObject);
begin
MediaPlayer1.FileName := TPath.GetDocumentsPath + '/abc.mp3';//指定要打开的文件当然,指定 SD 卡中其它目录是文件也是可以的。
MediaPlayer1.CurrentTime := trunc((TrackBar1.Value * MediaPlayer1.Duration) / );// 播放进度调整为进度条指示位置
MediaPlayer1.Volume := TrackBar2.Value;//音量也调整到音量指示值
MediaPlayer1.Play;//播放
Timer1.Enabled := true;
Button2.Enabled := false;
Button1.Enabled := true;
end; procedure TForm1.Button3Click(Sender: TObject);
begin
MediaPlayer1.FileName := IncludeTrailingPathDelimiter(TPath.GetDocumentsPath) + 'abc.mp4';//指定要播放的视频文件
MediaPlayer1.Play;
Timer1.Enabled := true;
end; //设置视频在哪里显示
procedure TForm1.FormCreate(Sender: TObject);
begin
MediaPlayerControl1.MediaPlayer := MediaPlayer1;
end; procedure TForm1.Timer1Timer(Sender: TObject);
var
handler: TNotifyEvent;
begin
handler := TrackBar1.OnChange;
TrackBar1.OnChange := nil;//暂时取消其 OnChange 事件
TrackBar1.Value := int((MediaPlayer1.CurrentTime / MediaPlayer1.Duration) * );
//更新进度条的指示
Label2.Text := inttostr(trunc(MediaPlayer1.CurrentTime / )) + ':' +
inttostr(trunc(MediaPlayer1.CurrentTime / -
trunc(MediaPlayer1.CurrentTime / ) * ));
//显示声音文件所剩下的播放时间,分:秒
Label3.Text := inttostr(trunc(MediaPlayer1.Duration / )) + ':' +
inttostr(trunc(MediaPlayer1.Duration / - trunc(MediaPlayer1.Duration /
) * ));//显示声音文件总的播放时间,分:秒
TrackBar1.OnChange := handler; //还原其 OnChange 事件
//播放完毕后的处理
if MediaPlayer1.CurrentTime >= MediaPlayer1.Duration - then//如果播放完了
begin
MediaPlayer1.Stop;
TrackBar1.Value:=;
Button2.Enabled := true;
Button1.Enabled := false;
Timer1.Enabled := false;
end;
end; //滑动进度条时,改变播放进度
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
MediaPlayer1.CurrentTime := trunc((TrackBar1.Value * MediaPlayer1.Duration) / );
end; //滑动音量调节条时,改变播放音量
procedure TForm1.TrackBar2Change(Sender: TObject);
begin
MediaPlayer1.Volume := TrackBar2.Value;
end; end.
Android实例-MediaPlayer播放音乐和视频(XE8+小米2)的更多相关文章
- Android实例-获取安卓手机WIFI信息(XE8+小米2)
结果: 1.必须打开Access wifi state权限,不打开权限会出图二的错误. 相关资料: http://blog.csdn.net/lyf_lyf/article/category/1735 ...
- Android实例-程序界面内截取屏幕(XE8+小米2)
结果: 1.只能截取程序界面内的图片. 2.图片有点不清楚,自己设置清楚度. 实例代码: unit Unit1; interface uses System.SysUtils, System.Type ...
- Android实例-解决虚拟键盘遮挡问题(XE8+小米2)
结果: 1.可以自动向上移动,来防遮挡,但同时发现个问题,如果是按硬件返回没有问题,要是点输入法(QQ.百度输入法)上的隐藏就不行了. 2.点击Edit2后出现输入法,点输入法上的隐藏后, 再点Edi ...
- Android实例-监测网络状态及一些事件(XE8+小米2)
结果: 1.网络连接:是指现在可不可以上网(你非要问我什么是网,我会K你呀的). 2.WIFI网络:是指现在可以上网,用的是不是WIFI网络(如果你打开了WIFI那它会显示正在使用WIFI). 3.移 ...
- Android实例-解决启动黑屏问题(XE8+小米2)
结果: 1.在启动时马上出现图片界面,但在出现程序界面前会有黑屏,大约有0.2秒左右. 实现: 1.建立2个文件:loading.png和styles.xml: ①其中loading.png是启动时替 ...
- Android实例-如何使用系统剪切板(XE8+小米2)
结果: 发现个问题,就是粘贴时会清除之前的信息. unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, S ...
- Android学习总结(十六) ———— MediaPlayer播放音频与视频
一.基本概念 本文主要介绍的是Android中很重要也最为复杂的媒体播放器(MediaPlayer)部分的架构.Android的MediaPlayer包含了Audio和video的播放功能,在Andr ...
- Android播放器推荐:可以播放本地音乐、视频、在线播放音乐、视频、网络收音机等
下载链接:http://www.eoeandroid.com/forum.php?mod=attachment&aid=MTAxNTczfGMyNjNkMzFlfDEzNzY1MzkwNTR8 ...
- Android 使用MediaPlayer 播放 视频
http://pan.baidu.com/s/1lgKLS package cn.bgxt.surfaceviewdemo; import java.io.File; import android.m ...
随机推荐
- Oracle 学习笔记 常用查询命令篇
1.查询某个用户下有多少张表 有时候很有用 select count(*) from dba_tables t where t.owner='SCOTT';
- Linux内核OOM机制的详细分析
Linux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉.典型的 ...
- Java汉字排序(2)按拼音排序
对于包含汉字的字符串来说,排序的方式主要有两种:一种是拼音,一种是笔画. 本文就讲述如何实现按拼音排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 11:27 最 ...
- js2word/html2word的简单实现
js2word/html2word的简单实现 以C#描述如下: StringBuilder sb = new StringBuilder(); sb.Ap ...
- asp mvc 路由
public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Workflo ...
- poj3671
首先容易想到的是LIS,但是n<=30000,所以肯定要优化: 壮哉单调队列又登场了: 然后再找一个最长不上升序列并求两者最大值即可,复杂度O(n logn); 应该说这是解题通法了,但再回头看 ...
- bzoj1084: [SCOI2005]最大子矩阵
dp.状态转移方程在代码里 #include<cstdio> #include<algorithm> #include<cstring> using namespa ...
- Javascript获取最近若干个月
整理: 如果需要获取最近若干个月,牵扯到跨年的话,该怎么实现的问题,抽了点时间,代码如下: /**纪元时间获取最近12个月 * * @num 传入获取月的数目 **/ (function getMon ...
- 为自己打造Linux小系统
一.前言 Linux操作系统至1991.10.5号诞生以来,就源其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内核还是开源软件等方面,都为 ...
- DbHelper and OracleHelper
1 连接Sql Server的ConnectionString: Data Source=.;Initial Catalog=ViewVideo;User ID=sa;Password=XXXXXX; ...