您的位置:首页 > 移动开发 > Android开发

关于XE8开发安卓手机硬件

2017-11-17 11:14 232 查看
准备工作

一些比较有用的声明

大小写转换:

 

function ToLower: string;

function ToLower(LocaleID: TLocaleID): string;

function ToLowerInvariant: string;

function ToUpper: string;

function ToUpper(LocaleID: TLocaleID): string;

function ToUpperInvariant: string;

 

class function LowerCase(const S: string): string;

class function LowerCase(const S: string; LocaleOptions:

TLocaleOptions): string;

class function UpperCase(const S: string): string;

class function UpperCase(const S: string; LocaleOptions:

TLocaleOptions): string;

//---------------------------------------------------------------

var

  str: string;

begin

  str := 'Delphi';

  str := str.ToLower; // delphi

  str := str.ToUpper; // DELPHI

end;

 

清除两边空格或指定字符:

 

function Trim: string;

function TrimLeft: string;

function TrimRight: string;

function Trim(const TrimChars: array of Char): string;

function TrimLeft(const TrimChars: array of Char): string;

function TrimRight(const TrimChars: array of Char): string;

字符串对比

 

function CompareTo(const strB: string): Integer;

 

class function Compare(const StrA: string; const StrB: string):

Integer;

class function CompareText(const StrA: string; const StrB: string):

Integer;

class function Compare(const StrA: string; const StrB: string;

LocaleID: TLocaleID): Integer;

class function Compare(const StrA: string; const StrB: string;

IgnoreCase: Boolean): Integer;

class function Compare(const StrA: string; const StrB: string;

IgnoreCase: Boolean; LocaleID: TLocaleID): Integer;

class  function  Compare(const  StrA:  string;  IndexA:  Integer;  const  StrB:

string; IndexB: Integer; Length: Integer): Integer;

class  function  Compare(const  StrA:  string;  IndexA:  Integer;  const  StrB:

string; IndexB: Integer; Length: Integer; LocaleID: TLocaleID):

Integer;

class  function  Compare(const  StrA:  string;  IndexA:  Integer;  const  StrB:

string; IndexB: Integer; Length: Integer; IgnoreCase: Boolean):

Integer;

class  function  Compare(const  StrA:  string;  IndexA:  Integer;  const  StrB:

string; IndexB: Integer; Length: Integer; IgnoreCase: Boolean;

LocaleID: TLocaleID): Integer;

class  function  CompareOrdinal(const  StrA:  string;  const  StrB:  string):

Integer;

class function CompareOrdinal(const StrA: string; IndexA: Integer;

const StrB: string; IndexB: Integer; Length: Integer): Integer;

//---------------------------------------------------------------

搜索字符串

 

搜索字符串:

 

function IndexOf(value: Char): Integer;

function IndexOf(const Value: string): Integer;

function IndexOf(Value: Char; StartIndex: Integer): Integer;

function  IndexOf(const  Value:  string;  StartIndex:  Integer):  Integer;

function IndexOf(Value: Char; StartIndex: Integer; Count: Integer):

function IndexOf(const Value: string; StartIndex: Integer; Count:

Integer): Integer;

function IndexOfAny(const AnyOf: array of Char): Integer;

function  IndexOfAny(const  AnyOf:  array  of  Char;  StartIndex:  Integer):

Integer;

function  IndexOfAny(const  AnyOf:  array  of  Char;  StartIndex:  Integer;

Count: Integer): Integer;

 

function LastIndexOf(Value: Char): Integer;

function LastIndexOf(const Value: string): Integer;

function LastIndexOf(Value: Char; StartIndex: Integer): Integer;

function LastIndexOf(const Value: string; StartIndex: Integer):

Integer;

function LastIndexOf(Value: Char; StartIndex: Integer; Count:

Integer): Integer;

function  LastIndexOf(const  Value:  string;  StartIndex:  Integer;  Count:

Integer): Integer;

function LastIndexOfAny(const AnyOf: array of Char): Integer;

function LastIndexOfAny(const AnyOf: array of Char; StartIndex:

Integer): Integer;

function LastIndexOfAny(const AnyOf: array of Char; StartIndex:

Integer; Count: Integer): Integer;

//---------------------------------------------------------------

