• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

  • Question Question
Website Issue Affecting User Experience

Hey there, Android community! I've been facing a rather perplexing issue with my website lately, and I'm hoping some of you tech-savvy folks can help me out. So, I run a medical billing services website, and it seems like there's a hiccup somewhere in the system.

Here's the deal: when users visit my site on their Android devices, they've reported some weird behavior. It's not consistent, but occasionally they encounter slow page loading times and difficulties accessing certain features, particularly during peak traffic hours. This doesn't seem to be a widespread problem, and our desktop users don't appear to be affected.

I've checked my hosting, run speed tests, and tried different browsers, but the problem persists sporadically. I'm not sure if it's a compatibility issue, a server problem, or something else entirely.

Has anyone experienced a similar issue with their website on Android? If so, how did you resolve it? I'd appreciate any insights or advice you can offer.

Feel free to ask for more information about my website, and I'll be happy to provide additional details. Thanks in advance for your help!

Podcast help

Until the mid Oct. update my S20FE ran like a top. Now it is slow to load and sometimes glitchy.
I have used Podbean for listening to podcasts for years. Now when I bring up that app or any other podcast app, they take forever to bring up my options and when I select a particular podcast, it still takes time to load that particular episode. If I decide to switch to a different podcast in my favorites list it starts all over. Pre-update everything flowed smoothly with no waiting for anything to load. Suggestions?

SmartSwitch quit allowing Outlook sync

This has happened before on an auto-update of Samsung Smart Switch: I am prompted for the update, and when the update is done, Smart Switch comes up prompting me to transfer data from one phone to another. But that is not why I use Smart Switch; I use it for the sole purpose of synchronizing Outlook contacts and calendar.

Now, as soon as I open Smart Switch on my Galaxy, it comes up with "Transfer your data" & "what should your phone do?", but the only two options are Send data and Receive data, and when I select Receive data, it asks me what my old device is: Galaxy or iPhone/iPad.

I have fought this before, and if I remove SmartSwitch and reinstall, then I am stuck manually removing all those leftover contacts & calendar items from the Galaxy before I next sync with SmartSwithc, because it is not that good at duplicate-avoidance.

The only other option is Backup/Restore, and the menu brings up only Transfer result and Settings. And Settings provides no way to configure for Outlook sync. And when I open Smart Switch on my PC, I get a message that I need to update the Smart Switch app on the connected device.

Start up extremely slow on my p.c., windows ten..

ICYMI, I am no longer accessing my AF to my comp, but yest erday I got it snickered in with the op key on here logged in, as long as I do not clear out the cache, my comp's screen will linger on the first blue screen for about twenty minutes, did a CClean up, as well as sfc and Image online health thing too.. So My biggest question is how to speed it up when it is extremely slow, so my apps will not run mostly and it takes a simple right click about ten minutes to pop up..
I am here just wondering what gives..

AI Spam Threads & Paid Memberships

I'm excited about the power of AI tools like ChatGPT, OpenAI, and Midjourney, but equally concerned about how that power will be used in the wrong hands. At the most basic level, scammers, spammers, and fraudsters are already using it to create bots that are nearly indistinguishable from humans.

On Android Forums, I've noticed it more and more on threads like this (note @ocnbrze quoting "Fatima Ansari") where AI "members" build up a message history that they then exploit with spam links. As the AI bots get smarter, moderating will become harder, and the schemes more nefarious. Even more importantly, the proliferation of AI bots threatens the entire purpose of our community: to foster authentic and meaningful conversations.

As we look to expand our brand with a relaunch, many things will soon change. Among them, I'm strongly considering removing or restricting the "free membership" option. Here's how it would work:
  • All current members grandfathered into 100% Free Accounts for life.
  • All current VIP grandfathered into 100% Free VIP for life.
  • Future members required to pay a minimal monthly fee (ex: $2/month)
This would reward our loyal members, eliminate 99.9% of spam, and create a new revenue stream that could be reinvested into the site. We would welcome back existing members to "claim" their account via email blast that shares all the big changes.

I'm sharing this well in advance to gauge interest and hear your opinions: it's just an idea and not final. We could also try maintaining a free area but I think this is more likely to cause confusion and chaos than a small simple monthly fee.

Although this would likely have a negative impact in the short-term, I think it may prove wise in the long haul.

I'm tentatively planning to "flip the switch" on Black Friday (Nov 24th) but we would continue allowing new free memberships through January 1st, 2024 (with the paid model going into effect on January 2nd, 2024).

Possible Restaurant QR Code Fraud

