Перейти к содержанию
Fire Monkey от А до Я

Александр Лукьянов (Filament Extruder 1.75)

Пользователи
  • Постов

    30
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Сообщения, опубликованные Александр Лукьянов (Filament Extruder 1.75)

  1. Добрый день.

    Использую платный компонент и не могу пока купить его. использую триал версию. проблема в том что Android 64 в бесплатной версии отствует.

    Могу ли я выложить в плей маркет х64 какой нибудь скачивающее приложение . что бы он скачал 32х разрядную версию и запустил ее потом./установил. спасибо

  2. определяется как стандартная камера. почему берлин - я использую tms mqtt. мне нужно сфоткать , посчитать точки темные в ряд и отправить данные на сервер. 

    В rio есть пример по умолчанию с otg? просто в berlin просто передняя и задняя камера есть только пример

     

     

     

  3. сам прибор нужно воспринимать как камера. микроскопом он становится из за линз. у меня к сожалению знаний маловато. мой уровень - скачать чужой компонент и применить. или исходники какие нибудь переделать под себя.

  4. Добрый день. к OTG подключен микроскоп. с приложением от play market он работает - картинка идет.мне 

    Хочу написать андройд приложение которое будет захватывать картинку с микроскопа в bitmap по таймеру.  может  быть есть готовый компонент с которым можно без проблем захватить в bitmap

    подскажите как сделать. Готов проспонсировать решение данного вопроса.

    Необходимо рабочий пример на Delphi 10.1 Berlin

  5. Вот такой например вариант. Может быть тут ошибка.?

     

    package com.PanelControlReceiver;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    
    import java.text.Format;
    import java.text.SimpleDateFormat;
    import java.util.Date;
     
    import android.app.AlarmManager;
    import android.app.PendingIntent;
    import android.os.Bundle;
    import android.os.PowerManager;
    import android.widget.Toast;
    import java.util.Calendar;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.io.File;
    
    import android.media.Ringtone;
    import android.media.RingtoneManager;
    import android.net.Uri;
    import android.util.Log;
    
    
    
    
    public class BootCompletedReceiver extends BroadcastReceiver {
    	
    	
     @Override 
     public void onReceive(Context context, Intent intent) {
    	
    
    
    	 
    
     if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
    	 
    
    	
    Intent TestLauncher = new Intent();
    TestLauncher.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity");
    TestLauncher.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(TestLauncher);
    //обычный запуск приложени¤
    
    
    	
    	
    
     }
      
    }
    }
    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.Controls.Presentation, FMX.StdCtrls,
    
        {$IFDEF ANDROID}
    
      Androidapi.Helpers, FMX.Platform.Android, androidapi.JNI.Os,
      FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNIBridge,
    
     Androidapi.JNI.JavaTypes, Androidapi.JNI.App, Androidapi.JNI.Telephony, Androidapi.JNI.Provider,
    
      System.DateUtils,Posix.Unistd,
    
    
      //ВАЖНО ЧТО ЭТОТ ФАЙЛ МЫ СГЕНЕРИРОВАЛИ ПО СТАТЬЕ ИЗ ПАПКИ C:\DB\eHomeSmartMobile\eHSforAndroid\Application\java
       Androidapi.JNI.BootCompletedReceiver,
      //ВАЖНО ЧТО ЭТОТ ФАЙЛ МЫ СГЕНЕРИРОВАЛИ ПО СТАТЬЕ ИЗ ПАПКИ C:\DB\eHomeSmartMobile\eHSforAndroid\Application\java
    
      Androidapi.JNI.Net;
    
    
    {$ELSE}
    {$IFDEF IOS}
      Macapi.Helpers, iOSapi.Foundation, FMX.Helpers.iOS, iOSapi.UIKit;
    {$ENDIF IOS}
    {$ENDIF ANDROID}
    
    
    
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.fmx}
    
    
    
    function DateTimeLocalToUnixMSecGMT(const ADateTime: TDateTime): Int64;
    begin
      Result := DateTimeToUnix(ADateTime) * MSecsPerSec - Round(TTimeZone.Local.UtcOffset.TotalMilliseconds);
    end;
    
    
      function CreateAlarmIntent(const AID: Integer): JPendingIntent;
      var
      Intent: JIntent;
      begin
      Intent := TJIntent.Create;
      Intent.setClassName(TAndroidHelper.Context, TAndroidHelper.StringToJString('com.embarcadero.firemonkey.FMXNativeActivity'));
      Result := TJPendingIntent.JavaClass.getService(TAndroidHelper.Context, 0, Intent, TJPendingIntent.JavaClass.FLAG_UPDATE_CURRENT);
      end;
    
    
    procedure set_autorestart_app;
    var
      PendingIntent: JPendingIntent;
    begin
      PendingIntent := CreateAlarmIntent(1);
    
    
    TAndroidHelper.AlarmManager.&setRepeating(TJAlarmManager.JavaClass.RTC_WAKEUP,DateTimeLocalToUnixMSecGMT(now),10000,PendingIntent);
    //запуск каждые X секунд
    
    end;
    
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Application.Terminate;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    set_autorestart_app;
    end;
    
    end.

     

  6. Ребята столкнулся еще с такой проблемой. пытаюсь каждые 5 секунд запустить свое приложение, но запуск происходит раз в минуту. какие бы настройки я не ставил. Даже если ставлю 90 секунд то все равно раз в минуту. почему так может быть.

     

    		
    			
        Intent restartIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
        PendingIntent intent1 = PendingIntent.getActivity(context, 0,restartIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    	
    	
    	manager.setRepeating(AlarmManager.ELAPSED_REALTIME, 5000,
                3000, intent1);
    			
    	//manager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),(long) 5000, intent1);
    	//Повторный запуск каждые 5 секунд
    
    
    	

     

  7. Ребята, важное уточнение для Xiaomi - выключайте оптимизацию в настройках телефона. в режиме разработчика. заработало не только мое приложение но еще одно из плей маркета - даже не заметил что оно и не работало пока не снял опцию и перезагрузил телефон

  8. В Embarcadero RAD Studio 10.1 Berlin повторить фокус не получается. вроде бы все тоже самое делаю. генерирую classes и подключаю,  компилирую но после рестарта ОС автозапуска нет. Не совсем понятно можно ли этим компонентом сделать тоже самое? 

    https://github.com/barisatalay/delphi-android-broadcast-receiver-component

     

  9. Добрый день.

    У меня есть android 4.4.2 , 512mb Ram, 

    Примерно раз в 5 дней мое приложение на андройде просто закрывается. отследить причину не понятно как. Может память заканчивается из -за утечки. может еще что. ADB over Wifi перестает работать тоже, хоть и порт телнетом открывается... 
    Посоветуйте костыли какие нибудь - что бы приложение автоматически вновь запускалось как только закрылось.

    Спасибо.

     

     

     

  10. Добрый день!
    Хочу эмулировать в андройд боксе курсор в системе из под сервиса, в том числе касания под курсором. насколько это сложно? может быть есть какие то готовые компоненты или готовые примеры - мне бы как по проще.

    Меня бы так же устроило и аппаратное решение, когда мы в usb вставляем стик и каким либо образом при помощи приложения обращаясь к стику смогли бы управлять курсором.

  11. Добрый день. Написал приложение и иногда оно закрывается само по себе через сутки или двое. возможно заканчивается ram.

    Хотел бы видеть в приложении свободное ram что бы точнее определиться что происходит...

    Поделитесь кодом определения на андройде свободного RAM

  12. еще пробывал вот так

    
    type
      // Объявление записи клиента
      TStructureConfig = Record
        TopicName : TStringList;
    
    
        MQTT_Server: TStringList;
        MQTT_Port: TStringList;
        MQTT_ClientID: TStringList;
        MQTT_User: TStringList;
        MQTT_Password : TStringList;
    
    
        MYSQL_Server  : TStringList;
        MYSQL_Port  : TStringList;
        MYSQL_DataBase  : TStringList;
        MYSQL_TableName  : TStringList;
        MYSQL_TableRowName  : TStringList;
        MYSQL_TableRowCount  : TStringList;
        MYSQL_TableWriteTime  : TStringList;
        MYSQL_HTTP_API  : TStringList;
      end;
    

     

         Config:TStructureConfig;

     

    килент

    form2.IdTCPClient1.Host:=form2.Edit1.Text;
    form2.IdTCPClient1.Port:=strtoint(form2.Edit2.Text);
    form2.IdTCPClient1.Connect;
    
    form2.IdTCPClient1.ConnectTimeout:=5000;
    //form2.IdTCPClient1.Socket.WriteLnRFC(,en);
    
    Buf := RawToBytes(form1.Config, sizeOf(form1.Config));
    form2.IdTCPClient1.IOHandler.Write(Buf);

     

    сервер

    form1.Config.TopicName.Clear;
    form1.Config.MYSQL_Server.Clear;
    form1.Config.MYSQL_Port.Clear;
    form1.Config.MYSQL_DataBase.Clear;
    form1.Config.MYSQL_TableName.Clear;
    form1.Config.MYSQL_TableRowName.Clear;
    form1.Config.MYSQL_TableRowCount.Clear;
    form1.Config.MYSQL_TableWriteTime.Clear;
    form1.Config.MYSQL_HTTP_API.Clear;
    
    
    en:=IndyTextEncoding(IdTextEncodingType.encUTF8);
    // strText:=AContext.Connection.Socket.ReadLnRFC(b1,en);
     AContext.Connection.IOHandler.ReadBytes(buf,sizeof(buf),false);
      BytesToRaw(buf, form1.Config, sizeof(form1.Config));

     

  13. Отправляю через idtcpclient текст вида "текстовая строка1"+chr(9)+"значение текстовой строки". на выходе получаю "текстовая строка1\t1значение текстовой строки". каким образом получить со стороны сервера аналогичную строку. дело в том что комбинации у меня встречаются такие же в самом тексте  (meteo\temp например) и я не смогу понять что мне нужно \t заменить на chr(9)

    \t Перемещает позицию печати к следующей позиции горизонтальной табуляции.

    клиент

    en:=IndyTextEncoding(IdTextEncodingType.encUTF8);
    
    try
    form2.IdTCPClient1.Host:=form2.Edit1.Text;
    form2.IdTCPClient1.Port:=strtoint(form2.Edit2.Text);
    form2.IdTCPClient1.Connect;
    
    form2.IdTCPClient1.ConnectTimeout:=5000;
    form2.IdTCPClient1.Socket.WriteLn(st.Text,en);
    
    form2.IdTCPClient1.Disconnect;

     

    сервер

    en:=IndyTextEncoding(IdTextEncodingType.encUTF8);
     strText:=AContext.Connection.Socket.ReadLn(b1,en);
    

     

  14. Добрый день.

    Под Windows  этот же код  нормально работает. под Android - нет. когда клиентом пытаюсь подключиться то получаю 10061 ошибку сокета. 

    и ошибок приложение под андройд не выдает. пытаюсь создать компонент и получить текст по TCP
     

    unit Unit1;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, IdContext,
      IdBaseComponent, IdComponent, IdCustomTCPServer, IdTCPServer,
      FMX.Controls.Presentation, FMX.StdCtrls,IDGlobal, FMX.ScrollBox, FMX.Memo;
    
    
    type
      // Объявление записи клиента
      TStructureConfig = Record
        TopicName : TStringList;
        MYSQL_Server  : TStringList;
        MYSQL_Port  : TStringList;
        MYSQL_DataBase  : TStringList;
        MYSQL_TableName  : TStringList;
        MYSQL_TableRowName  : TStringList;
        MYSQL_TableRowCount  : TStringList;
        MYSQL_TableWriteTime  : TStringList;
        MYSQL_HTTP_API  : TStringList;
      end;
    
    
    
    type
      TForm1 = class(TForm)
    
     procedure FormCreate(Sender: TObject);
    
    procedure TCPServerOnExecute(AContext: TIdContext);
    
      private
        { Private declarations }
      public
        { Public declarations }
         Config:TStructureConfig;
    
       IdTCPServer1:TIdTCPServer;
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.fmx}
    
    
    
    
    procedure TForm1.FormCreate(Sender: TObject);
    
    begin
    
    form1.Config.TopicName:=TstringList.Create;
    form1.Config.MYSQL_Server:=TstringList.Create;
    form1.Config.MYSQL_Port:=TstringList.Create;
    form1.Config.MYSQL_DataBase:=TstringList.Create;
    form1.Config.MYSQL_TableName:=TstringList.Create;
    form1.Config.MYSQL_TableRowName:=TstringList.Create;
    form1.Config.MYSQL_TableRowCount:=TstringList.Create;
    form1.Config.MYSQL_TableWriteTime:=TstringList.Create;
    form1.Config.MYSQL_HTTP_API:=TstringList.Create;
    
    
    IdTCPServer1:=TIdTCPServer.Create(nil);
    IdTCPServer1.OnExecute:=form1.TCPServerOnExecute;
    //IdTCPServer1.DefaultPort:=5000;
    IdTCPServer1.Bindings.Clear;
    idTCPserver1.Bindings.Add.Port:=5000;
    idTCPserver1.Bindings.Add.IP:='0.0.0.0';
    
    
    IdTCPServer1.Active:=true;
    
    end;
    
    
    
    procedure TForm1.TCPServerOnExecute(AContext: TIdContext);
    var
    tmp,strText: String;
    en:IIDTextEncoding;
    h:integer;
    st:TstringList;
    begin
    
    try
    
    en:=IndyTextEncoding(IdTextEncodingType.encUTF8);
     strText:=AContext.Connection.Socket.ReadLn(en);
    strText  := StringReplace(strText, chr(12),chr(13)+chr(10),[rfReplaceAll, rfIgnoreCase]);
    
    
    st:=TstringList.Create;
    st.Text:=strText;
    form1.Config.TopicName.Clear;
    form1.Config.MYSQL_Server.Clear;
    form1.Config.MYSQL_Port.Clear;
    form1.Config.MYSQL_DataBase.Clear;
    form1.Config.MYSQL_TableName.Clear;
    form1.Config.MYSQL_TableRowName.Clear;
    form1.Config.MYSQL_TableRowCount.Clear;
    form1.Config.MYSQL_TableWriteTime.Clear;
    form1.Config.MYSQL_HTTP_API.Clear;
    
    
    
    h:=0;
    while h<=st.Count-1 do begin
    
    
    
    
    tmp:=st.Strings[h];
    delete(tmp,pos(chr(9),tmp),length(tmp));
    form1.Config.TopicName.Add(tmp);
    
    
    
    tmp:=st.Strings[h];
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,pos(chr(9),tmp),length(tmp));
    form1.Config.MYSQL_Server.Add(tmp);
    
    
    tmp:=st.Strings[h];
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,pos(chr(9),tmp),length(tmp));
    form1.Config.MYSQL_Port.Add(tmp);
    
    
    tmp:=st.Strings[h];
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,pos(chr(9),tmp),length(tmp));
    form1.Config.MYSQL_DataBase.Add(tmp);
    
    
    tmp:=st.Strings[h];
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,pos(chr(9),tmp),length(tmp));
    form1.Config.MYSQL_TableName.Add(tmp);
    
    
    tmp:=st.Strings[h];
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,pos(chr(9),tmp),length(tmp));
    form1.Config.MYSQL_TableRowName.Add(tmp);
    
    
    tmp:=st.Strings[h];
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,pos(chr(9),tmp),length(tmp));
    form1.Config.MYSQL_TableRowCount.Add(tmp);
    
    
    
    tmp:=st.Strings[h];
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,pos(chr(9),tmp),length(tmp));
    form1.Config.MYSQL_TableWriteTime.Add(tmp);
    
    
    
    tmp:=st.Strings[h];
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,1,pos(chr(9),tmp));
    delete(tmp,pos(chr(9),tmp),length(tmp));
    form1.Config.MYSQL_HTTP_API.Add(tmp);
    
    inc(h);
    end;
    
    
    
    
    
    except
    end;
    
    
    try
    st.Free;
    except
    end;
    
    
    end;
    
    end.

     

  15. на сколько я понял у моей рабочей области (реальный компонент Panel4) установлено событие MyResize и оно вызывается раньше чем Form.create где прописано что объект нужно создать (сама ошибка возникала в setWidhtHight)

×
×
  • Создать...