结果:

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)的更多相关文章

  1. Android实例-获取安卓手机WIFI信息(XE8+小米2)

    结果: 1.必须打开Access wifi state权限,不打开权限会出图二的错误. 相关资料: http://blog.csdn.net/lyf_lyf/article/category/1735 ...

  2. Android实例-程序界面内截取屏幕(XE8+小米2)

    结果: 1.只能截取程序界面内的图片. 2.图片有点不清楚,自己设置清楚度. 实例代码: unit Unit1; interface uses System.SysUtils, System.Type ...

  3. Android实例-解决虚拟键盘遮挡问题(XE8+小米2)

    结果: 1.可以自动向上移动,来防遮挡,但同时发现个问题,如果是按硬件返回没有问题,要是点输入法(QQ.百度输入法)上的隐藏就不行了. 2.点击Edit2后出现输入法,点输入法上的隐藏后, 再点Edi ...

  4. Android实例-监测网络状态及一些事件(XE8+小米2)

    结果: 1.网络连接:是指现在可不可以上网(你非要问我什么是网,我会K你呀的). 2.WIFI网络:是指现在可以上网,用的是不是WIFI网络(如果你打开了WIFI那它会显示正在使用WIFI). 3.移 ...

  5. Android实例-解决启动黑屏问题(XE8+小米2)

    结果: 1.在启动时马上出现图片界面,但在出现程序界面前会有黑屏,大约有0.2秒左右. 实现: 1.建立2个文件:loading.png和styles.xml: ①其中loading.png是启动时替 ...

  6. Android实例-如何使用系统剪切板(XE8+小米2)

    结果: 发现个问题,就是粘贴时会清除之前的信息. unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, S ...

  7. Android学习总结(十六) ———— MediaPlayer播放音频与视频

    一.基本概念 本文主要介绍的是Android中很重要也最为复杂的媒体播放器(MediaPlayer)部分的架构.Android的MediaPlayer包含了Audio和video的播放功能,在Andr ...

  8. Android播放器推荐:可以播放本地音乐、视频、在线播放音乐、视频、网络收音机等

    下载链接:http://www.eoeandroid.com/forum.php?mod=attachment&aid=MTAxNTczfGMyNjNkMzFlfDEzNzY1MzkwNTR8 ...

  9. Android 使用MediaPlayer 播放 视频

    http://pan.baidu.com/s/1lgKLS package cn.bgxt.surfaceviewdemo; import java.io.File; import android.m ...

随机推荐

  1. 在ECLIPSE中用MAVEN和TOMCAT来建立WEBAPP

    找了很多示例,结合以下两个URL,比较简单的测试了一下. http://blog.csdn.net/clj198606061111/article/details/20221133 http://ww ...

  2. 【NOIP 2016 总结】

    距离杯赛已经很久了,然而我现在才打总结.. 我好惨的说..两场才380... DAY 1 第一题 toy 送分题,模拟的时候+一下再mod一下就好. [当时打完这题就没再看一眼了,好方的说] #inc ...

  3. Weblogic下部署的应用,当更新文件时需要重新安装部署

    JSP页面检查(秒):-1 Servlet重新加载检查(秒):-1 -1说明从不检查,故当更新文件时,需要重新部署,或重新安装部署.

  4. Mysql一主多从和读写分离配置简记

    近期开发的系统中使用MySQL作为数据库,由于数据涉及到Money,所以不得不慎重.同时,用户对最大访问量也提出了要求.为了避免Mysql成为性能瓶颈并具备很好的容错能力,特此实现主从热备和读写分离. ...

  5. Ado.Net小练习02(小项目CUID

    前台界面: 后台代码: namespace ado.net小项目cuid {     public partial class Form1 : Form     {         //连接字符串   ...

  6. P143、面试题25:二叉树中和为某一值的路径

    题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.二叉树结点的定义如下:struct BinaryTreeNode ...

  7. linux编译注解

    Linux kernel release 3.x <http://kernel.org/> These are the release notes for Linux version 3. ...

  8. JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门

    2 JSP内置标签(美化+业务逻辑)   1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容   2)JSP内 ...

  9. Android开发之MediaPlayer类

    官网关于MediaPlayer类的使用简介:

  10. Java之数组array和集合list、set、map

    之前一直分不清楚java中的array,list.同时对set,map,list的用法彻底迷糊,直到看到了这篇文章,讲解的很清楚. 世间上本来没有集合,(只有数组参考C语言)但有人想要,所以有了集合 ...