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 ...
随机推荐
- iOS顶部滑动菜单:FDSlideBar 与NinaPagerView
FDSlideBar 是一个顶部滑动菜单,如常见的网易.腾讯新闻等样式.该控件支持自定颜色.字体等多种样式风格.菜单间切换流畅,具有较好的体验性.下部的内容展示经过挣 扎,最后选择了 UITableV ...
- Android:监听ListView
本文目录 监听ListView点击事件 监听ListView滚动事件 监听ListView点击事件 使用监听器OnItemClickListener package com.example.tests ...
- Vim 配色设置与配色脚本语法
几个给tag加颜色的插件 https://github.com/octol/vim-cpp-enhanced-highlight:基于tag的c family语法高亮 https://github.c ...
- php curl下载图片 URL地址
<?php $url = 'http://mf1905.com/upload/video_img/df3074c98ec5124ad47c52ff59f74e04_middle.jpeg'; f ...
- dom解析器机制 web基本概念 tomcat
0 作业[cn.itcast.xml.sax.Demo2] 1)在SAX解析器中,一定要知道每方法何时执行,及SAX解析器会传入的参数含义 1 理解dom解析器机制 1)dom解析和dom4j原理 ...
- WinAPI——UnhookWindowsHookEx - 卸掉钩子
UnhookWindowsHookEx( hhk: HHOOK {钩子句柄} ): BOOL; {True/False}
- Where is Vasya?
Where is Vasya? Vasya stands in line with number of people p (including Vasya), but he doesn't know ...
- poj 1442 Black Box(堆 优先队列)
题目:http://poj.org/problem?id=1442 题意:n,m,分别是a数组,u数组的个数,u[i]w为几,就加到a几,然后输出第i 小的 刚开始用了一个小顶堆,超时,后来看了看别人 ...
- JSOI2014第三轮总结
这次发挥的比上次好很多 毕竟这次的话好歹上100了,也不是特别丢人 但更主要的是,该得的分没有丢(不禁想到了R1的线段树和R2的网络流,可惜啊) 不会做的题目积极去骗分了(如D1T1,2和D2T1) ...
- Cookie设置HttpOnly,Secure,Expire属性
在eclipese中创建Web工程时,有个dynamic web module version选项,首先解释下这个选项的意思: http://stackoverflow.com/questions/3 ...