if obj = nil then 出问题了。 LVibrator:=TJVibrator.Wrap((obj as iLocalObject).GetObjectID );//引用震动
----------------------------------------------
(C)(P)Flying Wang
Procedure ExecVibrator(Ams:Integer); var LObj:IInterface; LVibrator: JVibrator; begin //Exit;//暂时取消震动感应,安卓5.0版本闪退 LObj:=SharedActivity.getSystemService(TJActivity.JavaClass.VIBRATOR_SERVICE); if LObj<>Nil then Begin LVibrator := TJVibrator.Wrap((LObj as ILocalObject).GetObjectID);//调用振动 if LVibrator.hasVibrator then LVibrator.vibrate(Ams); End; end; 分开了,权限也加上去了。还是闪退 只能暂时先取消震动感应功能
----------------------------------------------
就怕想不到,没有做不到的
{$IFDEF Android} //生成振动规律数组,如AIntArr 为[500, 1000, 2000, 3000]表示等半秒 -> 震1秒 -> 等2秒 -> 震3秒,数字单位为毫秒。 function GetVibratorArray(const AIntArr: array of Int64): TJavaArray<Int64>; var LIndex: Integer; begin Result := TJavaArray<Int64>.Create(Length(AIntArr)); for LIndex := Low(AIntArr) to High(AIntArr) do Result.Items[LIndex] := AIntArr[LIndex]; end;
var LVibratorObj: JObject; LVibrator: JVibrator; LJavaArray: TJavaArray<Int64>; begin LVibratorObj := SharedActivityContext.getSystemService(TJContext.javaClass.VIBRATOR_SERVICE); LVibrator := TJVibrator.Wrap((LVibratorObj as ILocalObject).GetObjectID);//引用震动 if not LVibrator.hasVibrator then begin Showmessage('手机不支持震动'); Exit; end; //LVibrator.vibrate(500);//震动200ms LJavaArray := GetVibratorArray([200, 200, 200, 200]);//指出振动规律 LVibrator.vibrate(LJavaArray, -1);//不重复,只按振动规律振动一个循环 end;
----------------------------------------------
18114532@qq.com