Selfmade gauges on Android?

Help with Air Manager Android version

Moderators: russ, Ralph

Message
Author
SimPassion
Posts: 5336
Joined: Thu Jul 27, 2017 12:22 am

Re: Selfmade gauges on Android?

#41 Post by SimPassion »

Ralph wrote: Wed Jan 18, 2023 12:08 pm That makes it even more complex I think :)
Air Player can work, but we have to think good about how the whole ecosystem is going to work. Probably somewhere in the future...
In any case it was only suggestion which was intended to help going ahead. I can't figure out why and how we're still trying to build instruments for which we don't know and don't see how will be the result on blind devices like iPad and Android, which eventually is worse process ever for years, all other area get their interest in the AM and AP world, however the iPad and Android part, made all of us put on the forums a whole bunch of assumption and time investment in troubleshooting with final users, on customers dev time, but not only, this also have been the case for SI support ...

SimPassion
Posts: 5336
Joined: Thu Jul 27, 2017 12:22 am

Re: Selfmade gauges on Android?

#42 Post by SimPassion »

Hi @Ralph, here a sample of kind of issue we are unable to check or fix on Android, which was reported by @cyberguerro, using Android 5.1.2 devices and same bug on his 3 identical devices
I should specify I don't encounter this bug on AM Desktop as shown in bottom screenshots and I don't have any Android device at home to check

There's overlapping text, where it shouldn't occurs on Android devices (again no issue on AM under windows), with Z_2D_XP MCDU 1.2.3 :
See there the "/" (slash char) overlapping the "FL" text info ("Flight Level"), however this is not the only one, I've seen plenty of similar issue from @cyberguerro pictures :

IMG_2147.JPEG
IMG_2147.JPEG (33.22 KiB) Viewed 3451 times

Could you do on your own, the checking we are unable to perform and confirm please, if the issue occurs on your Android device ?
Here's a sample without issue on AM Desktop :

image.png
image.png
 

User avatar
Ralph
Posts: 7878
Joined: Tue Oct 27, 2015 7:02 pm
Location: De Steeg
Contact:

Re: Selfmade gauges on Android?

#43 Post by Ralph »

It looks like these dots screw up the outlining, by pushing everything to the right. We couldn't figure out from the script where these dots come from, maybe you have an idea? Or maybe you can tell us which text item to look at?
FMCdots.jpg
FMCdots.jpg (63.53 KiB) Viewed 3423 times

SimPassion
Posts: 5336
Joined: Thu Jul 27, 2017 12:22 am

Re: Selfmade gauges on Android?

#44 Post by SimPassion »

Ralph wrote: Thu Jan 19, 2023 3:54 pm It looks like these dots screw up the outlining, by pushing everything to the right. .../...
Absolutely not
".692" is a standard notation for MACH speed (set internally by the ZiboMod fmc)

Hope you "heard" the issue don't come on Windows AM Desktop @Ralph
I have other awaiting screenshots where there's no "." dot involved. Just only think overlapping, which occurs in a few different circumstances than this one, that's it.

[EDIT] Here's a new sample for AM Desktop in which we don't see any issue :

image.png
 

User avatar
Corjan
Posts: 2936
Joined: Thu Nov 19, 2015 9:04 am

Re: Selfmade gauges on Android?

#45 Post by Corjan »

Hi,


On what line in your lua code in that line generated?


Corjan

SimPassion
Posts: 5336
Joined: Thu Jul 27, 2017 12:22 am

Re: Selfmade gauges on Android?

#46 Post by SimPassion »

Corjan wrote: Fri Jan 20, 2023 4:05 pm Hi,

On what line in your lua code in that line generated?

Corjan
The lines involved are the ones with "txt_set", so for the CDU1 (CAPT side), lines #2245 to #2446 :

Code: Select all

------------------------------------------------------
--						CDU 1
------------------------------------------------------

-- FILL MCDU Displays Lines