是否包含:

 

function Contains(const Value: string): Boolean;

 

function StartsWith(const Value: string): Boolean;

function StartsWith(const Value: string; IgnoreCase: Boolean):

Boolean;

 

function EndsWith(const Value: string): Boolean;

function  EndsWith(const  Value:  string;  IgnoreCase:  Boolean):  Boolean;

 

class function EndsText(const ASubText, AText: string): Boolean;

//---------------------------------------------------------------

添加或解除引号:

 

function QuotedString: string;

function QuotedString(const QuoteChar: Char): string;

 

function DeQuotedString: string;

function DeQuotedString(const QuoteChar: Char): string;

//---------------------------------------------------------------

适宽处理:

 

function PadLeft(TotalWidth: Integer): string;

function PadLeft(TotalWidth: Integer; PaddingChar: Char): string;

function PadRight(TotalWidth: Integer): string;

function PadRight(TotalWidth: Integer; PaddingChar: Char): string;

//---------------------------------------------------------------

var

  str: string;

begin

  str := '1';

  str := str.PadLeft(4, '0'); // 0001

end;

 

插入与删除:

 

function Insert(StartIndex: Integer; const Value: string): string;

 

function Remove(StartIndex: Integer): string;

function Remove(StartIndex: Integer; Count: Integer): string;

//---------------------------------------------------------------

 

截取:

 

function Substring(StartIndex: Integer): string;

function Substring(StartIndex: Integer; Length: Integer): string;

//---------------------------------------------------------------

var

  str1, str2: string;

begin

  str1 := 'Delphi XE4';

  str2 := str1.Substring(7);    // XE4

  str2 := str1.Substring(7, 2); // XE

end;

 

替换:

 

function Replace(OldChar: Char; NewChar: Char): string;

function Replace(OldChar: Char; NewChar: Char; ReplaceFlags:

TReplaceFlags): string;

function Replace(const OldValue: string; const NewValue: string):

string;

function Replace(const OldValue: string; const NewValue: string;

ReplaceFlags: TReplaceFlags): string;

//--------------------------------------------------------------

var

  str1, str2: string;

begin

  str1 := 'ABC ABC ABC';

  str2 := str1.Replace('A', '*');                 // *BC *BC *BC

  str2 := str1.Replace('A', '*', [rfIgnoreCase]); // *BC ABC ABC

end;

 

分割:

 

function Split(const Separator: array of Char): TArray<string>;

function Split(const Separator: array of Char; Count: Integer):

TArray<string>;

function Split(const Separator: array of Char; Options:

TStringSplitOptions): TArray<string>;

function Split(const Separator: array of string; Options:

TStringSplitOptions): TArray<string>;

function  Split(const  Separator:  array  of  Char;  Count:  Integer;  Options:

TStringSplitOptions): TArray<string>;

function Split(const Separator: array of string; Count: Integer;

Options: TStringSplitOptions): TArray<string>;

//---------------------------------------------------------------

连接:

 

class function Join(const Separator: string; const values: array of

const): string;

class function Join(const Separator: string; const Values: array of

string): string;

class function Join(const Separator: string; const Values:

IEnumerator<string>): string;

class function Join(const Separator: string; const Values:

IEnumerable<string>): string;

class function Join(const Separator: string; const value: array of

string; StartIndex: Integer; Count: Integer): string;

//--------------------------------------------------------------

var

  S: string;

  str: string;

  strArr: TArray<string>;

begin

  str := 'A1,B2,C3,,,,D4,E5,F6,G7';

  strArr := str.Split([','], ExcludeEmpty);

 

  str := S.Join('-', strArr);             // A1-B2-C3-D4-E5-F6-G7

 

  str := S.Join('; ', [1,2,3,4,5]);       // 1; 2; 3; 4; 5

 

  str := S.Join(',', ['abc', 123, true]); // abc,123,True

end;

 

类型转换:

 

function ToBoolean: Boolean;

function ToInteger: Integer;

function ToSingle: Single;

function ToDouble: Double;

function ToExtended: Extended;

 

class function ToBoolean(const S: string): Boolean;

class function ToInteger(const S: string): Integer;

class function ToSingle(const S: string): Single;

class function ToDouble(const S: string): Double;