Wife and I were coming back from Tennessee and we stopped at a popular Bar & Grill for something to eat. Wife ordered Potato Skins, I ordered Chicken Wings and two Pepsi. The Bill came to something like $35.. The bar was very busy and crowded. At our table it had a sign that said pay your bill by scanning the QR on your bill. So I scanned the QR code and paid the bill, It popped up that I had paid and said a email would be sent.

Here is where I made a mistake. I left the waitress a $5 tip and wrapped the Bill around the $5, and we left.

I never got an email like the QR code said.

The next day the payment at the bar shows up as $71.06

I have accounting at the bar looking into it. I think the difference between what the bill actually was ($35) and the amount charged $71.06 was taken out and pocketed in cash. If I don't get a satisfactory answer from accounting I will refer this to the local Police.

Why do youtubers hide or censor out applying thermal paste

"I'm gonna use the perfect amount of thermal paste" proceeds to edit part of video out or move camera
--Tronicsfix

"oops, gonna need to put thermal paste on that [moves camera where the user can't see the process]"
--Adrian's Digital Basement.

The term "the perfect amount of thermal paste" line is also used across the board, always hiding/censoring or making a joke about people seeing the process each time. Is there a joke/meme I'm missing or what? I don't understand. What if I am interested in building a PC and would like to see the process? I hate being out of the loop here.

NFL Red Zone dud

My friend subscribed to this recently. It has no sound despite my checking audio and rebooting. Now he wants to screen cast to his Panasonic plasma tv. It's a TH-42PZ85U. I have no idea how old it is. When I tried screencast it showed a bunch of tvs to send to, but I'm pretty sure his is not on the list. Also, I went to a website with my phone, the Pure, only to find I had no Internet connection. I don't know why because it's the same thing I've been using for quite a while. It says the signal strength is excellent but it doesn't connect.

  • Question Question
Nokia 5.4 bootloop

I have my mother her phone here. It's a Nokia 5.4 with Android one. It's stuck on the Nokia logo. When I press volume up and start button I get the little Adroid guy and a no command text. When I press volume down and start button I get the options power off, Start, restart bootloader, recovery mode. Non of those help anything.
The bootloader and baseband version are empty. Not sure how to go from here. I would think trying a hard reset and use some software to atleast get (some) of her pictures bak was the easiest thing to do however there is no factory reset option. I hope someone can help me. She is 88 and eventhough she doesnt really understand her phone, she likes to play a game and take pictures on it.

"We've detected that this app is using an unsupported version of Play billing. Please upgrade to Billing Library 5 or newer to release this app."

Hey everyone, just encountered an issue right on the cusp of releasing a game. When I try to upload my game to the playstore, it comes up with the error "We've detected that this app is using an unsupported version of Play billing. Please upgrade to Billing Library 5 or newer to release this app.". By default Unreal 5.0 has version 3, my game doesn't include any form of transactions and I'm unclear if I can circumvent this step if I find out how to turn off microtransactions in engine. I've looked through all I could find related to this error but unfortunately nothing has worked so far. If anyone has experience with how to fix this, I would greatly appreciate it. Thanks for reading

Brain Fart of the Day

We all have those brain fart moments and as I get older they seem more frequent. I thought it would be fun to share those brain farts to lessen that "I can't believe I did that" feeling. Don't leave me hangin' here... share yours.

I'll start. The other day I was working on a mower. When I went to replace the screws I had removed, I couldn't find my screwdriver. I just had it.... I retraced all of my steps looking for it. It was just gone. I finally gave up and went to the shed to get another screwdriver. After I finished replacing the screws I put the screwdriver in my back pocket. It was at that moment that I found the missing screwdriver.. it was also in my back pocket.

A bonus brain fart while I'm talking about mowers. I mow commercially and haul my mowers in a traditional mowing trailer with a drop down ramp in the rear. A number of years ago I was mowing the deep well pump stations for the city. They are all located out in the country. I finished my last station and headed back into town driving over three miles at 55mph when I realized I had not put the ramp up. It's a wonder I didn't catch the countryside on fire with all of the sparks I had to be leaving behind me dragging that ramp.

Help Head unit

Hello
can anyone help me update my 10.25 inch android screen?
I'm still stuck on Android 7 and would like to upgrade to 10, 11 or higher.
Below information of the head unit.
Type:JLY_BENZ_C
SERIAL:2234...
APP: V2 0.3.041h
System: V3.32.290410
MCU: BENZ_V4.1C_0413_AU
CAN:BENZ-V1.0-190220
I would be happy to provide you with further information.
Thank you in advance for your help.

  • Question Question
Vortex T10M Pro Not Recognizing Installed SD Card

Cool tablet, but I really want to put a bunch of books on an SD card and use it to read them. However, I have tried several different SD cards, formatted according to the instructions, but this tablet does not recognize any of them. Further, the instructions and illustrations in the owner's manual for accessing SD card content are completely different from what I am seeing on my tablet. How do I access the SD card installed in my tablet? The manual references a "Settings" option, but none of the settings options I see on this tablet contain any information about the installed SD card. Thanks in advance.