function data1_0_L(line_0_L) line_0_L = string.upper(line_0_L) txt_set(txt1_0L, line_0_L) end
function data1_0_M(line_0_M) line_0_M = string.upper(line_0_M) txt_set(txt1_0M, line_0_M) end
function data1_0_C(line_0_C) line_0_C = string.upper(line_0_C) txt_set(txt1_0C, line_0_C) end

function data1_0_I(line_0_I)
	line_0_I = string.upper(line_0_I)
	str_len = string.len(line_0_I)
	if line_0_I ~= " " and line_0_I ~= I_line_fill and line_0_I ~= string.rep(" ",str_len) then
		for i = 1,str_len,1
		do
			char_check = str_snglextract(line_0_I,i)
			if char_check ~= " " then
				local f_exec_bg = bg1_0I_inv[i]
				if (f_exec_bg) then
					f_exec_bg()
				else
				end
			end
		end
	else
		bg1_0I_std()
	end
	txt_set(txt1_0I, line_0_I)
end
function data1_0_S(line_0_S) line_0_S = string.upper(line_0_S) txt_set(txt1_0S, line_0_S) end
function data1_1_G(line_1_G) line_1_G = string.upper(line_1_G) txt_set(txt1_1G, line_1_G) end
function data1_1_I(line_1_I)
	line_1_I = string.upper(line_1_I)
	str_len = string.len(line_1_I)
	if line_1_I ~= " " and line_1_I ~= I_line_fill and line_1_I ~= string.rep(" ",str_len) then
		for i = 1,str_len,1
		do
			char_check = str_snglextract(line_1_I,i)
			if char_check ~= " " then
				local f_exec_bg = bg1_1I_inv[i]
				if (f_exec_bg) then
					f_exec_bg()
				else
				end
			end
		end
	else
		bg1_1I_std()
	end
	txt_set(txt1_1I, line_1_I)
end
function data1_1_L(line_1_L) line_1_L = string.upper(line_1_L) txt_set(txt1_1L, line_1_L) end
function data1_1_M(line_1_M) line_1_M = string.upper(line_1_M) txt_set(txt1_1M, line_1_M) end
function data1_1_S(line_1_S) line_1_S = string.upper(line_1_S) txt_set(txt1_1S, line_1_S) end
function data1_1_X(line_1_X) line_1_X = string.upper(line_1_X) txt_set(txt1_1X, line_1_X) end
function data1_2_G(line_2_G) line_2_G = string.upper(line_2_G) txt_set(txt1_2G, line_2_G) end
function data1_2_I(line_2_I)
	line_2_I = string.upper(line_2_I)
	str_len = string.len(line_2_I)
	if line_2_I ~= " " and line_2_I ~= I_line_fill and line_2_I ~= string.rep(" ",str_len) then
		for i = 1,str_len,1
		do
			char_check = str_snglextract(line_2_I,i)
			if char_check ~= " " then
				local f_exec_bg = bg1_2I_inv[i]
				if (f_exec_bg) then
					f_exec_bg()
				else
				end
			end
		end
	else
		bg1_2I_std()
	end
	txt_set(txt1_2I, line_2_I)
end
function data1_2_L(line_2_L) line_2_L = string.upper(line_2_L) txt_set(txt1_2L, line_2_L) end
function data1_2_M(line_2_M) line_2_M = string.upper(line_2_M) txt_set(txt1_2M, line_2_M) end
function data1_2_S(line_2_S) line_2_S = string.upper(line_2_S) txt_set(txt1_2S, line_2_S) end
function data1_2_X(line_2_X) line_2_X = string.upper(line_2_X) txt_set(txt1_2X, line_2_X) end
function data1_3_G(line_3_G) line_3_G = string.upper(line_3_G) txt_set(txt1_3G, line_3_G) end
function data1_3_I(line_3_I)
	line_3_I = string.upper(line_3_I)
	str_len = string.len(line_3_I)
	if line_3_I ~= " " and line_3_I ~= I_line_fill and line_3_I ~= string.rep(" ",str_len) then
		for i = 1,str_len,1
		do
			char_check = str_snglextract(line_3_I,i)
			if char_check ~= " " then
				local f_exec_bg = bg1_3I_inv[i]
				if (f_exec_bg) then
					f_exec_bg()
				else
				end
			end
		end
	else
		bg1_3I_std()
	end
	txt_set(txt1_3I, line_3_I)
