MaratBest
Пользователи-
Постов
23 -
Зарегистрирован
-
Посещение
Посетители профиля
Блок последних пользователей отключён и не показывается другим пользователям.
Достижения MaratBest
-
Добрый день. чуть-чуть поторопился... Вначале промучился с ошибкой I/O Error 13 при попытке чтения файла оказалось insPath содержит полный путь "root/storage/emulated/0/файл" системе в итоге зашло без рут "/storage/emulated/0/файл" это все зработало на планшете , где андроид 8.0 на телефоне где android 13 , procedure TMainForm.FormCreate(Sender: TObject); var ... begin IMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage(TMessageReceivedNotification, HandleIntentMessage); logSave('IMessageSubscriptionID :='+inttostr(IMessageSubscriptionID)); тут выходит значение IMessageSubscriptionID =327 и тишина, в логе нет ни единого сообщения , в какую сторону копать ?
-
Спаcибо за ответ. поменял манифест, приложение попадает выбор открыть с помощью в андроид ! а вот в приложениее не перехватывает сообщение подставил в свой код procedure TMainForm.FormCreate(Sender: TObject); var ... begin IMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage(TMessageReceivedNotification, HandleIntentMessage); logSave('IMessageSubscriptionID :='+inttostr(IMessageSubscriptionID)); тут выходит значение IMessageSubscriptionID =327 procedure TMainForm.HandleIntentMessage(const Sender: TObject; const M: TMessage); begin try logSave('HandleIntentMessage'); if M is TMessageReceivedNotification then begin logSave('HandleIntentMessage'); OnNewIntent(TMessageReceivedNotification(M).Value); end; except logSave('HandleIntentMessage except'); end; end; function TMainForm.OnNewIntent(Intent: JIntent): Boolean; var insPath: String; uri: Jnet_Uri; begin Result := False; try if Intent <> nil then begin uri := Intent.getData; if uri <> nil then begin insPath:= JStringToString( uri.getEncodedPath); logSave('Работаем с файлом:'+insPath); if (ExtractFileExt(insPath)='.x10') then begin logSave('Работаем с файлом:'+insPath); // работаете с файлом end; end; end; except logSave('OnNewIntent except'); end; end; в логе нет ни единого сообщения
-
Доброго времени суток. Написано приложение Delphi 11 для Android. На данный момент появилась необходимость открывать файлы формата *.х10 как зарегистрировать на андроид при установке приложения, что с помощью него можно отрывать файлы *.х10 (аналог,например при открытии *.pdf давал на выбор acrobat, chrome и т.д) и второй вопрос ,как понять что приложению передан файл на открытие ? типа paramstr или как ?
-
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Label1: TLabel; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure ButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure ButtonMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure KeyDown(NUM: Byte); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.ButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin KeyDown(TControl(Sender).Tag); timer1.Tag:=TControl(Sender).Tag; Timer1.Enabled:=true; end; procedure TForm1.ButtonMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin Timer1.Enabled:=false; end; procedure TForm1.Timer1Timer(Sender: TObject); begin KeyDown(Timer1.tag); end; procedure TForm1.KeyDown(NUM: Byte); begin case NUM of 1: label1.text:=label1.text+'нажата 1'; 2: label1.text:=label1.text+'нажата 2'; 3: label1.text:=label1.text+'нажата 3'; end; end; end. на форме 3 TButton. свойство tag от 1 до 3 соотвественно всем 3 кнопкам устанавливаю OnMouseDown =ButtonMouseDown OnMouseUp =ButtonMouseUp все работает !!! вопрос у меня был "не является ли это большим костылем " может кто подскажет поизящнее код
-
виртуальное устройство создаю
-
MaratBest отреагировал на сообщение в теме: krapotkin и Равиль Зарипов
-
наверное забыл написать, приложение android таймер нужен, чтобы клавиша печатала символ, пока будет нажата, типа как в windows клавиатура.
-
Делаю свою клавиатуру. не знаю правильно ли делаю, но выбрал такой путь. на форме допустим 10 TButton. tag от 1 до 10 соотвественно создаю процедуру , всем 10 кнопкам устанавливаю ее на OnMouseDown ButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin KeyDown(TControl(Sender).Tag); timer1.Tag:=TControl(Sender).Tag; Timer1.Enabled:=true; end; на OnMouseUp такой код(всем кнопкам) ButtonMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin Timer1.Enabled:=false; end; обработка таймера (interval 500) procedure TForm1.Timer1Timer(Sender: TObject); begin KeyDown(Timer1.tag); end; procedure TForm1.KeyDown(NUM: Byte); begin case NUM of 1: label1.text:=label1.text+'нажата 1'; 2: label1.text:=label1.text+'нажата 2'; 3: label1.text:=label1.text+'нажата 3'; ... end; не является ли это большим костылем ? там где label1.text:=label1.text+'нажата 1'; буду отсылать своей процедуре код нажатой клавиши
-
Добрый день !!! может у кого есть пример как проиграть буфер на android устройстве ? на windows делал через procedure TMainFormEmu.PlayBuffer(Buffer: array of byte); //процедура проигрывает буфер begin with header do begin wFormatTag := WAVE_FORMAT_PCM; // формат РСМ nChannels := 1; // моно nSamplesPerSec := 44100; // частота дискретитатции 44.1 Кгц wBitsPerSample := 8; // выборка 8 бит nBlockAlign := nChannels * (wBitsPerSample div 8); nAvgBytesPerSec := nSamplesPerSec * nBlockAlign; cbSize := 0; end; // if Opened = true then stopPlay; hEvent:=CreateEvent(nil,false,false,nil); if WaveOutOpen(addr(waveOut), 0, @header, hEvent, 0, CALLBACK_WINDOW) <> MMSYSERR_NOERROR then begin CloseHandle(hEvent); Exit; end; pBuf := GlobalAlloc(GMEM_MOVEABLE and GMEM_SHARE, length(Buffer)); pBuffer := GlobalLock(pBuf); with outHdr do begin lpData := PBuffer; dwBufferLength := length(Buffer); dwUser := 0; dwFlags := 0; dwLoops := 0 end; err:= WaveOutPrepareHeader(waveOut, @outHdr, sizeof(outHdr)); if Err <> 0 then Exit; copyMemory(pBuffer, @Buffer, length(Buffer)); err:= WaveOutWrite(waveOut, @outHdr, sizeof(outHdr)); if Err <> 0 then Exit; waveOutReset(waveOut); waveOutUnprepareHeader(waveOut,@outHdr,sizeof(wavehdr)); waveOutClose(waveOut); end;
-
Поменять цвет контролов с белого цвета на любой?
MaratBest опубликовал вопрос в Общая информация о TControl
На форме сеть куча ListBox, ListView, Memo,ItemListBox они все до безобразия белые как поменять их цвет допустим на черный? -
Задача получить нажатый символ (или код символа) на виртуальной клавиатуре! D10, android. Для примера. есть форма, есть кнопка , при нажатии выводим виртуальную клавиатуру, указываем вывод на form1 (или edit, memo) Keyboard.ShowVirtualKeyboard(memo1); как получить нажатый символ ? или я туплю..... или ...хз всю голову сломал думал через Edit сделать Edit1KeyDown, но там Key всегда 0 если цифры, коды если только служебные клавиши, на символы вообще не реагирует думаю сеть простой способ ?