[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. threejs三角形Geometry的顶点时针顺序会导致三角形看不见

    var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75,winSize.width/winSize.hei ...

  2. 模块(Modules)

    一.引入模块 模块:当编写更大的应用程序时,所有的代码肯定会分成多个文件,这样便于维护,另外已经编写好的函数和对象在被多个程序中使用时,不用把函数和对象拷贝到每个程序中. 模块支持以上功能,在Pyth ...

  3. 《selenium2 python 自动化测试实战》(6)——打印信息和设置等待时间

    打印信息经常用的有两个: # coding: utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.get( ...

  4. C#连接数据库以及增、删、改、查操作

    using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; usin ...

  5. SQL server无法连接,服务无法启动

    Windows 不能在 本地计算机 启动 SQL Server 服务 错误代码126 在使用SQL2005(或2008)是可能会遇到错误提示: “Windows 不能在 本地计算机 启动 SQL Se ...

  6. Ecel 粘贴图片并调整大小,移到底层

    Sub Click() ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.ScaleWidth 1.4, msoTrueSelection. ...

  7. BW模型数据删除

    删除数据一般可以按请求(Request)来删除,需要从顶层模型往下删:也可以完成删除,在模型中就没有删除的顺序.本例中采用完全删除,但是按照从顶层模型往下的顺序删除数据.   1.删除信息立方体数据 ...

  8. phoenix elixir 框架简单试用

    备注:   官方提供的脚手架工具,我们可以直接使用,生成代码,同时需要nodejs 环境配置(比较简单,参考 相关资料即可)  1. 安装脚手架 mix archive.install https:/ ...

  9. 云原生应用基金会CNCF

    2006 年 8 月 9 日,埃里克·施密特(EricSchmidt)在搜索引擎大会上首次提出了“云计算”(Cloud Computing)的概念.一转眼十年过去了,它的发展势如破竹,不断渗透当代的 ...

  10. yum安装postgresql

    https://wiki.postgresql.org/wiki/YUM_Installation