michelesalvador / familygem Goto Github PK
View Code? Open in Web Editor NEWAndroid app for genealogical trees
Home Page: https://www.familygem.app
License: GNU General Public License v3.0
Android app for genealogical trees
Home Page: https://www.familygem.app
License: GNU General Public License v3.0
If a person has any media attached, opening it causes allocation of GFX memory buffers far exceeding the size of the screen.
Cell phones rarely have that much RAM, and buffer allocation fail causes the app to crash.
Repro:
Crash logcat
:
10-27 21:54:44.840 17234 17248 E OpenGLRenderer: GL error: Out of memory!
10-27 21:54:44.840 17234 17248 F OpenGLRenderer: Could not allocate texture for layer (fbo=1 7138x5648)
10-27 21:54:44.840 17234 17248 F libc : Fatal signal 6 (SIGABRT), code -6 in tid 17248 (RenderThread)
10-27 21:54:44.910 554 554 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
10-27 21:54:44.910 554 554 F DEBUG : Build fingerprint: 'samsung/trltexx/trlte:6.0.1/MMB29M/N910FXXS1DQA1:user/release-keys'
10-27 21:54:44.910 554 554 F DEBUG : Revision: '0'
10-27 21:54:44.910 554 554 F DEBUG : ABI: 'arm'
10-27 21:54:44.910 554 554 F DEBUG : pid: 17234, tid: 17248, name: RenderThread >>> app.familygem <<<
10-27 21:54:44.910 554 554 F DEBUG : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
10-27 21:54:44.940 554 554 F DEBUG : Abort message: 'Could not allocate texture for layer (fbo=1 7138x5648)'
10-27 21:54:44.940 554 554 F DEBUG : r0 00000000 r1 00004360 r2 00000006 r3 ae1fc978
10-27 21:54:44.940 554 554 F DEBUG : r4 ae1fc980 r5 ae1fc930 r6 00000019 r7 0000010c
10-27 21:54:44.940 554 554 F DEBUG : r8 00000001 r9 00000000 sl b6da3ec0 fp 0000170a
10-27 21:54:44.940 554 554 F DEBUG : ip 00000006 sp ae1fbfe0 lr b6d68c01 pc b6d6aff0 cpsr 400f0010
10-27 21:54:44.960 554 554 F DEBUG :
10-27 21:54:44.960 554 554 F DEBUG : backtrace:
10-27 21:54:44.960 554 554 F DEBUG : #00 pc 00041ff0 /system/lib/libc.so (tgkill+12)
10-27 21:54:44.960 554 554 F DEBUG : #01 pc 0003fbfd /system/lib/libc.so (pthread_kill+32)
10-27 21:54:44.960 554 554 F DEBUG : #02 pc 0001c397 /system/lib/libc.so (raise+10)
10-27 21:54:44.960 554 554 F DEBUG : #03 pc 00019615 /system/lib/libc.so (__libc_android_abort+34)
10-27 21:54:44.960 554 554 F DEBUG : #04 pc 00017568 /system/lib/libc.so (abort+4)
10-27 21:54:44.960 554 554 F DEBUG : #05 pc 0000841f /system/lib/libcutils.so (__android_log_assert+86)
10-27 21:54:44.960 554 554 F DEBUG : #06 pc 0003eb9b /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #07 pc 00056af1 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #08 pc 00056c2f /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #09 pc 0005702d /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #10 pc 00056c27 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #11 pc 0005702d /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #12 pc 00056c27 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #13 pc 0005702d /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #14 pc 00056c27 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #15 pc 0005702d /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #16 pc 00056c27 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #17 pc 0005702d /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #18 pc 00056c27 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #19 pc 0005702d /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #20 pc 00056c27 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #21 pc 0005702d /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #22 pc 00056c27 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #23 pc 0005702d /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #24 pc 00056c27 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #25 pc 0005702d /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #26 pc 00056c27 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #27 pc 0005702d /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #28 pc 00056c27 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #29 pc 0005702d /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #30 pc 00056c27 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #31 pc 00056f1d /system/lib/libhwui.so (_ZN7android10uirenderer10RenderNode11prepareTreeERNS0_8TreeInfoE+60)
10-27 21:54:44.960 554 554 F DEBUG : #32 pc 00084101 /system/lib/libandroid_runtime.so
10-27 21:54:44.960 554 554 F DEBUG : #33 pc 0001dee9 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #34 pc 0001eea1 /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #35 pc 0001efcb /system/lib/libhwui.so
10-27 21:54:44.960 554 554 F DEBUG : #36 pc 00022271 /system/lib/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+80)
10-27 21:54:44.960 554 554 F DEBUG : #37 pc 00010075 /system/lib/libutils.so (_ZN7android6Thread11_threadLoopEPv+112)
10-27 21:54:44.960 554 554 F DEBUG : #38 pc 00062f93 /system/lib/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+70)
10-27 21:54:44.960 554 554 F DEBUG : #39 pc 0003f4ff /system/lib/libc.so (_ZL15__pthread_startPv+30)
10-27 21:54:44.960 554 554 F DEBUG : #40 pc 00019c97 /system/lib/libc.so (__start_thread+6)
10-27 21:54:45.570 2052 17746 W ActivityManager: Force finishing activity app.familygem/.Principal
10-27 21:54:45.580 2052 17746 D InputDispatcher: Focused application set to: xxxx
10-27 21:54:45.580 554 554 F DEBUG :
10-27 21:54:45.580 554 554 F DEBUG : Tombstone written to: /data/tombstones/tombstone_04
10-27 21:54:45.580 554 554 E : ro.product_ship = true
10-27 21:54:45.580 554 554 E : ro.debug_level = 0x4f4c
10-27 21:54:45.580 554 554 E : sys.mobilecare.preload = false
10-27 21:54:45.590 3970 3970 E audit : type=1701 msg=audit(1666900485.580:905): auid=4294967295 uid=10036 gid=10036 ses=4294967295 subj=u:r:untrusted_app:s0:c512,c768 pid=17248 comm="RenderThread" reason="memory violation" sig=6
10-27 21:54:45.590 2052 2504 I BootReceiver: Copying /data/tombstones/tombstone_04 to DropBox (SYSTEM_TOMBSTONE)
Hey there,
Recently downloaded the app from f-droid but have been unable to add any media. When I choose to add media, I'm presented with the choose app screen, I select my gallery app and then choose a photo. However when I get to the crop screen it gives me the empty media icon.
If I proceed then it adds the empty media icon but shows a link to the oroginal photo.
Running the latest version (0.7.16) and have clean installed it on my Galaxy S10+ running Android 10.
Let me know if I can help with any other info to help diagnose the issue.
Hi, @michelesalvador! Your application is very cool!
I added a translation into Russian https://hosted.weblate.org/projects/family-gem/app/ru/
Does the app automatically change the language or will you need to manually change it yourself? I didn't find a language switcher.
Greeting,
thank you for your efforts in creating the android Family Gem app. I really like it and intend to use it in my application.
Is it possible to merge two gedcom files, which are part of your application, into one file.
The scenario is as follows:
What is the purpose of this activity?
While importing, the GUI remains at main menu, and is not responding. If importing over 10000 records, Android actually proposes to close the "unresponsive app".
Even better would be if the app shows progress, either as a bar or a a stream of messages from the parser.
Import might be executed in another thread, for example (I don't know the structure of the app, so can't give better proposal).
I faced an issue while using the app on the Android 13 device (I believe it's because of the changes to the Granular Media Permissions).
When I try to use any functionality requiring external files (import an GEDCOM file, add media file), I see the toast message READ_EXTERNAL_STORAGE not granted.
I could create some fix for this, if you're interested.
When I'm trying to export a zip file it says "saxparseexception no good lines" how can this be corrected or how else can I share my tree with a relative?
Would you be interested in having the app translated into Kotlin? When using it for the Geni.com client, I will highly likely translate the code into Kotlin. Should I create pull requests?
I changed the name of an unmarried family member, and the app crashed. GEDCOM fragment available on request.
Resolved by the following patch, though I've no idea if getRef()==null
is a valid state.
diff --git a/app/src/main/java/app/familygem/IndividuoEventi.java b/app/src/main/java/app/familygem/IndividuoEventi.java
index 2fb932c..a451e93 100644
--- a/app/src/main/java/app/familygem/IndividuoEventi.java
+++ b/app/src/main/java/app/familygem/IndividuoEventi.java
@@ -187,7 +187,8 @@ public class IndividuoEventi extends Fragment {
if( U.sesso(tizio) == 2 ) { // La fa diventare wife
Iterator<SpouseRef> refiSposo = fam.getHusbandRefs().iterator();
while( refiSposo.hasNext() ) {
- if( refiSposo.next().getRef().equals(tizio.getId()) ) {
+ String sr = refiSposo.next().getRef();
+ if( sr != null && sr.equals(tizio.getId()) ) {
refiSposo.remove();
rimosso = true;
}
@@ -199,7 +200,8 @@ public class IndividuoEventi extends Fragment {
} else { // Per tutti gli altri sessi diventa husband
Iterator<SpouseRef> refiSposo = fam.getWifeRefs().iterator();
while( refiSposo.hasNext() ) {
- if( refiSposo.next().getRef().equals(tizio.getId()) ) {
+ String sr = refiSposo.next().getRef();
+ if( sr != null && sr.equals(tizio.getId()) ) {
refiSposo.remove();
rimosso = true;
}
Later: "Find errors" also crashes, for pretty much the same reason. Patch:
diff --git a/app/src/main/java/app/familygem/Alberi.java b/app/src/main/java/app/familygem/Alberi.java
index af6fe88..e787263 100644
--- a/app/src/main/java/app/familygem/Alberi.java
+++ b/app/src/main/java/app/familygem/Alberi.java
@@ -539,22 +539,26 @@ public class Alberi extends AppCompatActivity {
} else errori++;
} else {
num = 0;
- for( SpouseRef sr : fam.getHusbandRefs() )
- if( sr.getRef().equals( p.getId() ) ) {
+ for( SpouseRef sr : fam.getHusbandRefs() ) {
+ String srs = sr.getRef();
+ if (srs != null && srs.equals(p.getId())) {
num++;
- if( num > 1 && correggi ) {
- fam.getHusbandRefs().remove( sr );
+ if (num > 1 && correggi) {
+ fam.getHusbandRefs().remove(sr);
break;
}
}
- for( SpouseRef sr : fam.getWifeRefs() )
- if( sr.getRef().equals( p.getId() ) ) {
+ }
+ for( SpouseRef sr : fam.getWifeRefs() ) {
+ String srs = sr.getRef();
+ if (srs != null && srs.equals(p.getId())) {
num++;
- if( num > 1 && correggi ) {
- fam.getWifeRefs().remove( sr );
+ if (num > 1 && correggi) {
+ fam.getWifeRefs().remove(sr);
break;
}
}
+ }
if( num != 1 ) {
if( num == 0 && correggi ) {
p.getSpouseFamilyRefs().remove( sfr );
Can't find strings like:
Social security number, Marriage settlement, Marriage license, Marriage contract
to be translated.
https://hosted.weblate.org/projects/family-gem/app/nb_NO/
norsk finished
What is the difference between Magazzino and Archivo? Is Magazzino database and Archivo repository? I assume by repository you would mean the way it is used here.
Outside of laudable ethical merit, the unlicense and similar licenses become problematic in practice.
Unlicense is an additional license for the Weblate list of licenses. Weblate has a provision for adding all strings into a stringpool all the projects can use, but it would be much better if the license supported this directly.
Some jurisdictions actually allow public domain licensing. This means the protections (or restrictions if you will) of other licenses become incompatible. What is considered a work differs too, and with copyleft the whole thing has the potential to be tainted by licenses that half-way work. As long as it doesn't work fully, which is the case for anything that accepts changes from a lot of people, it isn't actually beneficial.
More about this liberapay/liberapay.com#564 (comment)
Since the maintainter is the only contributor so far, it is a perfect time to change the license to something else.
I like copyleft licenses because they protect forks of the project from being made closed source software, but if you just want something simple, MIT is good.
Edit: https://www.wipo.int/edocs/mdocs/mdocs/en/cdip_13/cdip_13_inf_6.docx is a good read, but it doesn't answer whether Italian law allows putting works into the public domain by voluntarily waiving the default copyright assigned upon creation. Moral rights in Italian copyright law are eternal, so I suppose not. Even so that would mean it can't be fully public domain until copyright expires.
From the WIPO document Given that both UK law and the relevant international treaties and European Directives1 are not qualified in any way to allow voluntary acts that reduce the term of protection, the conclusion must be that copyright must subsist for the entire term stipulated by law.2
For these and other reasons, Johnson argues that any dedication to the public domain is at most a copyright license and as such the author can revoke it. While there is no obligation for the author to enforce the copyright, the user of the work will rely on the good faith of the person making the dedication, and at most it can be seen “as a political statement”.3
I love the App and have been using it for about a year with no issues and have shared my Family tree many times with other people . A few days ago I was asked to share it again but when I press the Share button the spinning icon rotates for about 10 seconds and then stops and nothing happens .I have the FamilyGem App on 3 different Android devices and none of them work . My App version is 0.7.16 and I am wondering is this something to do with the latest update. Any help or fix would be appreciated. Many thanks ,Mick
It would really be fantastic if Family Gem could read and write on the same db with Gramps (an open source geneology software).
This way, through syncing (without converting) db files across android and PC, users could access their information on both platforms.
Hi, I love this app!
I was wondering: is any data uploaded to any server? If no, how does the 'share' option work? Is there any Privacy Policy I can read?
Possibility to change app language from settings menu.
There are some patterns the app uses that are contrary to what is recommended for modern Android apps in the official Android app architecture guidelines. Namely:
U.save()
) instead of repositoryAs well as general code smells:
getMethod("set" + name).invoke()
)@michelesalvador Would you be interested in pull requests to update these? Of course, I would be ensuring that functionality remains the same.
I found many dependency updates from https://github.com/hannesa2/FamilyGem . Should they be merged at some point?
Is it possible to optionally export to GEDCOM without images?
This should be enough to identify changes, for backporting info into another genealogy tool
(geneweb in my case); images are just a burden for this use case.
Thanks for this wonderful app btw!
https://hosted.weblate.org/projects/family-gem/app/es/
i finished the spain translation
This looks like a great open-source app! Would you mind bringing it to F-Droid – or at least making the APK available here at Github (attached to releases/
), so I could grab it for my repo? I know it's available at Uptodown – but an alternative couldn't hurt to spread it and make it available to a broader audience.
Thanks in advance for considering!
It seems that the only possible relationship between two partners is the marrige, assuming them inside the roles of husband and wife.
As many people know that's not always the case.
It would be nice to can choose other types of relationship.
I've imported a GedCom file and see Family Gem would also support media (photos etc) linked to records – that's really cool! Where would I need to store these so they get found and integrated?
I used a Windows software to create my family tree, and this one supports call names, i.e. mark the typically used first name when the person has more than one first name. It would be great to at least display call names from the gedcom file as underlined, and perhaps allow editing call names in a second step.
And Please suggest if we want to download this diagram as pdf?
Originally posted by @digitley in #3 (comment)
My phone is in dark mode, and when I export a diagram as a PDF file, the resulting file has a white background, but black boxes. Export should show a transparent or white background no matter of the phone settings.
(Thanks a lot for this app - the best I saw for Gedcom purposes!)
Hello,
I was wondering if there was a possibility to show just one tree when a brother and a sister has married ?
Because when I make it, it shows me one tree for the brother and one fort the sister either they have the same parents.
@IzzySoft rightly pointed out in another issue that:
...maybe those instructions should be placed where "Average Joe" can easily find them? Suggestions: Readme, or better: Wiki (you didn't yet start a wiki, but this seems a good time to do so – I'm pretty sure there will be more things to fill the pages, and the Readme then could just point there).
Another option for identifying changes within the app could be a menu item 'Changes' (like 'Sources', 'Notes', ...),
like 'Log' in the 'FamilyGTG' app.
Originally posted by @jer194 in #55 (comment)
Would you consider using English comments in the code? That would make it easier for possible contributors. I tried figuring things browsing the code, but with everything being in Italian, including comments, variable and method names, I was completely lost there. Nothing against Italian of course 😉 And before you ask: like @mondstern my native tongue is German, so it's not about "use my language please" but rather finding a "common denominator".
Originally posted by @IzzySoft in #8 (comment)
In Christianity there's Baptism, in Judaism there's Circumcision etc.
I think it's not reflected in the app, I've only seen Baptism IIRC.
If a child has multiple partners, only one partner will be displayed.
Shouldn't be all partner be listet, like the view, where the child is the root and every partner is listed?
An example on the Simpsons family tree:
If I select 'Orville Simpson' it shows for his child 'Grampa Simpson' 'Gaby' as partner and not 'Monat Simpson'.
Shouldn't there both be displayed?
If I select 'Grampa Simpson' direclty everything is displayed as expected.
If only one partner can be displayed, how will it be choosen?
Can I control the selection of the partner?
You frequently concatenate strings, which is infamously bad for performance. Use a string builder instead.
No F-Droid release of v0.8?
to bring up the translation issue again. there are several translation tools
i am on
weblate
crowdin
poeditor
transifex
I'm writing down my experiences here. But you have to decide what you want.
if you take value on opensource, you can use #weblate. otherwise i hang out a lot on #crowdin and #poeditor. poeditor is, that you can only translate if you know the link. in poeditor there is no overview of all created projects of all people. people who want to translate too, find your link only by chance. i think that's stupid.
at #transifex it can be that you are rejected or that it takes a long time until you are accepted.
...written by someone who likes to promote open source projects as acrylic paintings and then hold exhibitions and has been translating open source projects for years so that more people can use them.
I assume, the ID is somehow the backbone of the database and adding a new person obviously gives it a new upcounted ID, but I don't like it, when I sort the person list after ID and because (for example) I forgot my brother and added him later, he is far down in the list. So I want to asign him an ID near me and the others move up.
So is it possible to make the ID editable?
Hi,
UI is not displaying properly.
Screen 1:
You can see that when we select 'pqr bro 2' node.
Stemp 3:
When I Again select another node. result display as expected:
Zip file :
JSON Result :
New fam.zip
I want to ask from where this libs are coming from
https://github.com/michelesalvador/FamilyGem/tree/master/app/libs
Hi, I like your app very much and after some testing I have two questions/suggestions (second one in another issue):
Is it possible to change the layout of the tree? Or is it following some guidelines?
For example, moving persons around, switching places between siblings?
Because I am between my partner and the sister. Looks kind of weird to me.
Hi Michele
I am having build issues with current Studio version (3.6.1).
I get the attached errors.
Is there a specific version of Studio required?
Thanks in advance
Dave
StudioBuildErrors.txt
Hi Michele,
While building this app from Android, I am getting the below error regarding the missing file - chiavi.properties.
Can you please me to get the whole solution working ? Highly Appreciated....for help and sharing this amazing application with us.
Caused by: java.io.FileNotFoundException: /Users/akshayshaha/FamilyGem/chiavi.properties (No such file or directory) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(FileInputStream.java:195) at java.io.FileInputStream.<init>(FileInputStream.java:138) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:238) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:250) at build_917qyoqusbfw7amar4ck1tg47.run(/Users/akshayshaha/FamilyGem/app/build.gradle:6) at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90) ... 106 more
Hi,
the female relatives should have a field for their maiden names, aka her birth names....
Thanks a lot for making this app. 👍
Can you please provide your Email.
Highly Appreciated
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.