Delphi IOS MusicPlayer 锁屏运行学习
[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 锁屏运行学习的更多相关文章
- Delphi IOS 蓝牙锁屏后台运行
Delphi IOS 后台运行 同样的程序,编译成android,锁屏后继续运行正常,蓝牙通讯正常,但在IOS下锁屏后程序的蓝牙就中断通讯了? IOS的机制就是这样,锁屏就关闭了. 音乐播放器是怎么做 ...
- 不会吧,这也行?iOS后台锁屏监听摇一摇
目录 背景介绍 探索过程 其他 APP 有没有类似功能 系统提供的摇一摇回调能否满足 其他方法能否实现 利用 CoreMotion 框架,监听加速计原始数据 通过加速计监听摇一摇 控制器相关逻辑和代码 ...
- WP8开发札记(二)让程序支持锁屏运行
我们都知道WP8是采用墓碑机制来管理应用程序的. 当我们把手机锁屏了,默认情况下,App就触发了deactivated 事件,准备被墓碑化了. 但是,有些时间我们不想让程序就此终止运行.(比如说,你开 ...
- iOS - Mac 锁屏快捷键设置
Mac 锁屏快捷键设置 control + shift + Eject 锁屏快捷键 如果用户要离开电脑一段时间,可以选择直接把笔记本直接合上.但是这样原先在跑的进程就会挂起或者结束,如果正在下载,那么 ...
- iOS开发——锁屏监听
公司所做的项目,锁屏监听是为了60秒后,解锁瓶后显示[手势解锁]或[指纹验证]: 第一步:AppDelegate.m 头部导入 #import <notify.h> #define Not ...
- IOS 阻止 锁屏
[UIApplication sharedApplication].idleTimerDisabled=YES;不自动锁屏 idleTimerDisabled
- iOS 视频全屏功能 学习
项目中,也写过类似"视频全屏"的功能, 前一阵子读到今日头条 的一篇技术文章,详细介绍三种旋转方法差异优劣最终择取.文章从技术角度看写的非常好,从用户角度看,也用过多家有视频功能的 ...
- ios阻止锁屏 --老代码,供参考
// Disable the idle timer [[UIApplication sharedApplication] setIdleTimerDisabled: YES]; // Or fo ...
- 阻止iOS设备锁屏
[[UIApplicationsharedApplication] setIdleTimerDisabled: YES];
随机推荐
- threejs三角形Geometry的顶点时针顺序会导致三角形看不见
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75,winSize.width/winSize.hei ...
- 模块(Modules)
一.引入模块 模块:当编写更大的应用程序时,所有的代码肯定会分成多个文件,这样便于维护,另外已经编写好的函数和对象在被多个程序中使用时,不用把函数和对象拷贝到每个程序中. 模块支持以上功能,在Pyth ...
- 《selenium2 python 自动化测试实战》(6)——打印信息和设置等待时间
打印信息经常用的有两个: # coding: utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.get( ...
- C#连接数据库以及增、删、改、查操作
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; usin ...
- SQL server无法连接,服务无法启动
Windows 不能在 本地计算机 启动 SQL Server 服务 错误代码126 在使用SQL2005(或2008)是可能会遇到错误提示: “Windows 不能在 本地计算机 启动 SQL Se ...
- Ecel 粘贴图片并调整大小,移到底层
Sub Click() ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.ScaleWidth 1.4, msoTrueSelection. ...
- BW模型数据删除
删除数据一般可以按请求(Request)来删除,需要从顶层模型往下删:也可以完成删除,在模型中就没有删除的顺序.本例中采用完全删除,但是按照从顶层模型往下的顺序删除数据. 1.删除信息立方体数据 ...
- phoenix elixir 框架简单试用
备注: 官方提供的脚手架工具,我们可以直接使用,生成代码,同时需要nodejs 环境配置(比较简单,参考 相关资料即可) 1. 安装脚手架 mix archive.install https:/ ...
- 云原生应用基金会CNCF
2006 年 8 月 9 日,埃里克·施密特(EricSchmidt)在搜索引擎大会上首次提出了“云计算”(Cloud Computing)的概念.一转眼十年过去了,它的发展势如破竹,不断渗透当代的 ...
- yum安装postgresql
https://wiki.postgresql.org/wiki/YUM_Installation