end
function data1_3_L(line_3_L) line_3_L = string.upper(line_3_L) txt_set(txt1_3L, line_3_L) end
function data1_3_M(line_3_M) line_3_M = string.upper(line_3_M) txt_set(txt1_3M, line_3_M) end
function data1_3_S(line_3_S) line_3_S = string.upper(line_3_S) txt_set(txt1_3S, line_3_S) end
function data1_3_X(line_3_X) line_3_X = string.upper(line_3_X) txt_set(txt1_3X, line_3_X) end
function data1_4_G(line_4_G) line_4_G = string.upper(line_4_G) txt_set(txt1_4G, line_4_G) end
function data1_4_I(line_4_I)
	line_4_I = string.upper(line_4_I)
	str_len = string.len(line_4_I)
	if line_4_I ~= " " and line_4_I ~= I_line_fill and line_4_I ~= string.rep(" ",str_len) then
		for i = 1,str_len,1
		do
			char_check = str_snglextract(line_4_I,i)
			if char_check ~= " " then
				local f_exec_bg = bg1_4I_inv[i]
				if (f_exec_bg) then
					f_exec_bg()
				else
				end
			end
		end
	else
		bg1_4I_std()
	end
	txt_set(txt1_4I, line_4_I)
end
function data1_4_L(line_4_L) if line_4_L == "      ***`**.* ****`**.*" then line_4_L = "   ***`**.* ****`**.*" end line_4_L = string.upper(line_4_L) txt_set(txt1_4L, line_4_L) end
function data1_4_M(line_4_M) line_4_M = string.upper(line_4_M) txt_set(txt1_4M, line_4_M) end
function data1_4_S(line_4_S) line_4_S = string.upper(line_4_S) txt_set(txt1_4S, line_4_S) end
function data1_4_X(line_4_X) line_4_X = string.upper(line_4_X) txt_set(txt1_4X, line_4_X) end
function data1_5_G(line_5_G) line_5_G = string.upper(line_5_G) txt_set(txt1_5G, line_5_G) end
function data1_5_I(line_5_I)
	line_5_I = string.upper(line_5_I)
	str_len = string.len(line_5_I)
	if line_5_I ~= " " and line_5_I ~= I_line_fill and line_5_I ~= string.rep(" ",str_len) then
		for i = 1,str_len,1
		do
			char_check = str_snglextract(line_5_I,i)
			if char_check ~= " " then
				local f_exec_bg = bg1_5I_inv[i]
				if (f_exec_bg) then
					f_exec_bg()
				else
				end
			end
		end
	else
		bg1_5I_std()
	end
	txt_set(txt1_5I, line_5_I)
end
function data1_5_L(line_5_L) line_5_L = string.upper(line_5_L) txt_set(txt1_5L, line_5_L) end
function data1_5_M(line_5_M) line_5_M = string.upper(line_5_M) txt_set(txt1_5M, line_5_M) end
function data1_5_S(line_5_S) line_5_S = string.upper(line_5_S) txt_set(txt1_5S, line_5_S) end
function data1_5_X(line_5_X) line_5_X = string.upper(line_5_X) txt_set(txt1_5X, line_5_X) end
function data1_6_G(line_6_G) line_6_G = string.upper(line_6_G) txt_set(txt1_6G, line_6_G) end
function data1_6_I(line_6_I)
	line_6_I = string.upper(line_6_I)
	str_len = string.len(line_6_I)
	if line_6_I ~= " " and line_6_I ~= I_line_fill and line_6_I ~= string.rep(" ",str_len) then
		for i = 1,str_len,1
		do
			char_check = str_snglextract(line_6_I,i)
			if char_check ~= " " then
				local f_exec_bg = bg1_6I_inv[i]
				if (f_exec_bg) then
					f_exec_bg()
				else
				end
			end
		end
	else
		bg1_6I_std()
	end
	txt_set(txt1_6I, line_6_I)
