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

estra

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

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

  • Посещение

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

    20

Сообщения, опубликованные estra

  1. Всем привет.
     
    Столкнулся с проблемкой. Есть структура с данными типа TBitmapData. Как из них получить изображение?
     

    var
      Bitmap: TBitmap;
      BitmapData, M: TBitmapData;
    begin
       ...
       Bitmap := TBitmap.Create;
       Bitmap.SetSize( Width, Height );
       if Bitmap.Map( TMapAccess.maRead, M ) then
       begin
          BitmapData := TBitmapData.Create( Width, Height, TPixelFormat.BGR_565 );
          BitmapData.Data := @ImageData[0];
          M.Copy( BitmapData );
          Bitmap.Unmap( M );
       end;
       Image1.Bitmap.Assign( Bitmap );
       ...
    end;
    

    В итоге никакого изображения не видно. Как из TBitmapData получить изображение?

  2. Есть предложение "не скупиться" и добавлять не по 1, а по несколько компонентов... А если конкретно, добавьте компоненты для работы с NFC и для определения уровня сигнала от BlueTooth устройства. Не помешал бы компонент для работы со сканером отпечатков пальцев и датчиком здоровья...

  3.  

    ..., естественно идёт речь про Android.

    А при чем тогда здесь ХЕ7?

    При том, что судя по вопросу, интересует как такую проверку сделать программно в своем приложении. Мне это тоже интересно, может кто нибудь ответить по существу вопроса?

  4. Примерно так
     

    uses
      System.IOUtils;
    
    var
      b: TBitmap;
    begin
       b.SaveToFile( TPath.GetPicturesPath + PathDelim + '1.bmp' );
    end;
    

    Правда не уверен на счет пути, может другой надо подставить (GetPublicPath, GetDocumentsPath). Поэкспериментируйте...

  5. нет не подходит , это только для windows

     

    Это кто же вам такую ерунду то сказал?

     

    6571719.jpg

     

    Почитайте "Delphi. Программирование для Windows, OS X, iOS и Android":

     

    6564551.jpg

     

    Глава 24. Мультиязычные проекты:

    • Компонент языковой поддержки TLang
    • Режим автоматического перевода
    • Перевод меню

    Ссылка 1Ссылка 2

  6. А как в Делфе она отображается?

    Нормально

    6596468.jpg

    Только вот как-то странно она себя ведет в палитре компонентов. Она типа отключена.(И в хинте пишет что поддержка только Вин32) Хотя кидаешь на форму и нормально. Возможно глюк какой-то.

    Посмотрите это

    http://fire-monkey.ru/topic/309-kak-ukazat-tcelevye-platformy-dlia-komponenta-n/

  7. К слову, не все приложения "замораживаются" на iOS, а именно - сервисы определения местоположения, воспроизведение музыки и VoIP-звонки. Так что если хотите, чтобы ваше приложение работало в фоне, научите его (приложение) например получать координаты местоположения.

     

    Кстати, все изменилось с iOS 7, подробнее тут.

  8. Есть проблема с OnReadRSSI. Есть такой код:
     

    unit Unit1;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
      System.Bluetooth, FMX.StdCtrls, System.Bluetooth.Components, FMX.ListBox;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        ComboBox: TComboBox;
        Label1: TLabel;
        Button2: TButton;
        Timer1: TTimer;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        FBluetoothManagerLE: TBluetoothLEManager;
    
        ADevice: TBluetoothLEDevice;
        AService: TBluetoothGattService;
    
        procedure DevicesDiscoveryLEEnd(const Sender: TObject; const ADevices: TBluetoothLEDeviceList);
        procedure GetCurrentDevice(var ADevice: TBluetoothLEDevice);
        procedure BluetoothLEReadRSSI(const Sender: TObject; ARssiValue: Integer;
          AGattStatus: TBluetoothGattStatus);
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.fmx}
    
    procedure TForm1.BluetoothLEReadRSSI(const Sender: TObject; ARssiValue: Integer;
      AGattStatus: TBluetoothGattStatus);
    begin
       Label1.Text := IntToStr( ARssiValue );
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      FBluetoothManagerLE := TBluetoothLEManager.Current;
      FBluetoothManagerLE.OnDiscoveryEnd := DevicesDiscoveryLEEnd;
      FBluetoothManagerLE.StartDiscovery( 2000 );
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
       if ComboBox.ItemIndex >= 0 then
       begin
          GetCurrentDevice(ADevice);
          if ADevice <> nil then
          begin
             ADevice.OnReadRSSI := BluetoothLEReadRSSI;
             ADevice.DiscoverServices;
             Timer1.Enabled := True;
          end;
       end;
    end;
    
    procedure TForm1.DevicesDiscoveryLEEnd(const Sender: TObject;
      const ADevices: TBluetoothLEDeviceList);
    var
      i: Integer;
    begin
       ComboBox.Items.Clear;
       for I := 0 to ADevices.Count - 1 do
          ComboBox.Items.Add(ADevices[i].DeviceName);
    end;
    
    procedure TForm1.GetCurrentDevice(var ADevice: TBluetoothLEDevice);
    var
      I: Integer;
    begin
      for I := 0 to FBluetoothManagerLE.LastDiscoveredDevices.Count - 1 do
      begin
        if FBluetoothManagerLE.LastDiscoveredDevices[I].DeviceName = ComboBox.Items[ComboBox.ItemIndex] then
          ADevice := FBluetoothManagerLE.LastDiscoveredDevices[I];
      end;
    end;
    
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
       ADevice.ReadRemoteRSSI;
    end;
    
    end.
    

    В таймере периодически вызывается ReadRemoteRSSI, после чего должно сработать событие BluetoothLEReadRSSI. Проблема в том, что событие вызывается лишь несколько раз после нажатия Button2. Такое ощущение, что есть какой то короткий промежуток времени (примерно 5 секунд), по истечении которого событие отваливается. Косвенно это подтверждает следующий эксперимент: ставим точку останова в событии таймера (Timer1Timer), после ее срабатывания ждем секунд 5, снимаем точку останова и продолжаем выполнение программы (F9), событие BluetoothLEReadRSSI не сработает ни разу.

     

    Собственно вопрос, почему так происходит и как заставить работать нормально?

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