Android实例-使用电话拨号器在移动设备上(官方)(XE8+小米2)

源文地址:http://docwiki.embarcadero.com/RADStudio/XE5/en/Mobile_Tutorial:_Using_the_Phone_Dialer_on_Mobile_Devices_(iOS_and_Android)

1.获取运营商、国家代码

 1 unit Unit1;
 2
 3 interface
 4
 5 uses
 6   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
 7   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation,
 8   FMX.StdCtrls, FMX.Edit,
 9   FMX.Platform,//需要引入
10   FMX.PhoneDialer;//需要引入
11
12 type
13   TForm1 = class(TForm)
14     Button1: TButton;
15     lblCarrierName: TEdit;
16     lblISOCountryCode: TEdit;
17     Button2: TButton;
18     edtTelephoneNumber: TEdit;
19     lblCallState: TEdit;
20     Label1: TLabel;
21     Label2: TLabel;
22     Label3: TLabel;
23     procedure Button1Click(Sender: TObject);
24     procedure Button2Click(Sender: TObject);
25   private
26     //电话服务
27     PhoneDialerService: IFMXPhoneDialerService;
28     { Private declarations }
29   public
30     //需要覆盖
31     constructor Create(AOwner: TComponent); override;
32     { Public declarations }
33   end;
34
35 var
36   Form1: TForm1;
37
38 implementation
39
40 {$R *.fmx}
41 {$R *.NmXhdpiPh.fmx ANDROID}
42
43 { TForm1 }
44
45 //获取电话服务
46 constructor TForm1.Create(AOwner: TComponent);
47 begin
48   inherited Create(AOwner);
49   TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService, IInterface(PhoneDialerService));
50 end;
51
52 //获取运营商
53 procedure TForm1.Button1Click(Sender: TObject);
54 begin
55  { test whether the PhoneDialer services are supported on your device }
56   if Assigned(PhoneDialerService) then
57   begin
58     { if yes, then update the labels with the retrieved information }
59     lblCarrierName.Text := ‘Carrier Name:  ‘  + PhoneDialerService.GetCarrier.GetCarrierName;
60     lblISOCountryCode.Text := ‘ISO Country Code: ‘ + PhoneDialerService.GetCarrier.GetIsoCountryCode;
61   end;
62 end;
63
64 end.

2.实现打电话功能

 1 unit Unit1;
 2
 3 interface
 4
 5 uses
 6   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
 7   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation,
 8   FMX.StdCtrls, FMX.Edit,
 9   FMX.Platform,//需要引入
10   FMX.PhoneDialer;//需要引入
11
12 type
13   TForm1 = class(TForm)
14     Button1: TButton;
15     lblCarrierName: TEdit;
16     lblISOCountryCode: TEdit;
17     Button2: TButton;
18     edtTelephoneNumber: TEdit;
19     lblCallState: TEdit;
20     Label1: TLabel;
21     Label2: TLabel;
22     Label3: TLabel;
23     procedure Button1Click(Sender: TObject);
24     procedure Button2Click(Sender: TObject);
25   private
26     //电话服务
27     PhoneDialerService: IFMXPhoneDialerService;
28     { Private declarations }
29   public
30     //需要覆盖
31     constructor Create(AOwner: TComponent); override;
32     { Public declarations }
33   end;
34
35 var
36   Form1: TForm1;
37
38 implementation
39
40 {$R *.fmx}
41 {$R *.NmXhdpiPh.fmx ANDROID}
42
43 { TForm1 }
44 //获取电话服务
45 constructor TForm1.Create(AOwner: TComponent);
46 begin
47   inherited Create(AOwner);
48   TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService, IInterface(PhoneDialerService));
49 end;
50
51 //打电话功能
52 procedure TForm1.Button2Click(Sender: TObject);
53 begin
54  { test whether the PhoneDialer services are supported on your device }
55   if Assigned(PhoneDialerService) then
56   begin
57     { if the Telephone Number is entered in the edit box then make the call, else
58       display an error message }
59     if edtTelephoneNumber.Text <> ‘‘ then
60       PhoneDialerService.Call(edtTelephoneNumber.Text)
61     else
62     begin
63       ShowMessage(‘Please type-in a telephone number.‘);
64       edtTelephoneNumber.SetFocus;
65     end;
66   end;
67 end;
68
69 end.

3.检测呼叫状态的变化

 1 unit Unit1;
 2
 3 interface
 4
 5 uses
 6   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
 7   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation,
 8   FMX.StdCtrls, FMX.Edit,
 9   FMX.Platform,//需要引入