class function ToExtended(const S: string): Extended;

 

定界符:

 

function IsDelimiter(const Delimiters: string; Index: Integer):

Boolean;

function LastDelimiter(const Delims: string): Integer;

//---------------------------------------------------------------

 

空字符串:

 

const Empty = '';

 

function IsEmpty: Boolean;

 

class function IsNullOrEmpty(const Value: string): Boolean;

class function IsNullOrWhiteSpace(const Value: string): Boolean;

//--------------------------------------------------------------

 

String 与 Char:

 

class function Create(C: Char; Count: Integer): string;

class  function  Create(const  Value:  array  of  Char;  StartIndex:  Integer;

Length: Integer): string;

class function Create(const Value: array of Char): string;

 

property Chars[Index: Integer]: Char read GetChars;

property Length: Integer read GetLength;

 

function CountChar(const C: Char): Integer;

 

function ToCharArray: TArray<Char>;

function ToCharArray(StartIndex: Integer; Length: Integer):

TArray<Char>;

 

procedure  CopyTo(SourceIndex:  Integer;  var  destination:  array  of  Char;

DestinationIndex: Integer; Count: Integer);

//---------------------------------------------------------------

接下来重要的打电话

9 打电话、发短信和邮件,取得手机 IMEI 号

 

以下实现对电话功能的基本操作。

1、引用以下单元

uses

  Androidapi.JNI.Net, FMX.Platform, FMX.Helpers.Android,

   Androidapi.JNI.GraphicsContentViewText,

   Androidapi.JNI.JavaTypes, FMX.MediaLibrary.Actions, FMX.StdActns,

   Androidapi.JNIBridge, Androidapi.Helpers,

   Androidapi.JNI.Telephony, FMX.PhoneDialer , Androidapi.JNI.Os

2、建立如下函数

   public

     { Public declarations }

     TelephonyManager: JTelephonyManager;

     procedure Call_URI(const AAction: JString; const AURI: string);

     //  打电话、打开地图显示某个坐标点  、发送电子邮件、播放音乐

     procedure PhoneCall(phoneNumber: string); // 打电话

     procedure GetSN; //  获取Android手机 SIM卡串号

     procedure SentSMS(phoneNumber , SMSstring: string); // 直接没有任何提示的发送短信

procedure SentSMSfromIntent(phoneNumber , SMSstring: string); // 调用系统程序发短信

function FetchSms: string; // 收短信

 

3、实现函数功能

procedure TForm1.PhoneCall(phoneNumber: string); // 打电话

var

   phone: IFMXPhoneDialerService;

begin

   if TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService,

     IInterface(phone)) then

   begin

     phone.Call(phoneNumber);

     //  监听电话状态请用phone.OnCallStateChanged事件

   end;

end;

 

procedure TForm1.SentSMSfromIntent(phoneNumber , SMSstring: string);

//  调用系统程序发短信

var


   uri: Jnet_Uri;

   Intent: JIntent;

begin

   uri := StrToJURI('smsto:' + phoneNumber);

   Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_SENDTO, uri);


   Intent.putExtra(StringToJString('sms_body'), StringToJString(SMSstring));

   SharedActivityContext.startActivity(Intent);

end;

 

procedure TForm1.SentSMS(phoneNumber , SMSstring: string);

//  直接没有任何提示的发送短信

var

   j: JSmsManager;

begin

   j := tjsmsmanager .Create;

   j.sendMultipartTextMessage(StringToJString(phoneNumber), nil,

     j.divideMessage(StringToJString(SMSstring)), nil, nil);

end;

 

procedure TForm1.GetSN; //  获取Android手机SIM卡串号

var

   TelephonyServiceNative: JObject;

begin

   TelephonyServiceNative := SharedActivityContext.getSystemService

     (TJContext.JavaClass.TELEPHONY_SERVICE);

   if Assigned(TelephonyServiceNative) then

     TelephonyManager := TJTelephonyManager .Wrap

        ((TelephonyServiceNative as ILocalObject).GetObjectID);

 

   // TelephonyManager .getDeviceId 取IMEI

   //  TelephonyManager .getLine1Number  取 MSISDN   手机号,大部分 SIM 卡中不会写入这个