end
function data1_6_L(line_6_L) line_6_L = string.upper(line_6_L) txt_set(txt1_6L, line_6_L) end
function data1_6_M(line_6_M) line_6_M = string.upper(line_6_M) txt_set(txt1_6M, line_6_M) end
function data1_6_S(line_6_S) line_6_S = string.upper(line_6_S) txt_set(txt1_6S, line_6_S) visible(txt1_6S,bln_side1) end
function data1_6_X(line_6_X) line_6_X = string.upper(line_6_X) txt_set(txt1_6X, line_6_X) end
function Line_entry1(Line_entry) Line_entry = string.upper(Line_entry) txt_set(txt1_sh, Line_entry) end
function Line_entry1_I(line_entry_I)
	line_entry_I = string.upper(line_entry_I)
	if line_entry_I ~= "" then
		str_len = string.len(line_entry_I)
		for i = 1,str_len,1
		do
			char_check = str_snglextract(line_entry_I,i)
			if char_check ~= " " then
				local f_exec_bg = bg1_sh_I_inv[i]
				if (f_exec_bg) then
					f_exec_bg()
				else
				end
			end
		end
	else
		bg1_sh_I_std()
	end
	txt_set(txt1_sh_I, line_entry_I)
end
My guess is, at some point after we have submitted a new instrument release, the old instrument is not properly deleted on SI side, before putting the new updated instrument in the same location on Windows PC, so this imply to generate the well-known issue, where the wrong unrelated font filename characters case versus in-script mentioned named (lowercase/uppercase)
I would point out if at some point in the process, SI is attempting to overwrite previous instrument with latest updated, rather than deleting at first the previous, on Windows plateform, we will continuously encounter this well-known issue ... !
 

User avatar
Ralph
Posts: 7878
Joined: Tue Oct 27, 2015 7:02 pm
Location: De Steeg
Contact:

Re: Selfmade gauges on Android?

#47 Post by Ralph »

As mentioned before. If you want a file name upper/lower case change, then you either have to change the name of the file, or explicitly mention this when submitting. But I don't think that this is the issue here.

SimPassion
Posts: 5336
Joined: Thu Jul 27, 2017 12:22 am

Re: Selfmade gauges on Android?

#48 Post by SimPassion »

Ralph wrote: Fri Jan 20, 2023 7:51 pm As mentioned before. If you want a file name upper/lower case change, then you either have to change the name of the file, or explicitly mention this when submitting. But I don't think that this is the issue here.
The change was made a long time ago in sync with sharing with Tony together

Now :
  • It works properly on AM Desktop
  • It doesn't works properly on AM Android
So, what do you think it could be on Android side, if not the well-know lowercase vs uppercase issue ?
Again we don't have access to any proper way to check in Android before submitting, just as a reminder and pointing out this worrying situation ...

In any case, thanks @Ralph and @Corjan having taken time to investigate until yet.

User avatar
Sling
Posts: 5237
Joined: Mon Sep 11, 2017 2:37 pm
Contact:

Re: Selfmade gauges on Android?

#49 Post by Sling »

Just a small thing about the different platform support. Ideally every instrument would work in an identical way on every platform and I think SI are striving to achieve this but occasionally some inconsistencies occur that make little things like this happen. If we do not have the means and confidence to verify the correct operation on some platforms we always have the option to not tick those platforms in the instrument info.
That said, In this case I think it’s a good opportunity to figure out what it is that Android doesn’t like and either make the community aware of how to avoid it or make a change in Air Manager itself that fixes it.
I believe this is what is trying to be understood here.

User avatar
Ralph
Posts: 7878
Joined: Tue Oct 27, 2015 7:02 pm
Location: De Steeg
Contact:

Re: Selfmade gauges on Android?

#50 Post by Ralph »

Correct. It should behave the same, if not then we have to fix that. So there's no need to test on tablet versions.

Post Reply