10   FMX.PhoneDialer;//需要引入
11
12 type
13   TForm1 = class(TForm)
14     Button1: TButton;
15     lblCarrierName: TEdit;
16     lblISOCountryCode: TEdit;
17     Button2: TButton;
18     edtTelephoneNumber: TEdit;
19     lblCallState: TEdit;
20     Label1: TLabel;
21     Label2: TLabel;
22     Label3: TLabel;
23     procedure Button1Click(Sender: TObject);
24     procedure Button2Click(Sender: TObject);
25   private
26     //电话服务
27     PhoneDialerService: IFMXPhoneDialerService;
28     //定义方法
29     procedure MyOnCallStateChanged(const ACallID: String; const ACallState: TCallState);
30     { Private declarations }
31   public
32     //需要覆盖
33     constructor Create(AOwner: TComponent); override;
34     { Public declarations }
35   end;
36
37 var
38   Form1: TForm1;
39
40 implementation
41
42 {$R *.fmx}
43 {$R *.NmXhdpiPh.fmx ANDROID}
44
45 { TForm1 }
46
47 //获取电话服务
48 constructor TForm1.Create(AOwner: TComponent);
49 begin
50   inherited Create(AOwner);
51   TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService, IInterface(PhoneDialerService));
52   if Assigned(PhoneDialerService) then
53     PhoneDialerService.OnCallStateChanged := MyOnCallStateChanged;
54 end;
55
56 //检测呼叫状态的变化
57 procedure TForm1.MyOnCallStateChanged(const ACallID: String;
58   const ACallState: TCallState);
59 var outText: String;
60 begin
61   case ACallState of
62        FMX.PhoneDialer.TCallState.None:         outText := ‘No calls‘;
63        FMX.PhoneDialer.TCallState.Connected:    outText := ‘Connected‘;
64        FMX.PhoneDialer.TCallState.Incoming:     outText := ‘Incoming call‘;
65        FMX.PhoneDialer.TCallState.Dialing:      outText := ‘Dialing‘;
66        FMX.PhoneDialer.TCallState.Disconnected: outText := ‘Disconnected‘;
67   end;
68   lblCallState.Text := outText;
69 end;
70
71 end.

PS:

的 IFMXPhoneDialerService 接口提供了 OnCallStateChanged 事件,允许您处理呼叫状态的变化。 的 TCallState 枚举描述可能的电话状态。

下面的表描述的物品 TCallState 枚举(为每个平台支持的州是标有“+”)。 

描述 iOS 安卓
csNone 没有呼叫状态。 + - - - - - -
csConnected 电话调用者与被调用方。 + +
csIncoming 传入的电话。 + +
csDialing 手机在拨号状态。 + - - - - - -
csDisconnected 调用断开连接。 +
时间: 2024-08-26 04:16:46

Android实例-使用电话拨号器在移动设备上(官方)(XE8+小米2)的相关文章

android案例一 电话拨号器

效果图: 电话拨号器的核心原理:  意图 MainActivity代码: private EditTest et_number; //加载一个布局 setContentView(R.layout.Main); //获取需要的控件 editTest1 button1 et_number = (EditTest)findViewById(R.id.editTest1); Button btn_call = (Button)findViewById(R.id.button1); //为按钮btn_ca

Android学习3&mdash;电话拨号器

本测试主要实现了一个Android的拨打电话的功能 一:界面预览 由图中可以看出,这个Activity需要3个控件:TextView.EditText.Button 其实实现一个功能要经过几个步骤: 1,Activity的设置(即界面布局) 由于本功能比较简单,所以只有一个Activity,也即是使用Eclipse创建Android项目时默认创建的main_activity.xml 代码如下: <LinearLayout xmlns:android="http://schemas.andr

Android开发之电话拨号器

1.布局文件代码如下: 实现过程中,EditText提出警告the text field does not specify an inputType or a hint,原因是EditText控件需要定义inputType属性,其属性可以自行在网上查找,Android:inputType="number|phone"表示输入为数字或号码:还出现警告unexpected text found in layout file:"".然后我仔细地在layout文件中查找多余

Android实例-路径信息及文件和文件夹的操作(XE8+小米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.ScrollBox, FMX.Memo, FMX.Controls.Presentation, FMX.StdCtrls; type TForm1 =

Android学习笔记(1)——电话拨号器

搬运自本人博客:Android学习笔记(1)--电话拨号器 程序的实现过程非常简单,大体分为以下几步: 确定程序的功能,大致确定好UI界面. 通过调整xml文件参数让界面更加美观. 在Activity文件编写代码,完成对应的事件等. 对于电话拨号器,我们最后的界面大致如下: 对应的布局文件如下,采用的是相对布局. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <Relative

无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、短信发送器、Android 中各种布局(1)

1.Android是什么 手机设备的软件栈,包括一个完整的操作系统.中间件.关键的应用程序,底层是linux内核,安全管理.内存管理.进程管理.电源管理.硬件驱动 2.Dalvik VM 和 JVM 的比较 3.常见adb指令 platform-tools/adb.exe adb.exe : android debug bridge android调试桥 adb devices:列出所以连接的设备 adb kill-server :杀死adb调试桥 adb start-server :启动adb

Android实现电话拨号器和短信发送器

电话拨号器和短信发送器是Android初学者很好的练习项目,今天就找了两个写得很不错的例子学习下 电话拨号器 实现原理:用户输入电话号码,当点击拨打的时候,由监听对象捕获,监听对象通过文本控件获取到用户输入的电话号码,由于系统已经实现了电话拨号功能,所以我们只需要调用这个功能就可以了. 步骤: 1.界面布局 2.编写Activity 3.使用意图过滤器激活电话拨号功能 4.添加电话服务权限(用手机的电话服务,要在清单文件AndroidManifest.xml中添加电话服务权限) 如图所示这三个控

初识安卓小程序(Android电话拨号器)

首先,先创建一个安卓项目(我的版本是4.4.2的),名字为"电话拨号器",创建的时候点击"clipart",如图: 然后在res文件夹下找到layout文件夹,找到activity_main.xml或fragment_main.xml,在里面输入或拖拽按钮 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="

android基础(3):电话拨号器

电话拨号器: 权限:android.permission.CALL_PHONE 布局代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_hei