mirror of
https://github.com/jfoucry/Pilldroid.git
synced 2024-11-09 23:41:08 +01: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
|
||||
/secrets.properties
|
||||
*.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,8 +82,10 @@ android {
|
|||
namespace 'net.foucry.pilldroid'
|
||||
|
||||
allprojects {
|
||||
tasks.withType(JavaCompile) {
|
||||
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
|
||||
tasks.withType(JavaCompile).tap {
|
||||
configureEach {
|
||||
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -116,7 +118,9 @@ dependencies {
|
|||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
|
||||
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'
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
|
||||
<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.READ_EXTERNAL_STORAGE" />
|
||||
|
||||
|
||||
|
||||
<application
|
||||
|
|
|
@ -98,6 +98,8 @@ public class DrugListActivity extends AppCompatActivity {
|
|||
|
||||
private RecyclerViewAdapter mAdapter;
|
||||
|
||||
private final int PICK_DIRECTORY = 9999;
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
@ -322,7 +324,8 @@ public class DrugListActivity extends AppCompatActivity {
|
|||
startActivity(new Intent(this, WelcomeActivity.class));
|
||||
return true;
|
||||
} else if (id == R.id.ImportExport) {
|
||||
backupprefs();
|
||||
//backupprefs();
|
||||
choseDir();
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
@ -331,6 +334,11 @@ public class DrugListActivity extends AppCompatActivity {
|
|||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
constructDrugsList();
|
||||
if(requestCode == PICK_DIRECTORY && resultCode == RESULT_OK) {
|
||||
Bundle extras = data.getExtras();
|
||||
String path = (String) extras.get("chosenDir");
|
||||
//println("Path ==" path);
|
||||
}
|
||||
}
|
||||
|
||||
public void onResume() {
|
||||
|
@ -421,7 +429,7 @@ public class DrugListActivity extends AppCompatActivity {
|
|||
private void askToAddInDB(Medicine aMedicine) {
|
||||
final Dialog dlg = new Dialog(this);
|
||||
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.setCancelable(false);
|
||||
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() {
|
||||
Log.i(TAG, "backupprefs");
|
||||
|
||||
final Dialog dlg = new Dialog(this);
|
||||
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.setCancelable(false);
|
||||
|
||||
|
@ -793,13 +808,13 @@ public class DrugListActivity extends AppCompatActivity {
|
|||
// 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;
|
||||
Button btn_import = findViewById(R.id.switch_btn_import);
|
||||
Button btn_import = dlg.findViewById(R.id.switch_btn_import);
|
||||
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;
|
||||
Button btn_backupLocation = findViewById(R.id.btn_backup_location);
|
||||
Button btn_backupLocation = dlg.findViewById(R.id.btn_backup_location);
|
||||
assert btn_backupLocation != null;
|
||||
|
||||
encryptBackup = sharedPreferences.getBoolean(spEncryptBackup, true);
|
||||
|
@ -873,6 +888,7 @@ public class DrugListActivity extends AppCompatActivity {
|
|||
Log.i(TAG, "ok button");
|
||||
|
||||
PrescriptionDatabase.getInstanceDatabase(this);
|
||||
|
||||
final RoomBackup roomBackup = new RoomBackup(DrugListActivity.this);
|
||||
if (btn_export.isEnabled()) {
|
||||
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()
|
||||
}
|
||||
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
|
||||
// in the individual module build.gradle files
|
||||
|
@ -33,7 +33,7 @@ allprojects {
|
|||
}
|
||||
|
||||
tasks.register('clean', Delete) {
|
||||
delete rootProject.buildDir
|
||||
delete rootProject
|
||||
}
|
||||
|
||||
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
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
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
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
Loading…
Reference in a new issue