结果:

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. HDU1465+递推

    经典的信封装信问题 f[ n ]  = ( n-1 ) * ( f[ n-1 ]+f[ n-2 ] ) #include<stdio.h> #include<string.h> ...

  2. android 点击重新加载界面设计

    在项目中经常会遇到这样的场合,用户点击了一个界面后要提示等待加载,最后有可能显示加载失败,点击屏幕再重试加载.下面是该实例的代码: layout: loading.xml <?xml versi ...

  3. live555源码研究(十)------在编译过程中遇到的问题及解决方法

    一.编译testOnDemandRTSPServer.cpp. 在testProgs项目中,加入testOnDemandRTSPServer.cpp进行编译,编译类型是编译成exe文件,在编译过程中会 ...

  4. adb开启不了解决方案

    原文地址: adb开启不了解决方案 - vaecer - 博客频道 - CSDN.NET http://blog.csdn.net/vaecer/article/details/45894643   ...

  5. 再分析 返回值加引用&,const

    本文主要分析,返回&,和返回值加const的作用. 返回& 定义一个数组模板: template<class T>class Array{ enum{size = 100} ...

  6. [译]好程序员的五声“呐喊”

    通常编程情况下,会导致软件项目变坏的一些列反应 原文:The five shouts of good programmers 在任何一天,在这个世界上都有软件项目正在失败,这很常见.常见到当软件产品按 ...

  7. How to remove spaces of a string with regular expression

    left 's/^\s*//g' right 's/\s*$//g' all 's/\s+//g'

  8. JavaBean个人总结

    JavaBean在JSP程序中的应用 JavaBean是为Java语言设计的软件组件模型,具有可重复使用和跨平台的特点.可以通过JavaBean来封装业务逻辑,进行数据库操作等,从而很好的实现业务逻辑 ...

  9. 【众秒之门 JavaScript与jQuery技术精粹 #BOOK#】第4章 数据类型及定义

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  10. 让memcached和mysql更好的工作

    这次是Fotolog的经验,传说中比Flickr更大的网站,Fotolog在21台服务器上部署了51个memcached实例,总计有254G缓存空间可用,缓存了多达175G的内容,这个数量比很多网站的 ...