Jump to content

Yaron

Members
  • Content Count

    275
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Yaron


  1. I am trying to write a very basic Android app that will receive a share from the YouTube app and show the data in a memo.

     

    I tried basing it on Embarcadero's Receive Intent sample:

    https://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RADStudio_Seattle/Object Pascal/Mobile Snippets/AndroidIntents/ReceiveIntent/

     

    The only thing I did to the sample was to change a line in AndroidManifest.template.xml from:

    Quote

    <data android:mimeType="text/pas" />

     

    To:

    Quote

    <data android:mimeType="text/plain" />

     

    However, I'm encountering two issues:

     

    1. After installing the app on an Android device, it isn't listed in the app list.  I can see it on the "application manager" settings page, but not in the main app list.

    2. YouTube is not listing the app as an option on the share dialog.

     

    How can I resolve these 2 issues?


  2. I actually posted this question on stack overflow a while back, got what I thought was a working answer but over time realized that on different devices, waiting for "onIdle" doesn't actually work.

     

    Here's the background, my app on first-load does some time-consuming (3-8 sec) pre-calculations so subsequent runs would be much faster.  During this processing period, I want to show a "loading %" track-bar.

     

    However, for the life of me, I haven't been able to find the exact moment my form is visible and responsive for action.  I tried different approaches:

    1. waiting for "OnActivate" event.

    2. Implementing IFMXApplicationEventService.SetApplicationEventHandler and waiting for "TApplicationEvent.BecameActive".

    3. Waiting for "TApplicationEvent.BecameActive" to trigger and then waiting for 3 "OnIdle" events to trigger (2 OnIdle events were not enough for my Galaxy Note 4 device).

     

    Only #3 sort of worked on most devices using Delphi 10.2.3, but then when I upgraded to Delphi 10.3.1 even that stopped working (my progress bar shows up but the screen stops updating, so the bar remains on 0% until the pre-calculation function completes, even when calling Application.ProcessMessages after each update and no other code running in the background).

     

    Is there a better solution to know the exact moment my app will start responding to screen updates on launch under Android?

     


  3. @Dave Nottage

    I can't really debug since I constantly suffer from the "Unable to start gdbserver on port '64311'. Port is already in use.", so instead I've added many more debug output lines.

     

    I finally figured out what was going on, I was creating my bitmap inside a function that was triggered by a timage-clicked, that function then called the permission request with an anonymous function.

    However, once the anonymous function was triggered, the bitmap var was no longer valid.

    I fixed the issue by creating the bitmap within the anonymous function.

     


  4. I am trying to save an image to the photo gallery using Delphi 10.3 and Android 6+

     

    However, when the user accepts the access request prompt on the very first call, my entire app restarts all on it's own, is there any way to disable this behavior so my app doesn't restart?

     

     

    I implemented the code based on this blog post:

    http://blong.com/Articles/AndroidPermissions/DelphiAppPermissions.htm

     

    After calling (on form create):

      FPermission_READ_EXTERNAL_STORAGE  := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE);
      FPermission_WRITE_EXTERNAL_STORAGE := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE);
    

     

    I am calling this code to show the prompt and save the image:

          // Request permission
          PermissionsService.RequestPermissions([FPermission_WRITE_EXTERNAL_STORAGE, FPermission_READ_EXTERNAL_STORAGE],
            procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
            begin
              if (Length(AGrantResults) = 2) and (AGrantResults[0] = TPermissionStatus.Granted) and (AGrantResults[1] = TPermissionStatus.Granted) then
              Begin
                { Save file }
                BaseFolder := System.IOUtils.TPath.GetSharedPicturesPath;
                If DirectoryExists(BaseFolder) = True then
                Begin
                  PIKAFolder := BaseFolder+System.IOUtils.TPath.DirectorySeparatorChar+clientGameName;
                  If DirectoryExists(PIKAFolder) = False then ForceDirectories(PIKAFolder);
    
                  PIKAFile := PIKAFolder+System.IOUtils.TPath.DirectorySeparatorChar+clientGameName+'_'+ReplaceStr(ReplaceStr(DateTimeToStr(Now),':','.'),'/','.')+saveImageFileExt;
                  Try
                    MyImage.SaveToFile(PIKAFile);
                  Except
                    clientFadingMessage := strErrorSavingPicture;
                  End;
                  If FileExists(PIKAFile) = True then clientFadingMessage := strPictureSaved else If clientFadingMessage = '' then clientFadingMessage := strErrorSavingPicture2;
                End
                Else clientFadingMessage := strPictureFolderNotFound;
              End
                else
              begin
                clientFadingMessage := strErrorSavingPicture;
              end;
            end
          );

     


  5. On 2/4/2019 at 1:06 PM, Cristian Peța said:

    If adb connection is not working then installing a Log visualizer from the market is the easiest solution to see the log.

    Can you post a link to one, I tried a search on the google play store and it only came back with text viewers.

    On 2/5/2019 at 5:46 PM, John Kouraklis said:

    Have you tried a simple project that does nothing? 

    Yes, created a new multi-platform project, compiled & deployed it without any changes, installed the APK on Nox and it crashes with "Project1 keeps stopping" instantly when executed.


  6. On 2/1/2019 at 3:08 AM, John Kouraklis said:

    How did you manage to make Delphi recognise the emulator? I've got a similar situation and cant make it see the emulator. 

     

    And something else? Do you use any virtual machines or directly on the main PC?

     

    I am not trying to use NOX as the debugger, I'm trying to get it to run my compiled APKs simply by dragging the APK onto the NOX window which installs just fine.

    But as soon as I try to run any Delphi 10.3 app on NOX, it instantly closes with an error message that the app has closed.

     

    And I use it on my main PC, no virtual machines (other than NOX of course)

     


  7. It seems that Delphi 10.3 generated APKs are not compatible with the NOX emulator running Android 7.

     

    The moment I try running the APK, I get a message that the application closed.

     

    This happens with every APK I generate (e.g. https://github.com/bLightZP/ElegantCalculator).

    Trying to debug the issue, it seems that my first line of code is not even executed before the app closes.

     

    Any ideas?


  8. I want to port my app to iOS, but the up-front financial requirements seem to be quite high.

     

    After doing some research on the web, it seems it may there may be alternatives to purchasing an iMac computer (like running in a virtual machine instead of actual hardware).

     

    Does anyone have any experience with this?

    Can anyone recommend the cheapest iOS development route using Delphi 10.3?

     


  9. The reason I wrote that AdMob was the issue was that the game is running just fine up until the point an Ad shows (either a banner at the bottom or a fullscreen Interstitial ad) at which point UI updates stop functioning.

     

    However,

    My app design doesn't use a TButton or TMemo (it's only using TRectangle, TImage & TLabel), so it's possible that the issue is also triggered by other components.

     


  10. I used a slightly modified version of this sample code to show the JInterstitialAd (the only changes I made was to update the depreciated functions) :

    https://github.com/sadettinpolat/delphi/tree/master/interstitialAds

     

    In RGBquick the Interstitial ad is triggered when you open one of the leaderboard (the crown icons on the main screen).

    The TBannerAd component is always visible at the bottom.

     

    And remember, the issue is not particular to Interstitial ads, Delphi's (v10.3) bundled TBannerAd component freezes the entire UI. This only seems to affect Android versions earlier than v6 (no issues with v6).

     


  11. Are you experiencing this issue?

    Android apps compiled with Delphi 10.3 running on older Android versions(v5, v4.4), stop updating the UI when an AdMob banner appears (using standard TBannerAd component).

     

    The game I wrote is not frozen, I can hear menu action audio when I click known button positions and using the back button exits the game cleanly.

     

    If an interstitial ad is shown (using JInterstitialAd), after the ad is closed the game returns to a black screen (again, only the UI updates being frozen).

     

    I installed the game on several of these older devices through the google play store.

     

    If you would like to test it on your own devices, the name of the game is "RGBquick" (still in beta).


  12. I'm not sure you're correct.

     

    From this:

    https://developer.android.com/distribute/best-practices/develop/target-sdk

    Quote

    Configuring your app to target a recent API level ensures that users can benefit from these improvements, while still allowing it to run on older Android versions.

     

    I think by that they mean that the app is aware of API 26 and may have to specifically support API 26 functionality (like the new method to request user permissions), but that doesn't mean it can't support earlier versions of Android... am I missing something?


  13. After previously uploading a Delphi 10.2.3 to the google play store, I uploaded an APK compiled in Delphi 10.3.

    This triggered a warning message by the play store that some devices will no longer be supported by this build.

     

    My code hasn't changed... Does anyone know if this can be worked around so I can keep supporting these older devices?

     


  14. Has anyone else encountered this?

     

    Delphi 10.3:

    I have a project with specified splash images.

    I simply uncheck "include splash image" in the project's options and try to run the app under Android and I get an error about missing files/entries.

    If I check "include splash image" it all works fine, but I have no way of getting rid of the splash image.

     

     

×