Best way to protect phone camera lens?

I got the Galaxy S20 Ultra specifically for its beastly camera but over a couple years it got dings and scratches that eventually made it unusable.

I recently got the Pixel 8 Pro and although I prefer the Galaxy cameras (I'm a sucker for zoom), I have lots of features to still explore. I want the lenses on this thing to last longer than my last devices!

I can't imagine that putting a protective anything over the camera would be a good idea since it would inherently obstruct the view. Surely there must be SOME solution aside from being less clumsy?

Any products or tips you can suggest for protecting phone camera lenses without hindering photo and video quality?

And some photos I took kayaking today! Loving the fall colors starting to come in.

PXL_20231020_185655381.jpg

PXL_20231020_192324847.jpg


PXL_20231020_191252642.jpg

PXL_20231020_191745376.jpg

What is the correct thread-safe way to access shared resource?

We are developing on Samsung Tab Active 4 Pro using Android Studio, kotlin and java. We are getting constant at random times app deadlocks. I am not new to developing with threads and synchronization methods however I am very new to Android development. I assume I am doing something wrong and will share what I am doing. But to set up the situation, we are using OSMDroid for the map viewing and are using layers of the map for draw icons that represent aircraft flying over the map. The main android app is done in kotlin and the UDP over ethernet is written in java files. Aircraft telemetry is received at about 1 hz over ethernet inside protobuf packets. The protobuf is received and parsed in a Listener java class using a thread and implemented in the run() method. In the udp handler where we receive and parse protobuf we call a kotlin object "class" (unfortunate use of terms with kotlin) that has a method UpdateEntity(). Here is a snippet of this code that handles a proto message type called Entity. EntityClass is the java wrapper created. This part is working fine, no issues here, just showing for context.

Code:
             if (msg.getMessageTypeEnum() == MessageWrapperClass.MessageWrapper.MessageTypeEnum.MESSAGE_TYPE_ENTITY) {
                    EntityClass.Entity entity = msg.getMessageEntity();
                    Log.d(TAG, "Listener:run (thread): Entity received\"" + entity.toString());

                    // 0 deg points north, vertically in map
                    double heading = Math.atan2(
                            entity.getKinematics().getEastSpeed(),
                            entity.getKinematics().getNorthSpeed()) * 180.0 / Math.PI;
                    // Put to [0,360] range
                    if (heading < 0) {
                        heading += 360.0;
                    }

                    Position position = new Position(
                            heading,
                            entity.getKinematics().getPosition().getLatitudeDeg(),
                            entity.getKinematics().getPosition().getLongitudeDeg(),
                            entity.getKinematics().getPosition().getAltitudeHaeMeters(),
                            0.0);

                    HostileEntity unit = new HostileEntity(
                            Utils.TrimUUID(entity.getEntityID().getValue().toString()),
                            //todo: we need callsign here
                            "red",  //entity.getEntityID().getValue().toString(),
                            position, false);

                    Datasource.INSTANCE.UpdateEntity(unit);   // <---------- This accesses the shared list

                }

Datasource.INSTANCE.UpdateEntity(unit); call accesses the share list. Here is that method in total. Note Datasource is that singleton-like object construct that has all public "static" methods. (I'm a C++ guy mostly :) New to kotlin)

Java:
/**
 * [Datasource] holds the data that is utilized by the UI
 */
object Datasource {

    var currentStatus = ""
    var currentMode = Modes.Nav
    var Settings:SettingsClass = SettingsClass()

    //This is the list of automations
    var AutomationList = mutableListOf<AutomationClass>(
        WTP(),
        EW()
    )

    var TabPages = mutableListOf<String>()
    var TabPageContents = mutableListOf<TabPage>()
    var KillPairs = mutableListOf<KillPair>()
    var SelectedTab:Int = 0
    var newTab:String = ""
    var locklineschanged = false

    val entityUnitListMutex  = Mutex(false)
    val killPairsMutex = Mutex(false)

    /*
    This is the list of units. Any unit added to this list will get added to the map.
     */
    val entityUnitList =  mutableStateListOf<EntityUnit>()

    fun UpdateEntity(entity:EntityUnit)
    {
        if (!entity.isPositionValid()) {
            Log.e(ContentValues.TAG, "Datasource::UpdateEntity " + "Invalid entity passed:")
            return
        }
        entity.lifeTime_ms = System.currentTimeMillis() // update its life time

        try {
            // NOTE - FindEntity() call must remain OUTSIDE of runblocking and mutex because
            // FindEntity also has mutex and we do not want to nest mutex calls. Deadlock may occur
            val existingEntity = FindEntity(entity.id)

            runBlocking {
                entityUnitListMutex.withLock {
                    if (existingEntity != null) {
                        entity.status = existingEntity.status
                        entity.missionCount = existingEntity.missionCount
                        val index = entityUnitList.indexOf(existingEntity)

                        entityUnitList[index] = entity

                    } else {
                        entityUnitList.add(entity)
                    }
                }// end mutex
            }
        }
        catch(e:Exception)
        {
            Log.e(ContentValues.TAG, "Datasource::UpdateEntity " + e.toString())
        }
    }
/*
Find the entity in the list of active entities
 */
fun FindEntity(entityName: String): EntityUnit? {
try {
var returnval: EntityUnit? = null
        runBlocking {
            entityUnitListMutex.withLock {
                for (i in entityUnitList.indices) {
                     if (entityUnitList[i].id == entityName) {
                       returnval = entityUnitList[i]
                       break
                    }
                }
            }// end mutex
        }

        return returnval
} catch (e: Exception) {
Log.e(ContentValues.TAG, "Datasource::FindEntity " + e.toString())

return null
    }
}

My understanding of kotlin and android is that you need to use a coroutine if you want to use a mutex. I used a mutex to protect the shared resource, the entityUnitList of type mutableStateListOf<EntityUnit>

The Listener is started up on the main, UI thread however it uses its own thread to receive udp packets. The call to Datasource::UpdateEntity() is done in that thread, not the UI thread. Datasource is used by the UI thread as well and it needs access to the entityUnitLst to read from. The UI thread does not write to any of the elements in the list nor does it add or subtract elements from that list.

So the problem is the app will lock (not crash and disappear) and be non-responsive or frozen. This happens at various times but typically within a minute or two. My best guess is a thead race condition.
There was someone else developing the UI portions of this app and they said the UI only updates when a data element of it changes. So in UpdateEntity() these two lines do cause a UI refresh.

Code:
entityUnitList[index] = entity
...
entityUnitList.add(entity)

Here is another place accessing that list and is in the UI thread

Code:
fun PutStuffOnMap(
    uiState: FOXUiState, mapView: MapView, onEntityClicked: (entityClicked: String) -> Unit
) {
    try {
        val items = ArrayList<OverlayItem>()

        runBlocking {
            Datasource.entityUnitListMutex.withLock {
                for (i in entityUnitList.indices) {
                    val entity = entityUnitList[i]
                    PlotEntity(mapView, entity)?.let { items.add(it) }
                }
            }// end mutex
        }
. . .

There is more to that function but that function is called from here in a global method tha tis used in the map drawing code.
Java:
@Composable
fun MapRow(
    uiState: FOXUiState,
    onEntityClicked: (entityClicked: String) -> Unit,
    modifier: Modifier = Modifier){
    Row(modifier = modifier) {
        AndroidView(
            factory = { context ->

                MapView(context).apply {
                    SetUpMap( uiState, this, onEntityClicked)
                }
            },
            update = {
                    mapView ->
                PutStuffOnMap( uiState, mapView, onEntityClicked)
            }
        )
    }
}

I am thinking we have a mutex locking unlocking issue where it stays locked and the UI blocks with that runBlocking{ } block waiting for the unlock. The Listener gets in and gets out when updating the entity pretty quick. The only link to the UI thread is Datasource::UpdateEntity(). When we comment out UpdateEntity() we never deaklock or freeze the app. We can even pre-load entityUnitList with entity class elements and interact with them again with no app freeze. Its only when we enable getting movement updates over ethernet (using USB/Ethernet adapter plugged into the tablet) when we freeze the app eventually.

So I think using runBlocking is wrong so what is the correct way to share that entityUnitList over multiple threads safely? We do not have to use a mutex and we could consider other list types that are better with thread synchronization.

-Steve
EDIT wow this post is long, I apologize! Just wanted to give enough details.

"Device Explorer" missing on Android Studio "Giraffe" (M1 Mac)

Android Studio Giraffe | 2022.3.1 Patch 2
MacBook Pro 16" 2021 (Apple Silicon)
Mac OS X Ventura 13.4.1 (c) (22F770820d)

Hello,

Sorry if this is a "stupid" question but I recently installed (just the other day actually) Android Studio on my PC and was able to browse my AVDs filesystem using "Device Explorer" in Android Studio.

However when trying to do the same on my Mac the "folder"-icon is greyed out in "Device Manager" and I can't find "Device Explorer" in the menubar under "Tools".

Attaching printscreen.

Screenshot 2023-10-20 at 20.47.36.png


Am I missing something?

Best Regards - TheSwede86

Filter

Back
Top Bottom