信息

   // TelephonyManager .getSimSerialNumber 取 ICCID

   //  TelephonyManager .getSubscriberId 取 IMSI   运营商实际上是用这个查询的他那张对应

电话号码的表

end;

 

function TForm1.FetchSms: string; // 收短信

var


   cursor: JCursor;

   uri: Jnet_Uri;

   address, person, msgdatesent, protocol, msgread, msgstatus, msgtype,

     msgreplypathpresent, Subject, body, servicecenter , locked: string;

   msgunixtimestampms: int64;

   addressidx, personidx, msgdateidx, msgdatesentidx, protocolidx, msgreadidx,

     msgstatusidx, msgtypeidx, msgreplypathpresentidx, subjectidx, bodyidx,

     servicecenteridx, lockedidx: integer;

begin

   uri := StrToJURI('content://sms/inbox'); //收件箱


  // cursor := SharedActivity.getContentResolver .query(uri, nil, nil, nil, nil);

     cursor := SharedActivity.

     managedQuery(

                        StrToJURI('content://sms/inbox'), //StrToJURI('content://sms/')所有短信, 含

发件箱

                        nil,

                        StringToJString('1=1)  group  by  (address'),//类似于 SQL语句,注意,括号只

有一半,原因中它已经有一对括号了

                        nil,

                        StringToJString('date asc')); //desc  降序

   //以上执行的语句是:SELECT  *  FROM  sms WHERE  (type=1)  AND  (1=1)  group  by  (address)

order by date asc

   addressidx := cursor .getColumnIndex(StringToJstring('address'));//电话

   personidx := cursor .getColumnIndex(StringToJstring('person'));

   msgdateidx := cursor .getColumnIndex(StringToJstring('date'));

   msgdatesentidx := cursor .getColumnIndex(StringToJstring('date_sent'));

   protocolidx := cursor .getColumnIndex(StringToJstring('protocol'));

   msgreadidx := cursor .getColumnIndex(StringToJstring('read'));

   msgstatusidx := cursor .getColumnIndex(StringToJstring('status'));

   msgtypeidx := cursor .getColumnIndex(StringToJstring('type'));

   msgreplypathpresentidx := cursor .getColumnIndex

     (StringToJstring('reply_path_present'));

   subjectidx := cursor .getColumnIndex(StringToJstring('subject'));

   bodyidx := cursor .getColumnIndex(StringToJstring('body'));

   servicecenteridx := cursor .getColumnIndex(StringToJstring('service_center'));

   lockedidx := cursor .getColumnIndex(StringToJstring('locked'));

//   while (cursor .moveToNext) do//对所有短信的循环

//   begin

     cursor .moveToLast;//最后一条

     address := JStringToString(cursor .getString(addressidx));

     person := JStringToString(cursor .getString(personidx));

     msgunixtimestampms := cursor .getLong(msgdateidx);


     msgdatesent := JStringToString(cursor .getString(msgdatesentidx));

     protocol := JStringToString(cursor .getString(protocolidx));

     msgread := JStringToString(cursor .getString(msgreadidx));

     msgstatus := JStringToString(cursor .getString(msgstatusidx));

     msgtype := JStringToString(cursor .getString(msgtypeidx));

     msgreplypathpresent := JStringToString

        (cursor .getString(msgreplypathpresentidx));

     Subject := JStringToString(cursor .getString(subjectidx));

     body := JStringToString(cursor .getString(bodyidx));

     servicecenter := JStringToString(cursor .getString(servicecenteridx));

     locked := JStringToString(cursor .getString(lockedidx));

     Result := IntToStr(trunc(msgunixtimestampms / 1000))+#13


     + '号码:' + address +#13

     + 'person:' + person +#13

     + 'msgdatesent:' + msgdatesent +#13

     + 'protocol:' + protocol +#13

     + 'msgread:' + msgread+#13

     + 'msgstatus:' + msgstatus +#13

     + 'msgtype:' + msgtype +#13

     + 'msgreplypathpresent:' + msgreplypathpresent+#13

     + 'Subject:' + Subject+#13

     + 'servicecenter:' + servicecenter +#13

     + 'locked:' + locked +#13

     + '内容:' + body;

//   end;

end;


********************************************************
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ex android 硬件