mirror of
https://github.com/jfoucry/Pilldroid.git
synced 2024-09-19 18:54:18 +02:00
Compare commits
8 commits
d47a030f83
...
32119baf52
Author | SHA1 | Date | |
---|---|---|---|
|
32119baf52 | ||
|
e42a2965f9 | ||
|
1bda3a6a8f | ||
|
76409f1977 | ||
|
c51904f5c4 | ||
|
adb4e236b4 | ||
|
8a97311476 | ||
|
1293c425e8 |
7 changed files with 117 additions and 53 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -48,3 +48,5 @@ gen/
|
||||||
/android-signing-keystore.jks
|
/android-signing-keystore.jks
|
||||||
/secrets.properties
|
/secrets.properties
|
||||||
*.hprof
|
*.hprof
|
||||||
|
|
||||||
|
.zhistory
|
||||||
|
|
80
README.html
Normal file
80
README.html
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
<h1 id="pilldroid">Pilldroid</h1>
|
||||||
|
<blockquote>
|
||||||
|
<p>[!note] I apologize. For know, even string exist in English,
|
||||||
|
<em>Pilldroid</em> is a French only application. That because the global
|
||||||
|
drugs database contain only French drug’s nommage. If you can find a way
|
||||||
|
to provide another country global database,feel free to <a
|
||||||
|
href="mailto://pilldroid@foucry,net?Subject=%22Another%20database%22">contact
|
||||||
|
me</a></p>
|
||||||
|
<p>Pilldroid est une application de gestion de stock
|
||||||
|
<strong>théorique</strong> de médicament à destination des personnes
|
||||||
|
résidant en France.</p>
|
||||||
|
</blockquote>
|
||||||
|
<p><a href="https://f-droid.org/packages/net.foucry.pilldroid">
|
||||||
|
<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
|
||||||
|
alt="Get it on F-Droid"
|
||||||
|
height="80"> </a></p>
|
||||||
|
<h2 id="quest-ce-que-pilldroid">Qu’est-ce que Pilldroid ?</h2>
|
||||||
|
<p>Pilldroid est une applicaton de gestion de stock <em>théorique</em>
|
||||||
|
de médicaments, pour téléphone Android©.</p>
|
||||||
|
<h2 id="pourquoi-stock-théorique">Pourquoi « Stock théorique » ?</h2>
|
||||||
|
<p>Pilldroid ne sait pas (et n’a aucun moyen de savoir) si vous avez ou
|
||||||
|
non pris vos médicaments. Pilldroid effectue, simple calcul :
|
||||||
|
<code>stock connu - prise par jour</code>. Ce calcul est fait tous les
|
||||||
|
jours entre 11h et midi.</p>
|
||||||
|
<h2
|
||||||
|
id="de-quelles-autorisations-lapplication-pilldroid-a-t-elle-besoin">De
|
||||||
|
quelles autorisations l’application Pilldroid a-t-elle besoin ?</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Pilldroid a besoin de savoir que le téléphone a été redémarré pour
|
||||||
|
elle-même lancer son cycle de réveil journalier.</li>
|
||||||
|
<li>Pilldroid a besoin d’accéder à l’appareil photo de votre téléphone
|
||||||
|
pour scanner le code-barres des boîtes de médicaments.</li>
|
||||||
|
<li>Pilldroid a besoin de pouvoir vous envoyer des notifications.</li>
|
||||||
|
<li>Pilldroid a besoin de faire vibrer le téléphone pour les
|
||||||
|
notifications.</li>
|
||||||
|
</ul>
|
||||||
|
<h2
|
||||||
|
id="lapplication-pilldroid-embarque-t-elle-des-bibliothèques-tierce">L’application
|
||||||
|
Pilldroid embarque-t-elle des bibliothèques tierce ?</h2>
|
||||||
|
<p>Oui. Pour la lecture de code-barres, Pilldroid utilise le projet <a
|
||||||
|
href="https://github.com/journeyapps/zxing-android-embedded">zxing</a>
|
||||||
|
lui-même libre et ouvert.</p>
|
||||||
|
<h2 id="lapplication-pilldroid-contient-elle-des-pisteurs">L’application
|
||||||
|
Pilldroid contient-elle des pisteurs ?</h2>
|
||||||
|
<p><a
|
||||||
|
href="https://reports.exodus-privacy.eu.org/fr/reports/net.foucry.pilldroid/latest/">NON
|
||||||
|
!</a></p>
|
||||||
|
<h2 id="doù-viennent-les-données-de-pilldroid">D’où viennent les données
|
||||||
|
de Pilldroid ?</h2>
|
||||||
|
<p>Elles sont issues de plusieurs fichiers de l’Agence pour la Sécurité
|
||||||
|
des Médicaments, agrégés dans une base de données grâce à script Python
|
||||||
|
qui est disponible sur le dépôt <a
|
||||||
|
href="https://github.com/jfoucry/TransformMeds">TransformMeds</a>.</p>
|
||||||
|
<h2 id="ce-que-nest-pas-pilldroid">Ce que n’est pas Pilldroid</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Pilldroid n’est pas un pilulier. Pilldroid ne vous rappellera pas de
|
||||||
|
prendre vos médicaments, c’est <strong>VOTRE</strong>
|
||||||
|
responsabilité.</li>
|
||||||
|
<li>Pilldroid n’est pas fiable, ce n’est qu’une aide. Seul votre stock
|
||||||
|
réel est bon.</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="comment-peut-on-participer-à-pilldroid">Comment peut-on
|
||||||
|
participer à Pilldroid ?</h2>
|
||||||
|
<p>Mon code est de piètre qualité et mes connaissances Java maigrelettes
|
||||||
|
toute amélioration <strong>que je comprends</strong> sera la
|
||||||
|
bienvenue.</p>
|
||||||
|
<p>Marché de niche, Pilldroid a besoin de testeuses et testeurs.</p>
|
||||||
|
Et si vous ne pouvez-vous pas par ces moyens, vous pouvez m’aider à
|
||||||
|
payer mon électricité et mon accès internet :
|
||||||
|
<script src="https://liberapay.com/Pilldroid/widgets/button.js"></script>
|
||||||
|
<noscript>
|
||||||
|
<a href="https://liberapay.com/Pilldroid/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
|
||||||
|
</noscript>
|
||||||
|
<h2 id="lapplication-pilldroid-dispose-telle-dun-site-web">L’application
|
||||||
|
Pilldroid dispose telle d’un site web ?</h2>
|
||||||
|
<p>Oui, bien sûr : <a
|
||||||
|
href="https://pilldroid.foucry.net">Pilldroid</a></p>
|
||||||
|
<h2 id="contact">Contact</h2>
|
||||||
|
<p>Le site web en premier lieu et l’adresse mail <a
|
||||||
|
href="mailto://pilldroid@foucry.net:Subject=%22Contact%22">pilldroid@foucry.net</a></p>
|
|
@ -82,11 +82,13 @@ android {
|
||||||
namespace 'net.foucry.pilldroid'
|
namespace 'net.foucry.pilldroid'
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
tasks.withType(JavaCompile) {
|
tasks.withType(JavaCompile).tap {
|
||||||
|
configureEach {
|
||||||
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
|
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
@ -116,7 +118,9 @@ dependencies {
|
||||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||||
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
|
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
|
||||||
implementation 'androidx.core:core:1.13.1'
|
implementation 'androidx.core:core:1.13.1'
|
||||||
implementation 'de.raphaelebner:roomdatabasebackup:1.0.1'
|
implementation 'de.raphaelebner:roomdatabasebackup:1.0.1' // a supprimer
|
||||||
|
|
||||||
|
implementation 'androidx.documentfile:documentfile:1.0.1'
|
||||||
|
|
||||||
//coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.0'
|
//coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.0'
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
|
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
|
||||||
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
|
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
|
||||||
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
|
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
|
||||||
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<application
|
<application
|
||||||
|
|
|
@ -98,6 +98,8 @@ public class DrugListActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private RecyclerViewAdapter mAdapter;
|
private RecyclerViewAdapter mAdapter;
|
||||||
|
|
||||||
|
private final int PICK_DIRECTORY = 9999;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
|
@ -322,7 +324,8 @@ public class DrugListActivity extends AppCompatActivity {
|
||||||
startActivity(new Intent(this, WelcomeActivity.class));
|
startActivity(new Intent(this, WelcomeActivity.class));
|
||||||
return true;
|
return true;
|
||||||
} else if (id == R.id.ImportExport) {
|
} else if (id == R.id.ImportExport) {
|
||||||
backupprefs();
|
//backupprefs();
|
||||||
|
choseDir();
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
@ -331,6 +334,11 @@ public class DrugListActivity extends AppCompatActivity {
|
||||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
constructDrugsList();
|
constructDrugsList();
|
||||||
|
if(requestCode == PICK_DIRECTORY && resultCode == RESULT_OK) {
|
||||||
|
Bundle extras = data.getExtras();
|
||||||
|
String path = (String) extras.get("chosenDir");
|
||||||
|
//println("Path ==" path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
|
@ -421,7 +429,7 @@ public class DrugListActivity extends AppCompatActivity {
|
||||||
private void askToAddInDB(Medicine aMedicine) {
|
private void askToAddInDB(Medicine aMedicine) {
|
||||||
final Dialog dlg = new Dialog(this);
|
final Dialog dlg = new Dialog(this);
|
||||||
dlg.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
dlg.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||||
Objects.requireNonNull(dlg.getWindow()).setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
|
Objects.requireNonNull(dlg.getWindow()).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||||
dlg.setContentView(R.layout.custom_dialog_layout_one_button);
|
dlg.setContentView(R.layout.custom_dialog_layout_one_button);
|
||||||
dlg.setCancelable(false);
|
dlg.setCancelable(false);
|
||||||
TextView msg = dlg.findViewById(R.id.msg);
|
TextView msg = dlg.findViewById(R.id.msg);
|
||||||
|
@ -722,12 +730,19 @@ public class DrugListActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void choseDir() {
|
||||||
|
Intent result = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
|
||||||
|
String path = "";
|
||||||
|
result.putExtra("chosenDir", path);
|
||||||
|
setResult(RESULT_OK, result);
|
||||||
|
}
|
||||||
|
|
||||||
void backupprefs() {
|
void backupprefs() {
|
||||||
Log.i(TAG, "backupprefs");
|
Log.i(TAG, "backupprefs");
|
||||||
|
|
||||||
final Dialog dlg = new Dialog(this);
|
final Dialog dlg = new Dialog(this);
|
||||||
dlg.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
dlg.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||||
Objects.requireNonNull(dlg.getWindow()).setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
|
Objects.requireNonNull(dlg.getWindow()).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||||
dlg.setContentView(R.layout.backupprefs);
|
dlg.setContentView(R.layout.backupprefs);
|
||||||
dlg.setCancelable(false);
|
dlg.setCancelable(false);
|
||||||
|
|
||||||
|
@ -793,13 +808,13 @@ public class DrugListActivity extends AppCompatActivity {
|
||||||
// startActivity(intent);
|
// startActivity(intent);
|
||||||
// });
|
// });
|
||||||
|
|
||||||
Button btn_export = findViewById(R.id.switch_btn_export);
|
Button btn_export = dlg.findViewById(R.id.switch_btn_export);
|
||||||
assert btn_export != null;
|
assert btn_export != null;
|
||||||
Button btn_import = findViewById(R.id.switch_btn_import);
|
Button btn_import = dlg.findViewById(R.id.switch_btn_import);
|
||||||
assert btn_import != null;
|
assert btn_import != null;
|
||||||
Button btn_properties = findViewById(R.id.btn_properties);
|
Button btn_properties = dlg.findViewById(R.id.btn_properties);
|
||||||
assert btn_properties != null;
|
assert btn_properties != null;
|
||||||
Button btn_backupLocation = findViewById(R.id.btn_backup_location);
|
Button btn_backupLocation = dlg.findViewById(R.id.btn_backup_location);
|
||||||
assert btn_backupLocation != null;
|
assert btn_backupLocation != null;
|
||||||
|
|
||||||
encryptBackup = sharedPreferences.getBoolean(spEncryptBackup, true);
|
encryptBackup = sharedPreferences.getBoolean(spEncryptBackup, true);
|
||||||
|
@ -873,6 +888,7 @@ public class DrugListActivity extends AppCompatActivity {
|
||||||
Log.i(TAG, "ok button");
|
Log.i(TAG, "ok button");
|
||||||
|
|
||||||
PrescriptionDatabase.getInstanceDatabase(this);
|
PrescriptionDatabase.getInstanceDatabase(this);
|
||||||
|
|
||||||
final RoomBackup roomBackup = new RoomBackup(DrugListActivity.this);
|
final RoomBackup roomBackup = new RoomBackup(DrugListActivity.this);
|
||||||
if (btn_export.isEnabled()) {
|
if (btn_export.isEnabled()) {
|
||||||
btn_export.setOnClickListener(v -> {
|
btn_export.setOnClickListener(v -> {
|
||||||
|
@ -910,43 +926,3 @@ public class DrugListActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
final RoomBackup roomBackup = new RoomBackup(MainActivityJava.this);
|
|
||||||
*/
|
|
||||||
/*---------------------Backup and Restore Database--------------------------*//*
|
|
||||||
|
|
||||||
btn_backup.setOnClickListener(v -> {
|
|
||||||
roomBackup.backupLocation(storageLocation);
|
|
||||||
roomBackup.backupLocationCustomFile(new File(this.getFilesDir() + "/databasebackup/geilesBackup.sqlite3"));
|
|
||||||
roomBackup.database(FruitDatabase.Companion.getInstance(getApplicationContext()));
|
|
||||||
roomBackup.enableLogDebug(enableLog);
|
|
||||||
roomBackup.backupIsEncrypted(encryptBackup);
|
|
||||||
roomBackup.customEncryptPassword(MainActivity.SECRET_PASSWORD);
|
|
||||||
if (useMaxFileCount)
|
|
||||||
roomBackup.maxFileCount(5);
|
|
||||||
roomBackup.onCompleteListener((success, message, exitCode) -> {
|
|
||||||
Log.d(TAG, "oncomplete: " + success + ", message: " + message + ", exitCode: " + exitCode);
|
|
||||||
if (success)
|
|
||||||
roomBackup.restartApp(new Intent(getApplicationContext(), MainActivityJava.class));
|
|
||||||
});
|
|
||||||
roomBackup.backup();
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
btn_restore.setOnClickListener(v -> {
|
|
||||||
roomBackup.backupLocation(storageLocation);
|
|
||||||
roomBackup.backupLocationCustomFile(new File(this.getFilesDir() + "/databasebackup/geilesBackup.sqlite3"));
|
|
||||||
roomBackup.database(FruitDatabase.Companion.getInstance(getApplicationContext()));
|
|
||||||
roomBackup.enableLogDebug(enableLog);
|
|
||||||
roomBackup.backupIsEncrypted(encryptBackup);
|
|
||||||
roomBackup.customEncryptPassword(MainActivity.SECRET_PASSWORD);
|
|
||||||
roomBackup.onCompleteListener((success, message, exitCode) -> {
|
|
||||||
Log.d(TAG, "oncomplete: " + success + ", message: " + message + ", exitCode: " + exitCode);
|
|
||||||
if (success)
|
|
||||||
roomBackup.restartApp(new Intent(getApplicationContext(), MainActivityJava.class));
|
|
||||||
});
|
|
||||||
roomBackup.restore();
|
|
||||||
|
|
||||||
});*/
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ buildscript {
|
||||||
google()
|
google()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:8.0.2'
|
classpath 'com.android.tools.build:gradle:8.6.0'
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
|
@ -33,7 +33,7 @@ allprojects {
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.register('clean', Delete) {
|
tasks.register('clean', Delete) {
|
||||||
delete rootProject.buildDir
|
delete rootProject
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {}
|
dependencies {}
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,6 +1,6 @@
|
||||||
#Fri Sep 22 18:17:05 CEST 2023
|
#Fri Sep 22 18:17:05 CEST 2023
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|
Loading…
Reference in a new issue