• Breaking News

    Saturday, November 7, 2020

    Android Dev - App Feedback Thread - November 07, 2020

    Android Dev - App Feedback Thread - November 07, 2020


    App Feedback Thread - November 07, 2020

    Posted: 07 Nov 2020 04:28 AM PST

    This thread is for getting feedback on your own apps.

    Developers:

    • must provide feedback for others
    • must include Play Store, GitHub, or BitBucket link
    • must make top level comment
    • must make effort to respond to questions and feedback from commenters
    • may be open or closed source

    Commenters:

    • must give constructive feedback in replies to top level comments
    • must not include links to other apps

    To cut down on spam, accounts who are too young or do not have enough karma to post will be removed. Please make an effort to contribute to the community before asking for feedback.

    As always, the mod team is only a small group of people, and we rely on the readers to help us maintain this subreddit. Please report any rule breakers. Thank you.

    - Da Mods

    submitted by /u/AutoModerator
    [link] [comments]

    Android 7.1.0 and below will stop trusting LetsEncrypt HTTPS certificates in September 2021

    Posted: 06 Nov 2020 07:38 PM PST

    Built some Toolbar + CollapsingToolbar, playground for scroll flags, and material design elements focused templates. If you know how Window Insets consumed, dispatched and effects with or without or wish to contribute new templates it's more than welcome. Looking for detailed inset guide.

    Posted: 07 Nov 2020 05:40 AM PST

    PeriodicWorkRequest (work v1.0.1) is spawning 20 times every 15m instead of just once, not sure why

    Posted: 07 Nov 2020 08:28 AM PST

    In the follow code excerpts, I am utilizing a BroadcastReceiver to start up a Service on device boot and/or package reload. This NotificationService is calling my Worker via PeriodicWorkRequest every fifteen minutes. Everything initially works as it is supposed to, until the NotificationWorker is executed. It seems that, at the point where the Worker is invoked, it runs twenty times instead of just once. I believe that is twenty times exactly, as well. After all of it is said and done, it waits for ~15 minutes, as it should, and then exhibits the same behavior when it again invokes the Worker. Ideally this Worker should only be run once every 15m, especially being as some of the computation that it will be doing is rather expensive.

    I have spent days now, googling for more information (I've partially been hampered in this due to using Work v1.0.1, instead of the more recent, androidx v2.4.0, but I'm not ready to upgrade everything that would be broken in my project with that change) and doing my best to debug this issue. Unfortunately, the debugging has been rather slow and unproductive, due to the fact that I can rarely get my Log.?() messages to even show up, let alone to give me any hints as to where this behavior is coming from. This behavior (Log messages not showing up) has been a problem in BootServiceStart, NotificationWorker, and NotificationService, and I've got no idea why.

    Here is the applicable code for the issue; please note that if you follow the dpaste links you will find the general areas of the problematic code highlighted in order to ease diagnosis a bit (dpasted code will only be available for 6 more days):

    BootServiceStart - also here on dpaste (https://dpaste.org/rLNJ)

     package com.example.sprite.half_lifetimer; ​ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Build; import android.util.Log; ​ public class BootServiceStart extends BroadcastReceiver { public void onReceive(Context context, Intent arg1) { Intent intent = new Intent(context , NotificationService.class); ​ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { context.startForegroundService(intent); } else { context.startService(intent); } ​ if (GlobalMisc.Debugging) { Log.i("Halflife.BootServiceStart", "Attempted to start NotificationService"); } } } 

    NotificationService - also here on dpaste (https://dpaste.org/n5NA#L70,72)

     package com.example.sprite.half_lifetimer; ​ import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager;; import android.app.Service; import android.content.Intent; import android.os.Build; import android.os.IBinder; import android.support.annotation.Nullable; import android.support.v4.app.NotificationCompat; import android.util.Log; import androidx.work.PeriodicWorkRequest; import androidx.work.WorkManager; ​ import java.time.LocalDateTime; import java.util.HashMap; import java.util.concurrent.TimeUnit; ​ public class NotificationService extends Service { public static HashMap<Integer, Boolean> firedNotifications = new HashMap<>(); public static LocalDateTime lastNotificationLoopLDT = null; ​ @Nullable public IBinder onBind(Intent intent) { return null; } ​ /** * Method handles creation of a NotificationChannel and database * initialization (for this particular subset of the code), then passing * control off to notificationLoop(). */ public void onCreate() { startForeground(31337, buildForegroundNotification()); ​ if (GlobalMisc.Debugging) { Log.i("Halflife.NotificationService.onCreate", "Started NotificationService"); } ​ // Create the NotificationChannel, but only on API 26+ because // the NotificationChannel class is new and not in the support library if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel chan = new NotificationChannel( "taper-n-clearing-talk", "taper-n-clearing", NotificationManager.IMPORTANCE_NONE); chan.setDescription("Notifications for Taper dosages and Substance clearance"); ​ // Register the channel with the system; you can't change the importance // or other notification behaviors after this NotificationManager notificationManager = getSystemService(NotificationManager.class); notificationManager.createNotificationChannel(chan); } ​ //get the database ready try { Permanence.Misc.init(/*NotificationService.this*/ getApplicationContext()); } catch (Exception ex) { Log.e("Halflife.notificationLoop", "Unable to init database: " + ex.toString()); } ​ if (GlobalMisc.Debugging) { Log.i("Halflife.onCreate", "all valid tapers: " + Permanence.Tapers.loadAllValidTapers(getApplicationContext()).toString()); ​ } ​ //notificationLoop(); PeriodicWorkRequest notificationsRequest = new PeriodicWorkRequest.Builder(NotificationWorker.class, 15, TimeUnit.MINUTES) .build(); WorkManager.getInstance() .enqueue(notificationsRequest); } ​ private Notification buildForegroundNotification() { NotificationCompat.Builder b=new NotificationCompat.Builder(this); ​ b.setOngoing(true) .setContentTitle("HLT Foreground Service") .setContentText("Giving Half-life Timer foreground priority") .setChannelId("taper-n-clearing-talk") .setSmallIcon(getApplicationContext().getResources().getIdentifier( "plus_medical_blue","drawable", getApplicationContext().getPackageName())); ​ return(b.build()); } } 

    NotificationWorker - also here on dpaste (https://dpaste.org/Cg55#L322)

     package com.example.sprite.half_lifetimer; ​ import android.app.PendingIntent; import android.app.TaskStackBuilder; import android.content.Context; import android.content.Intent; import android.support.annotation.NonNull; import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationManagerCompat; import android.util.Log; ​ import androidx.work.Worker; import androidx.work.WorkerParameters; ​ import java.time.Duration; import java.time.LocalDateTime; import java.time.LocalTime; ​ public class NotificationWorker extends Worker { private boolean notificationDebugging = false; ​ public NotificationWorker(@NonNull Context context, @NonNull WorkerParameters params) { super(context, params); } ​ @Override public Result doWork() { LocalDateTime nextScheduledDosage; long adminDurationMinutes; ​ if (!notificationDebugging) { if (GlobalMisc.NotificationsEnabled) { //taper notification loop for (Taper taper : Permanence.Tapers.loadAllValidTapers(getApplicationContext())) { //this will handle if any tapers have been added since inception if (!NotificationService.firedNotifications.containsKey(taper.getId())) { NotificationService.firedNotifications.put(taper.getId(), false); } ​ //if this is a constrained taper, but we're outside of the window, just //go on to the next taper if (taper.isConstrained() && !taper.inConstraintHours()) { Log.i("Halflife.notificationLoop", "skipping " + taper.toString() + " (outside of hourly constraints)"); ​ continue; } ​ if (!NotificationService.firedNotifications.get(taper.getId())) { try { nextScheduledDosage = taper.findNextScheduledDosageLDT(); if (!taper.isConstrained()) { Log.i("Halflife.notificationLoop", "working with unconstrained taper"); ​ adminDurationMinutes = Duration.ofDays(1).dividedBy( taper.getAdminsPerDay()).toMinutes(); } else { Log.i("Halflife.notificationLoop", "working with constrained taper"); ​ //not sure if this is necessary or not, but might as well //throw it in since the goddamned code is too complex for me //to follow right now down below LocalTime nextDosageTime = nextScheduledDosage.toLocalTime(); if (nextDosageTime.isBefore(taper.getStartHour()) || nextDosageTime.isAfter(taper.getEndHour())) { Log.i("notificationLoop", "skipping " + taper.toString() + " (outside of constraint hours)"); ​ continue; } ​ //this part, of course, is necessary adminDurationMinutes = Duration.between(taper.getStartHour(), taper.getEndHour()).dividedBy( taper.getAdminsPerDay()) .toMinutes(); } ​ if (GlobalMisc.Debugging) { Log.i("Halflife.notificationLoop", "Checking taper: " + taper.getName()); Log.i("Halflife.notificationLoop", "nextScheduledDosage " + "contains: " + nextScheduledDosage.toString()); } ​ if (((NotificationService.lastNotificationLoopLDT != null) && nextScheduledDosage.isAfter( NotificationService.lastNotificationLoopLDT) && nextScheduledDosage.isBefore( LocalDateTime.now().plusMinutes( (adminDurationMinutes / 5)))) || (nextScheduledDosage.isAfter( LocalDateTime.now().minusMinutes(1)) && nextScheduledDosage.isBefore( LocalDateTime.now().plusMinutes( (adminDurationMinutes / 5))))) { fireTaperNotification(taper); ​ //set firedNotifications to reflect that we sent this //notification NotificationService.firedNotifications.replace(taper.getId(), true); } else if (GlobalMisc.Debugging) { Log.i("Halflife.notificationLoop", "not displaying notification as per " + "datetime constraints"); } } catch (Exception ex) { Log.e("Halflife.notificationLoop", "Issue finding next scheduled dosage: " + ex.toString()); ​ return Result.failure(); } } } } else { GlobalMisc.debugMsg("NotificationWorker:doWork", "Would have just gone into substance taper notification loop"); } ​ if (GlobalMisc.NotificationsEnabled) { //substance clearing notification loop //LocalDateTime fiveMinAgo = LocalDateTime.now().minusMinutes(5); for (Substance sub : Permanence.Subs.loadUnarchivedSubstances( getApplicationContext())) { if (GlobalMisc.Debugging) { Log.i("Halflife.notificationLoop", "Checking sub clearance: " + sub.getCommon_name()); } ​ //has this substance cleared within the last 5 minutes? LocalDateTime clearedAt = sub.getFullEliminationLDT(); if (clearedAt != null) { if (NotificationService.lastNotificationLoopLDT != null) { if (clearedAt.isAfter(NotificationService.lastNotificationLoopLDT) && clearedAt.isBefore(LocalDateTime.now())) { //fire the notification try { fireSubClearedNotification(sub); } catch (Exception ex) { Log.i("Halflife.doWork", ex.toString()); ​ return Result.failure(); } } } } } } else { GlobalMisc.debugMsg("NotificationWorker:doWork", "Would have just gone into substance clearing notification loop"); } } else { Log.i("Halflife.notificationLoop", "In notification debugging " + "mode"); ​ try { fireTaperNotification(null); } catch (Exception ex) { Log.i("Halflife.doWork", ex.toString()); ​ return Result.failure(); } } ​ NotificationService.lastNotificationLoopLDT = LocalDateTime.now(); ​ return Result.success(); } ​ /** * Method handles the actual building of the notification regarding * the applicable taper, and shows it unless our handy HashMap * 'firedNotifications' shows that there is already a notification * present for this particular taper. * * @param taper the taper to display notification for */ private void fireTaperNotification(Taper taper) throws Exception { Context ctxt = getApplicationContext(); float currentDosageScheduled = taper.findCurrentScheduledDosageAmount(); ​ //here's the legitimate meat 'n potatoes for firing a notification try { //if we've already blown the dosage required for the next administration, just skip this //one if (currentDosageScheduled <= 0) { Log.d("fireTaperNotification", "More dosage taken than needs to be " + "for the current taper step; skipping this taper administration."); ​ return; } ​ Intent intent = new Intent(ctxt, AdminData.class); intent.putExtra("SUB_NDX", GlobalMisc.getSubListPositionBySid(taper.getSid())); intent.putExtra("NOTIFICATION_BASED", true); TaskStackBuilder stackBuilder = TaskStackBuilder.create(ctxt); stackBuilder.addParentStack(SubData.class); stackBuilder.addNextIntentWithParentStack(intent); ​ Intent delIntent = new Intent(ctxt, NotificationDismissalReceiver.class); delIntent.putExtra("TAPER", true); delIntent.putExtra("SUB_ID", taper.getSid()); ​ ​ PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent pendingDelIntent = PendingIntent.getBroadcast(ctxt, 0, delIntent, PendingIntent.FLAG_UPDATE_CURRENT); ​ LocalDateTime latestUsageLDT; LocalDateTime todaysOpeningConstraintLDT; boolean beforeOpeningConstraint = false; latestUsageLDT = Converters.toLocalDateTime( Permanence.Admins.getLatestUsageTimestampBySid(taper.getSid())); if (taper.isConstrained()) { todaysOpeningConstraintLDT = LocalDateTime.now().withHour(taper.getStartHour().getHour()) .withMinute(taper.getStartHour().getMinute()) .withSecond(0); ​ if (latestUsageLDT.plus(taper.getTotalConstraintDuration()).isBefore( todaysOpeningConstraintLDT)) { beforeOpeningConstraint = true; } } ​ NotificationCompat.Builder builder = new NotificationCompat.Builder( ctxt, "halflife") .setContentTitle("Half-life Timer Taper " + taper.getName()) //note that the above line, right after "Due since: " +, will //end up displaying the epoch start date for a taper on a //substance that has no administrations whatsoever .setSmallIcon(ctxt.getResources().getIdentifier("plus_medical_blue", "drawable", ctxt.getPackageName())) .setPriority(NotificationCompat.PRIORITY_DEFAULT) .setContentIntent(pendingIntent) .setDeleteIntent(pendingDelIntent) .setAutoCancel(true); ​ long rawTimestamp = Permanence.Admins.getLatestUsageTimestampBySid(taper.getSid()); ​ GlobalMisc.debugMsg("fireTaperNotification", "Permanence.Admins.getLatestUsageTimestampBySid returns: " + rawTimestamp); ​ if (Converters.toLocalDateTime(rawTimestamp).isBefore( LocalDateTime.of(1980, 1, 1, 0, 0, 0))) { builder.setContentText("Due: " + String.format("%.2f", currentDosageScheduled) + Permanence.Subs.getUnitsBySID(taper.getSid()) + "/" + Permanence.Subs.loadSubstanceById( taper.getSid()).getCommon_name() + "\n" + "Due now"); } else if (beforeOpeningConstraint) { builder.setContentText("Due:" + currentDosageScheduled + Permanence.Subs.getUnitsBySID(taper.getSid()) + " of " + Permanence.Subs.loadSubstanceById( taper.getSid()).getCommon_name() + "\n" + "Due since: " + LocalDateTime.now().withHour(taper.getStartHour().getHour()) .withMinute(taper.getStartHour().getMinute()) .withSecond(0)); } else { builder.setContentText("Due:" + currentDosageScheduled + Permanence.Subs.getUnitsBySID(taper.getSid()) + " of " + Permanence.Subs.loadSubstanceById( taper.getSid()).getCommon_name() + "\n" + "Due since: " + Converters.toLocalDateTime( Permanence.Admins.getLatestUsageTimestampBySid( taper.getSid())).plus( Duration.ofDays(1).dividedBy( taper.getAdminsPerDay()))); } ​ NotificationManagerCompat notificationManager = NotificationManagerCompat.from(ctxt); ​ notificationManager.notify(1, builder.build()); ​ if (GlobalMisc.Debugging || notificationDebugging) { Log.i("Halflife.fireNotification", "attempted to send taper notification"); } } catch (Exception ex) { Log.e("Halflife.fireNotification", "Something broke in taper notification: " + ex.toString()); ​ throw new Exception("taper notification broke"); } } ​ private void fireSubClearedNotification(Substance sub) throws Exception { Context ctxt = getApplicationContext(); ​ try { Intent intent = new Intent(ctxt, SubsRankedByLastUsage.class); ​ PendingIntent pendingIntent = PendingIntent.getActivity( ctxt, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); ​ NotificationCompat.Builder builder = new NotificationCompat.Builder( ctxt, "halflife") .setContentTitle("Half-life Timer Cleared: " + sub.getCommon_name()) .setContentText(sub.getCommon_name() + " cleared at " + sub.getFullEliminationLDT().toString()) .setSmallIcon(ctxt.getResources().getIdentifier("plus_medical_blue", "drawable", ctxt.getPackageName())) .setPriority(NotificationCompat.PRIORITY_DEFAULT) .setContentIntent(pendingIntent) .setAutoCancel(true); ​ NotificationManagerCompat notificationManager = NotificationManagerCompat.from(ctxt); ​ notificationManager.notify(1, builder.build()); ​ if (GlobalMisc.Debugging || notificationDebugging) { Log.i("Halflife.fireNotification", "attempted to send sub clearednotification"); } } catch (Exception ex) { Log.e("Halflife.fireNotification", "Something broke in sub cleared notification: " + ex.toString()); ​ throw new Exception("sub cleared notification broke"); } } } 

    I would be very grateful to anybody who might be able to offer any insight on why this behavior is happening, tips on how to avoid this behavior, where to find API & other documentation on the older, deprecated JetPack work v1.0.1 library, or what I can do in Android Studio to better diagnose this issue, as attempts for debugging with what I know how to do have proven futile.

    Thank you very much for your time and help on this matter!

    submitted by /u/transcending_pork
    [link] [comments]

    HTTP Requests with .local address?

    Posted: 07 Nov 2020 08:12 AM PST

    Does anyone know how someone could realise this? I've been struggling with it. Like for example pi.local. It doesn't work.

    submitted by /u/Zarkex01
    [link] [comments]

    Loss motivation and worrying myself for working as a senior android developer.

    Posted: 07 Nov 2020 07:25 AM PST

    Yesterday I took an interview at local top company as a senior android developer and I am worry myself as I have not enough knowledge to work with great people.

    And besides, I think I am not even a senior developer with 2 years of experience.

    So,I have no idea what to do if they offer me. I got imposter syndrome all these days and I am afraid to take challenges.

    Have you guys ever felt like that?

    submitted by /u/shahadzawinski
    [link] [comments]

    Automate your build & release with Github Actions

    Posted: 07 Nov 2020 07:21 AM PST

    Is it possible to change password after encrypting database content with Password-Based encryption??

    Posted: 07 Nov 2020 12:22 AM PST

    I am creating an android app where the app would encrypt some user data with AES Password based encryption. The password would be the password which the user used to create an account in the app. I am using Password based encryption because I think it is more secure than storing the Encryption keys somewhere inside the application.

    The problem is that user won't be able to decrypt the data if he changes the password.

    So is there any way to solve this problem??

    Or do I have to use other kind of encryption?

    submitted by /u/thebarsapani
    [link] [comments]

    Upgrading for android studio. Help

    Posted: 07 Nov 2020 05:08 AM PST

    Hi. I have potato pc. Specs : i3 4170 Ddr3 ram 8gb 1600mhz 256gb ssd

    Just want to ask. What should i upgrade? I dont have much money.Change it to Processor(i5 4th gen) or 16gb ram?

    submitted by /u/haxcer
    [link] [comments]

    How to Make the Compiler Smarter with Kotlin Contracts

    Posted: 06 Nov 2020 08:41 AM PST

    Feedback for UI/UX & ASO

    Posted: 07 Nov 2020 03:54 AM PST

    Hi guys,

    My app recently has started get organic downloads - 400/500 a day!

    However my conversion rate is low, around 30%.

    How can that be improved?

    Also can you guys give me some feedback about the UI/UX? Is my app easy to understand? :)

    Right now I am fixing the core of the app, to allow users to type in any sentence rather than pre-selected sentences!

    Travemo

    submitted by /u/snorlaxerr
    [link] [comments]

    OCR

    Posted: 07 Nov 2020 03:46 AM PST

    Hi all is there an example of creating an ocr that detects the text and draw an overlay above the detected text ! the Google machine learning kit it requires to send the image as image file or bitmap so this is not what i am looking for .any sample links would be appreciated.

    example :
    https://camo.githubusercontent.com/5b1470447ac07108ce6b760a2b16876cd52c7f3b0139799653d4fff8695b88ae/687474703a2f2f692e696d6775722e636f6d2f6453397a706f312e706e67

    submitted by /u/beses
    [link] [comments]

    3 Major Benefits Of View Binding Android

    Posted: 07 Nov 2020 05:16 AM PST

    Screenshot generator for Wear application

    Posted: 06 Nov 2020 08:12 PM PST

    I've developed some apps that work along with the Wear application. I've gotten away with not including the smartwatch screenshots. But I'd like for new users to see the Wear app in the Play Store and want to create screenshots for a picture that includes both the phone and the smartwatch in one picture or separate, if possible. There's plenty of sites that are free but are limited when it comes to smartwatch screenshots. Any recommendations are greatly appreciated!

    submitted by /u/ayySMH
    [link] [comments]

    Weekly Issue #13 - Mobile Developers Cafe is out with lots of android news and articles. Read now.

    Posted: 06 Nov 2020 09:15 PM PST

    Android app project( desperately need help)

    Posted: 06 Nov 2020 04:37 PM PST

    Hello everyone,

    I'm really beginner at this Android development and I'm having a graduate thesis on it.

    The project is about sending measured data from arduino to Android app via bluetooth then appyling FFT on that measured data.

    My part is to get measured data from arduino ( probably data will be text file 1024x1) and make data ready for FFT

    We agreed to write everything in Java, but not sure where I should start.

    Your help and advices are more than welcome. Thanks

    submitted by /u/cynestra
    [link] [comments]

    Looking for creative ways to organize/store test devices

    Posted: 06 Nov 2020 08:08 PM PST

    Hey guys, new to posting here, not new to Android. I have a bunch of test devices (comes with the territory of supporting a million devices as we all know) and I was wondering if my fellow devs had any advice on how they keep their stuff nicely organized. What storage containers, chests, etc do you use?

    submitted by /u/ocasiorey
    [link] [comments]

    License testers VS LicenseD testers VS Public license VS Custom Android Studio license

    Posted: 06 Nov 2020 11:29 AM PST

    I would like to do Internal test of InApp purchases.

    What I did until now:

    -I have created developer account and merchant account.

    -I have compiled the code by using "Generate Signed Bundle/Apk" where I created the new Key

    -I have created the new listing for a test app in Internal test, uploaded file, and status is:

    "Available to internal testers "

    -I have added my test email in list with testers

    -I have added my email in the list with License testers and set option "Licensed"

    -I got url for downloading test app... which at the moment shows

    " We're sorry, the requested URL was not found on this server. "

    but ok, i guess that it is as stated... that it can take up to 48h for first time published app to become available to testers...

    What I dont understand now is this:

    I am reading google docs, and on this link:

    https://developer.android.com/google/play/billing/test

    " Ordinarily, the Google Play Billing Library is blocked for apps that aren't signed and uploaded to Google Play. License testers can bypass this check, meaning you can sideload apps for testing, even for apps using debug builds with debug signatures without the need to upload to the new version of your app. Note that the package name must match that of the app that is configured for Google Play, and the Google account must be a license tester for the Google Play Console account. "

    ----------------

    License testers can bypass this check, meaning you can sideload apps for testing, even for apps using debug builds with debug signatures without the need to upload to the new version of your app.

    This means that, for the purpose of internal test, I can just compile the code with my custom key and upload to google play?

    Ordinarily, the Google Play Billing Library is blocked for apps that aren't signed and uploaded to Google Play.

    If i compile my final app with my custom key and i upload to Google play as a final product then it satisfies this criteria that "it must be signed and uploaded to google play" ...or not?

    Or I have to use some public key as described here:

    https://developer.android.com/google/play/licensing/setting-up?fbclid=IwAR1o3EqaNO2RKOhtTEtjEFe3AW8NmBRxQ6VtZHHJXBr6ZRfx89pk7LnqnTI#runtime-setup

    TL:DR

    My app has in app purchases

    Can I use my custom key when compile app for purpose of internal test? Or I have to use public key?

    Can I use my custom key when compile final app for purpose of publishing in production? Or I have to use public key?

    submitted by /u/KotlinNoob
    [link] [comments]

    Can I get some advice on moving forward with an app idea?

    Posted: 06 Nov 2020 10:14 AM PST

    The app's main function is to allow doctors and staff be able to quickly find contact information (phone, fax, email) for other doctors of the same specialty in our state. I will add a search function for the names and other doctors close to the user's location. There is a public excel spreadsheet on the website of the Board of Examiners with all this public information. My main questions are:

    1. Is it legal to have the doctors' contact information in my app without their consent given it is public information on a .gov site?
    2. What is the best option for creating the database? I have an excel spreadsheet with about 800 names and contact information. I've worked with SQLite, Room and Firebase in the past on small projects, but I want to use the best approach.
    3. If you were building this app as a solo dev, what approach would you take (tech wise)?
    submitted by /u/CutMyLifeIn2Pizzaz
    [link] [comments]

    How to make a simple screen recorder

    Posted: 06 Nov 2020 11:46 AM PST

    Hi. How can I make the simplest screen recorder with the MediaProjrction class ? I searched google, but didn't find too many helps, and those few I found, weren't very learner to me. Thanks in advance

    submitted by /u/Ethical_John
    [link] [comments]

    A question about developing recommender sysems

    Posted: 06 Nov 2020 03:24 PM PST

    I have an android app with Rest java spring boot server, a virtual machine for server with 2 GB ram, which collects some user data and stores it in the database. I need to build a recommender system that uses those data to personalize a set of recommendations. I am new to backend development.

    I figured that I probably need to build a recommendation engine. I prototype with python locally and for example, I know I will implement bandit-based, content-based, and hybrid recommendation algorithms for three different use-cases. I mostly have prototyped with python.

    1. Which platforms or technology should I use for having the algorithms work online? since there are similarity matrix calculations etc.

    1. Can I use somehow python that accesses the same database and after calculating user-profiles update top-n for each user? or will it crash with java app accessing the same db?

    2. Or can I just do everything in my server java spring boot app, if so how? wouldn't it be too heavy since the server at the same time collects lots of user data, manual and sensor?

    3. Perhaps I should build a separate recommender engine. That way I would need an adapter for my java server app. How these could work together? What should I use?

    submitted by /u/ReadAnAnswer123
    [link] [comments]

    I need help for integration of Dlib and C++ in Android.

    Posted: 06 Nov 2020 12:44 PM PST

    Hi. I am currently working on an Android application that requires C++ and Dlib integration. Can someone help me with the integration of Dlib in Android or link me to some repositories where I can find useful code.

    submitted by /u/scared_gratzimo
    [link] [comments]

    Help With Release Propagation Issues

    Posted: 06 Nov 2020 08:02 AM PST

    Anyone ever experience issues with new versions released to testing tracks no propagating to any users as well as the update button not displaying on the play store listing? Is this a common issue on Google's end?

    submitted by /u/Savage_oh
    [link] [comments]

    No comments:

    Post a Comment