
安卓
文章平均质量分 62
pcplayer
这个作者很懒,什么都没留下…
展开
-
手机 APP 的卖货界面
网上买菜的微信小程序,其典型界面是左侧一个列表显示商品分类,右侧一个列表,显示商品明细。左侧列表要显示当前选中的是哪条分类记录(高亮这条记录)。右侧列表滑到底部后,往上再滑一次,自动切换到下一个分类,此时左侧列表的选中画面也同时要更新(高亮下一条记录)。原创 2022-09-20 08:44:26 · 614 阅读 · 0 评论 -
Skia4Dephi 的 Demo 程序界面架构分析
虽然 Skia4Delphi 的 Demo 程序中,运行在 Windows 上的 VCL 程序以及可以运行在手机上的 FMX 程序,都采用了相同的类似手机 APP 的层叠界面的设计模式,但最实用的还是手机 APP,因为屏幕太小,不可能一屏里面还划分几个区域,只能是一层一层的界面叠加。因此,这样的设计模式,在做手机 APP 的时候非常值得学习。实际上它的 FMX 的 Demo 程序的框架,可以直接用于我们自己开发的手机 APP。......原创 2022-08-29 21:41:05 · 5389 阅读 · 1 评论 -
Skia4Delphi 在 Delphi 里面利用 Skia 画图
简介Skia 是一个 2D 库,画图性能非常好。是由 Google 开源出来的。在 Delphi 里面如何使用这个 2D 库,来利用它提供的一些好处?有一个开源的项目,Skia4Delphi 很好地解决了这个问题。它使得 Delphi 的 VCL 程序和 FMX 程序都能利用 Skia 库来画 2D 图。比如,可以用 Delphi 的程序来显示 WebP 这种格式的图,SVG 的图,等等。当然,Skia 还有很多 2D 图的算法。这个开源项目在:https://github.com/skia原创 2022-05-14 01:12:57 · 3741 阅读 · 0 评论 -
Delphi 开发跨平台 Android / iOS 程序的多语言
使用 Delphi 的 FireMonkey 框架,开发跨平台的程序,可以做到一个源码,编译成 Windows, Mac OS, Android, iOS,甚至是 Linux 上面运行的程序。简单说,就是可以开发 Android 和 iOS 的 APP,同时代码不修改也可以运行在 Windows 上和 Mac OS 上面。如果你发布的 APP 需要给各国用户使用,需要考虑多语言的支持。我之前有博客文章写过如何实现多语言支持:假期有时间写代码:FireMonkey 之多语言(TLang)问题简原创 2022-04-16 03:23:24 · 3199 阅读 · 0 评论 -
Delphi 10.4.2 社区版开发的 APP 在 Google play 发布成功
这个 APP 在 Google Play 的地址:蓝牙食品温度计APP地址点这里简单说明1. Google Play 的发布,目前有一些新的要求。按照网上搜索出来的资料去做。没什么问题。这里对我来说有两个要求是需要特别投入一点工作的:1.1. 目前发布,必须是 AAB 文件而不是 APK 文件;1.2. 目前发布,必须是 Android API level 30,但 Delphi 10.4.2 只支持到 29;我前面有文章提到如何做。2. 需要写一份隐私政策文件。发布后,等了原创 2021-12-31 11:59:36 · 955 阅读 · 0 评论 -
FireMonkey 跨平台框架下的图片缩放和 JPEG 编码
在 VCL 底下,把一个 Bitmap 变成 JPEG,是采用将 TBitmap 的内容赋值给 TJpegImage 的方式。在 FireMonkey 底下该怎么做?看到论坛有人提问,上网查了一下资料,自己写代码测试了一下。以下代码测试通过:uses FMX.Surfaces;procedure TForm1.Button1Click(Sender: TObject);var Bmp: TBitmap; Src, Trg: TRectF; NewWidth, NewHeigh原创 2021-12-24 09:51:48 · 652 阅读 · 0 评论 -
Delphi 10.4.2 CE 社区版支持 Android API-30,之二
前情回顾话说直接修改程序项目的AndroidManifest.template.xml,将 API-level 从通配符改为写死的 30 后,可以编译发布出 AAB 文件,而且这个 AAB 文件上传到 Google play 它没提示 API-level 是 29 不合格,算是通过了。但是,如果选择程序项目的 Configuration 为Development,手机插上电脑,重新编译发布安装到手机上,安装失败,错误提示:INSTALL_PARSE_FAILED_NO_CERTIFICATES。...原创 2021-11-25 19:33:31 · 10791 阅读 · 0 评论 -
Delphi 10.4.2 CE 社区版支持 Android API-30,之一
Delphi 10.4.2 社区版,安装后,最高支持到安卓10,API-29。但是,现在如果想发布到 Google play,需要:1. 必须是 APP bundle 文件,也就是 AAB 文件,而不能是 APK;2. 必须是最低支持 API-30;上网搜索各种说法,最终还是自己解决。Delphi 盒子论坛的 "emailx45"提供了很多思路和帮助。记录一下,如果有人遇到相似问题,可以看这里。一. 如何编译 AAB:一开始查到的网页是 Marco Cantu 的博客文章,说的是原创 2021-11-22 02:29:57 · 4097 阅读 · 0 评论 -
FireMonkey ListView 绑定数据显示多个图片
概述采用 Delphi 的 FireMonkey 框架,可以开发运行在 WINDOWS, Android, iOS 和 MacOS 上面的代码。其中一个比较常用的界面显示控件是 TListView。如果数据是多条,来自数据库,或者来自多个对象的对象列表(TObjectList),采用 Delphi 的数据绑定功能(LiveBindings)可以让 ListView 显示来自数据的内容。需求:ListView 显示的多条内容,每一条,可以有一个图片,有段文字,等等。Delphi 提供了几种固定原创 2021-10-18 20:07:09 · 1309 阅读 · 0 评论 -
FireMonkey TListView 使用 LiveBindings 绑定 TObjectList
前言:Delphi FireMonkey 的 LiveBindings 可以用来直接绑定界面元素和一个对象的属性,这样就可以把对象的值显示到界面上。常见的是将数据库 DataSet 的数据显示到界面上。如果数据是一组对象,放到一个 TObjectList 里面,该如何做?以下操作在 Delphi 10.4 社区版上测试通过。正文开始:1. 有一个对象:TMyDev = class private FDevID: string; FDevName: string;原创 2021-10-15 20:59:51 · 540 阅读 · 0 评论 -
Delphi FireMonkey 振动手机
参考链接:How to vibrate iOS and Android phones using FireMonkey and XE8 (embarcadero.com)实测以下代码在 D10.4 社区版,OPPO 手机上运行成功。前提:安卓系统,需要设置工程文件里面的用户权限:需要 Vibrate 权限,在 Project - Options - UserPermissions 里面,找到 Vibrate ,勾选。以下是全部测试代码:unit Unit1;interface原创 2021-10-13 18:28:31 · 247 阅读 · 0 评论 -
蓝牙的一个 bug
Delphi 10.4.2 社区版。TBluetoothLE 控件,启动蓝牙设备扫描后,有两个事件:1. OnDiscoverLEDevice;发现一个设备也触发,因此会不停地触发。2. OnEndDiscoverDevices;扫描结束触发。什么是扫描结束呢?因为启动扫描是:BluetoothLE1.DiscoverDevices(ScanningTime);所以,应该就是ScanningTime 这个时间到了。可以理解为扫描动作的超时值。但是,在 WINDOWS 底下,这.原创 2021-09-24 22:13:29 · 548 阅读 · 0 评论 -
FireMonkey 多平台下 TIniFile 读 ini 文件要注意
简述:如果要多平台兼容,这个 ini 文件必须是 UTF8 编码,否则如果这个 ini 文件里面有中文,安卓下会乱套。问题:TIniFile 在 WINDOWS 平台下,封装的是 WINDOWS 提供的接口。在 System.IniFiles 里面有注释:TIniFile - Encapsulates the Windows INI file interface (Get/SetPrivateProfileXXX functions)经过测试,TIniFile 在 WINDOWS 环境下只能原创 2021-09-12 12:40:34 · 456 阅读 · 0 评论 -
Delphi 10.4 社区版的动画有 BUG
做了个简单的小程序,主要功能有蓝牙。放了一个 TCircle 在上面,给它增加了一个 TColorAnimation 用于接收到蓝牙数据的时候,变化颜色闪烁,作为接收到数据的提示。在 WIDNDOWS 底下运行正常;在 Android 32 底下运行正常;在 Android 64 底下运行,过几分钟就会出现异常提示:raised exception class Segmentation fault (11).,然后程序就崩溃了。以为是蓝牙部分导致的问题,彻底把蓝牙部分的代码屏蔽掉,问题依旧存原创 2021-09-11 22:49:26 · 422 阅读 · 0 评论 -
FireMonkey 使用剪贴板
我想在安卓里面使用剪贴板,把当前程序的内容复制到剪贴板上。查了一下资料,应该这样做:uses FMX.Platform, FMX.Clipboard;{$R *.fmx}procedure TForm1.Button1Click(Sender: TObject);var ClipboardService: IFMXExtendedClipboardService;begin if TPlatformServices.Current.SupportsPlatformService原创 2021-08-30 21:13:25 · 306 阅读 · 0 评论 -
Delphi 10.4 社区版安卓下蓝牙的一个问题
蓝牙控件有这么一个方法:varACharacteristic: TBluetoothGattCharacteristic;ACharacteristic := BluetoothLE1.GetCharacteristic(AService, My_Characteristic_ID);但是,这个方法可能会返回 nil,不是这个ACharacteristic 不存在,而是一个 bug。这个 bug 在 Delphi 10.3.3 社区版就存在,10.4 还在。在执行上述方法获得一个...原创 2021-08-30 00:42:09 · 624 阅读 · 0 评论 -
Delphi 10.4 社区版的 WebBrowser 在安卓下的问题
之前我写过一篇文章:Delphi APP 里面使用 HTML5 来做帮助文档,移植WebBroker进Android APP在这篇文章里面,我提到把 HTML 的内容放进 SQLite 数据库,打包进 APP,然后使用 WebBrowser 通过内置的 Indy HTTP Server 访问数据库来显示 APP 发布给用户的帮助文档或者其它任意文档。后来,为了不要在 APP 内部内置一个 Web Server,我试着程序启动后,将打包在 SQLite 数据库里面的 HTML, CSS, 以及页面中用原创 2021-08-29 01:31:43 · 953 阅读 · 0 评论 -
FireMonkey 的网格 Grid 的用法(1)
学习一下在 FireMonkey 里面怎么用格子来实现一些界面效果。比如,类似 Delphi IDE 的属性面板那种格子。一边学习一边写 Blog 作为记录。从最简单的玩法开始。创建一个 FireMonkey 的工程,保存一下。只需要一个 Form。拖一个 TLayout 过来,设置 Align 为 Top;拖一个 TGrid 到这个 Layout 里面,设置 Align 为 Left...原创 2020-01-04 20:39:11 · 1839 阅读 · 0 评论 -
安卓下打开 PDF, MP4 等外部文件
用 Delphi 写的 APP 要打开诸如 MP4,PDF 等文件,可以调用安卓系统里的其它程序来打开。调用方法,我之前写过一篇:https://blog.youkuaiyun.com/pcplayer/article/details/80852385最近要播放 MP4,再次把这段代码拿来测试了一下。发现在 Delphi 10.3.1 + Android 9.0 的情况下:URI := TJnet...原创 2019-08-13 11:54:14 · 2208 阅读 · 0 评论 -
安卓APP的http访问权限
安卓下,默认只允许 https 的访问,不允许 http 的访问。用 Delphi 写一个安卓 APP,用 TIdHTTP 去访问一个 WEB 服务器,不行。网上查了一下,发现需要这样做:在 APP 的工程目录下,有一个 XML 文件,“AndroidManifest.template.xml”,用文本 编辑器打开它:在<application android:persiste...原创 2019-09-24 19:04:58 · 64680 阅读 · 12 评论 -
使用Delphi进行相机访问
原文:https://community.idera.com/developer-tools/b/blog/posts/mit-delphi-zu-mobilen-welten---app-programmierung-tutorial-teil-2-kamera-zugriff-mit-delphi应用编程教程第2部分:使用Delphi进行相机访问在本教程的第二部分中,我们将使用D...翻译 2019-04-06 23:23:20 · 4100 阅读 · 0 评论 -
FireMonkey ListBox 的几个事件:拖动,点击,长按
Mobile 手机APP,采用 FireMonkey 的 ListBox 的话,大概会需要以下功能:1. 响应用户手指点击某个条目,然后做某事;2. 响应用户长按,做其它事;针对需求1,这里,不能用 ListBox.OnClick 事件来响应单击。因为用户拖动 ListBox 的时候,也会触发这个事件。这里应该采用 ListBox.OnItemClick 事件。针对需求2,首先设置 ListBox...原创 2018-06-05 23:20:18 · 1570 阅读 · 0 评论 -
APP 多张图片滑动显示 - 之二
上一个同名的博客,俺写了如何用代码去让 TabControl 切换 TAB 页的时候出现滑动的效果。上述代码,在 WINDOWS 底下是没有问题的。在 Delphi XE8 上面,跑当年的安卓手机(Android 5.0)也是没有问题的。在 Delphi 10.3.1下,Android 9.0 底下,上述代码不会出现滑动效果,图片直接跳出来,而不是滑出来。FireMonkey 还有另外一...原创 2019-08-11 19:29:16 · 1616 阅读 · 0 评论 -
APP 多张图片滑动显示
用 Delphi FireMonkey 做一个简单的 APP,效果是多张图片,滑动显示。一次显示一张图片,手指触摸屏幕左边,向左滑动显示下一张图片;手指触摸屏幕右边,向右滑动显示上一张图片。图片切换过程,有滑动过去的动画效果。实现方法:1. 在 Delphi 里面,创建一个 FireMonkey 的工程。里面有一个 Form1;2. 在这个 Form1 上面,放上一个 TabContr...原创 2019-08-11 13:17:18 · 2465 阅读 · 0 评论 -
Delphi Android Deployment 文件究竟在哪里?
用 Delphi 做 Android 程序,开发阶段肯定是 Debug 模式。如果程序需要发布一些额外的文件,比如 SQLite 的数据库文件,则需要在点击菜单 [Project] - [Deployment] 弹出来的界面里面,去增加这个文件。然后,如果要编译 Release 版本,它的 Deployment 界面里面,没有这个文件,还必须要手动添加一遍。没找到可以自动复制的地方。这个 De...原创 2018-12-02 12:45:46 · 2263 阅读 · 0 评论 -
FMX APP SpeedButton 图标的颜色 - 界面设计
做手机 APP 的话,按钮最好是用 TSpeedButton。最常见的用法就是一个界面最顶上左边那个向左的箭头按钮 -- 退出这个界面。默认的办法是设置这个 TSpeedButton 的 StyleLookup,里面有很多默认的图标,包括向左的箭头。然后,这个 APP 在安卓下,就是安卓的默认图标;在 iOS 下,就是 iOS 的默认图标。在 Windows 下,它显示 Windows 的...原创 2018-08-02 12:14:42 · 1411 阅读 · 0 评论 -
APP 发布和 Android 8 的问题
如果你要发布 APP 到 Google Play 里面去,Google 的最新政策是:2018年8月起,所以新发地 APP 都必须支持 Android 8 或更高的版本。2018年11月起,所有APP的升级都必须支持 Android 8 或更高版本。Delphi 10.2.3 还没有支持到 Android 8,因此,编译发布 APP 的时候,可能需要做一些工作。下面这篇文章讲到如何处理:Targe...转载 2018-07-14 09:43:23 · 459 阅读 · 0 评论 -
手机APP打开一个安卓系统支持的文件,比如 PDF
在某个 Q 群里有人问如何在安卓里打开 PDF 文件。俺随手搜索了一下,马上获得答案:https://stackoverflow.com/questions/28699574/delphi-open-pdf-from-ios-android-local-storage?rq=1实际上的代码就是这样几行:procedure btnPdfClick(Sender: TObject);var f...原创 2018-06-29 09:56:22 · 2588 阅读 · 0 评论 -
Delphi MediaPlayer Android 的问题
Delphi 10.2 FireMonkey 下,TMediaPlayer 目前支持 Windows, iOS, Android 好像还支持 MAC OS。在 iOS 底下表现正常。在 Android 下面,界面上放一个 Button,在 OnClick 里面执行以下代码:MediaPlayer1.FileName := 'MyVideo.mp4';MediaPlayer1.Play;点击按钮,执...原创 2018-04-06 02:40:39 · 2531 阅读 · 0 评论 -
Delphi MediaPlayer Android 的问题 之二
这几天都在折腾 Delphi FireMonkey MediaPlayer 在安卓下的问题。查源代码,这个 MediaPlayer 也是封装了安卓的 MediaPlayer,播放界面使用了安卓的 View 。人生就是打怪过关。这里好多关,最后还是过不了:1. 上一篇文章里提到的,第一次播放后,关闭 MediaPlayer,然后给它设置新的视频文件名,然后播放,却播放不起来的问题。通过使用 Time...原创 2018-04-11 20:24:45 · 2307 阅读 · 0 评论 -
自己写的APP如何禁掉安卓锁屏
我要写一个 APP 是播放视频的。播放视频的时候,手机过一会自动锁屏。这个是手机本身的设置。如何在我的程序中禁止掉这个?经过搜索,安卓下有办法了。请见:安卓下如何用 WakeLock上述 StackOverflow 问题解答里面,给出了一个单元:Android.JNI.PowerManager.pas,我搜了一下 Delphi 提供的源代码,一堆 Android.JNI.xx 但没有这个文件。我自...原创 2018-03-12 18:44:38 · 1792 阅读 · 0 评论 -
APP 横屏和竖屏
普通情况下,APP 随着用户拿手机是横向还是竖向,自动翻转 -- 当然,这个也需要用户设置手机的屏幕是否跟随手机的物理方向而翻转。但如果我们的APP,在某种情况下,必须以竖屏方式显示,在某种情况下,必须以横屏方式显示,不管用户是否把手机横过来放。该怎么办?网上搜了一堆东西出来。安卓的资料比较多一点,iOS 的就很少了。最终解决了这个问题。大概代码如下:uses {$IFDEF IOS}iOSapi...原创 2018-03-16 18:05:38 · 6047 阅读 · 2 评论 -
FireMonkey 做 APP 的界面设计方法研究
下载安装了 Delphi 社区版 10.3 ,从它的 GetIt 下载了一个 Demo 程序。程序的名字叫做 ProfileForm。界面非常漂亮,有点惊艳的感觉。赶紧仔细研究一下它是怎么做出来的。先看图:首先,这个 APP 是在一个 Frame 里面去做界面设计和控件的摆放。然后在主 Form 里面,放入这个 Frame。在主 Form 里放一个 TStyleBook 名为 JetSty...原创 2018-12-06 13:01:21 · 4334 阅读 · 9 评论 -
用 Delphi 开发 APP 时程序参数的设置修改以及保存方法
做一个程序,总会有一些参数,是需要在运行时,让用户去选择设置的。用户设置完成后,需要保存,这样下次程序启动后,工作参数就是上次用户设置的参数。传统的 Windows 底下,最常用的方式,是采用 ini 文件来保存参数。然后通过读写 TIniFile 来获取参数,或者将参数写入 ini 文件。不过用 ini 文件,采用 TIniFile 来打开 ini 文件,程序员需要写很多读写 TIniFil...原创 2018-12-20 00:55:13 · 1899 阅读 · 0 评论 -
Delphi 编译发布安卓的APP名字问题
在 Delphi 里面新起一个跨平台的工程,假设命名它为 TestAndroid。如果一切都是默认操作的话,最后在 Build 一个安卓程序的时候,会在工程当前文件夹底下的 \android\debug\ 底下,有一个名为【AndroidManifest.xml】的文件。这个文件会打包进 APK里面,发布以后,手机安装这个 APK 的时候会用到。这个文件里面有一个这样的字符串:【package...原创 2018-12-16 13:47:45 · 2122 阅读 · 0 评论 -
FireMonkey 界面的玩法
FireMonkey 用来做 APP 的一个特点就是做界面通吃各平台,因为它自己画图。因为自己画图,所以如果 APP 需要一些效果,也可以程序员自己搞定,通过组合各种形状,无需找第三方控件。先看一个效图图:第一个图是界面元素,第二个图中的圆圈发光,是因为鼠标点下去(或者手指头触摸)。这种效果,我摸索了一下,发现用 FireMonkey 完全可以在设计期用现场控件堆出...原创 2019-08-10 19:04:25 · 7268 阅读 · 0 评论 -
MediaPlayer Android 下播放 MP4 的问题
开发环境:Delphi 10.3.1 社区版。测试环境:A. Android 5.0;B. Android 9.01. 进度条Delphi 官方带的例子里面,关于进度条的代码:procedure TForm1.Timer1Timer(Sender: TObject);begin if ProgressBar1.Max <> MediaPlayer1...原创 2019-08-13 18:24:26 · 3337 阅读 · 0 评论 -
再说安卓的动态权限申请
本博客之前有两篇文章提到安卓的动态权限申请。各位观众读了以后,可能还是蒙的,因为那两篇文章没写清楚。所以这里再写一篇。开发环境:Delphi 10.3 社区版。安卓系统下,APP 需要申请权限的地方有两处。1. 原来就有的,Delphi IDE 的菜单:Project / Options / Application / User Permissions 里面,右边窗口,找到你要的功能的...原创 2019-06-23 19:34:22 · 2561 阅读 · 0 评论 -
Delphi 开发 Android APP 的 BLE 蓝牙的动态权限
Delphi 10.3 社区版,提供的 Sample 里面有一个例子程序在:C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\Bluetooth\BLEScanner这个例子程序提供了打开 BLE 的...原创 2019-04-21 23:47:19 · 2376 阅读 · 1 评论 -
Delphi 10.3.1 发布
免费的社区版同样推出了 10.3.1。经过测试,之前 10.3 在 Android 5.0 上界面冻结的问题,已经解决。原创 2019-02-15 22:02:57 · 5476 阅读 · 4 评论