[weak] FMusicPlayer: TMusicPlayer;

[weak]修饰, 编译器在处理这个变量的时候不会调用该变量内容的__ObjAddRef和__ObjRelease.,

procedure DoUpdateUI(newPos: Single);//更新进度条
procedure UpdateNowPlaying(newIndex: Integer);//当前播放歌曲名称等信息
procedure UpdateSongs;//添加歌曲列表
procedure SongChanged(newIndex: Integer);//切换歌曲
procedure StateChanged(state: TMPPlaybackState);//更新播放、暂停等几个按钮Enabled

procedure TFMXMusicPlayerFrm.DoUpdateUI(newPos: Single);
var
handler: TNotifyEvent;
begin
handler := tbProgress.OnChange;
tbProgress.OnChange := nil;
tbProgress.Value := newPos;
tbProgress.OnChange := handler;
end;

MusicPlayer.Utils公共变量等方法定义。

TMusicPlayer.DefaultPlayer.OnProcessPlay := DoUpdateUI;

经过日志跟踪,DoUpdateUI在运行的时候不断的更新,但是进入后台DoUpdateUI也不执行了,中断执行了!

锁屏后上一首、下一首、停止,怎么不起作用了呢?

经过日志跟踪,锁屏后 上一首、下一首、停止这些按钮都不会 被触发,锁屏后的暂停、播放执行的是后台别的机制?

播放按钮的图标,也应该是系统的,修改了form上的播放图标,锁屏后依然是原来的图标。

不用weak修饰变量也能锁屏播放,用了mediaplay.ios就可以啦。

播放

TMediaPlayer

 afileName := Format('tt%d.caf', [self.mytplaysoundid]);
afileName := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetDocumentsPath, afileName);
aplayer.FileName := afileName; aplayer.Play;

delphi对IOS音乐功能的转换

17\source\rtl\ios\iOSapi.MediaPlayer.pas

AVAudioSession

playbackSessionID

function playbackSessionID: NSString; cdecl;

procedure setUseApplicationAudioSession(useApplicationAudioSession: Boolean); cdecl;

function useApplicationAudioSession: Boolean; cdecl;

Delphi IOS MusicPlayer 锁屏运行学习的更多相关文章

  1. Delphi IOS 蓝牙锁屏后台运行

    Delphi IOS 后台运行 同样的程序,编译成android,锁屏后继续运行正常,蓝牙通讯正常,但在IOS下锁屏后程序的蓝牙就中断通讯了? IOS的机制就是这样,锁屏就关闭了. 音乐播放器是怎么做 ...

  2. 不会吧,这也行?iOS后台锁屏监听摇一摇

    目录 背景介绍 探索过程 其他 APP 有没有类似功能 系统提供的摇一摇回调能否满足 其他方法能否实现 利用 CoreMotion 框架,监听加速计原始数据 通过加速计监听摇一摇 控制器相关逻辑和代码 ...

  3. WP8开发札记(二)让程序支持锁屏运行

    我们都知道WP8是采用墓碑机制来管理应用程序的. 当我们把手机锁屏了,默认情况下,App就触发了deactivated 事件,准备被墓碑化了. 但是,有些时间我们不想让程序就此终止运行.(比如说,你开 ...

  4. iOS - Mac 锁屏快捷键设置

    Mac 锁屏快捷键设置 control + shift + Eject 锁屏快捷键 如果用户要离开电脑一段时间,可以选择直接把笔记本直接合上.但是这样原先在跑的进程就会挂起或者结束,如果正在下载,那么 ...

  5. iOS开发——锁屏监听

    公司所做的项目,锁屏监听是为了60秒后,解锁瓶后显示[手势解锁]或[指纹验证]: 第一步:AppDelegate.m 头部导入 #import <notify.h> #define Not ...

  6. IOS 阻止 锁屏

    [UIApplication sharedApplication].idleTimerDisabled=YES;不自动锁屏 idleTimerDisabled

  7. iOS 视频全屏功能 学习

    项目中,也写过类似"视频全屏"的功能, 前一阵子读到今日头条 的一篇技术文章,详细介绍三种旋转方法差异优劣最终择取.文章从技术角度看写的非常好,从用户角度看,也用过多家有视频功能的 ...

  8. ios阻止锁屏 --老代码,供参考

    // Disable the idle timer [[UIApplication sharedApplication] setIdleTimerDisabled: YES];    // Or fo ...

  9. 阻止iOS设备锁屏

            [[UIApplicationsharedApplication] setIdleTimerDisabled: YES];

随机推荐

  1. 【解题报告】CF Round #320 (Div. 2)

    Raising Bacteria 题意:盒子里面的细菌每天会数量翻倍,你可以在任意一天放任意多的细菌,最后要使得某天盒子里面的细菌数量等于x,求至少要放多少个细菌 思路:显然,翻倍即为二进制左移一位, ...

  2. Java [Leetcode 387]First Unique Character in a String

    题目描述: Given a string, find the first non-repeating character in it and return it's index. If it does ...

  3. HihoCoder - 1496:寻找最大值(高维前缀和||手动求子集)

    描述 给定N个数A1, A2, A3, ... AN,小Ho想从中找到两个数Ai和Aj(i ≠ j)使得乘积Ai × Aj × (Ai AND Aj)最大.其中AND是按位与操作. 小Ho当然知道怎么 ...

  4. 洛谷 P1098 字符串的展开

    题目描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母或数 ...

  5. elixir grpc 试用

    备注:  elixir  grpc 封装测试   1.  安装 a. 安装 protoc 参考相关文档,比较简单 b. 安装elixir grpc 插件 protoc-gen-elixir 同时配置环 ...

  6. (转)完美解决 Android WebView 文本框获取焦点后自动放大有关问题

    完美解决 Android WebView 文本框获取焦点后自动放大问题 前几天在写一个项目时,要求在项目中嵌入一个WebView 本来很快就完成了,测试也没有问题.但发给新加坡时,他们测试都会出现文本 ...

  7. netstat 命令 与 ss 命令

    http://www.cnblogs.com/peida/archive/2013/03/11/2953420.html http://www.ttlsa.com/linux-command/ss-r ...

  8. centos7下安装docker 17.x

    docker的17.X版本与以前的docker安装有些不同,参考了下这篇文章http://www.itmuch.com/docker/docker-2/,以下是我的docker 17.X版本安装过程, ...

  9. SAX解析类:SaxHelper

    public class SaxHelper extends DefaultHandler { private Person person; private ArrayList<Person&g ...

  10. Android UI一些技巧

    (1)去掉EditText的背景颜色  android:background="@null" (2)ListView 修改某行的值,因为一些功能逻辑,需要修改ListView某行的 ...